WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

序文

休日は終わっていますが、それは別の形で(お腹に触れることで)私たちに現れます。ミニプログラムでデータをグラフで表示することが、私に割り当てられた休日前の調査タスクです。インターネットで大手の記事をチェックし、Ucharts、F2、Wx-charts、Echarts について学びました。試したのは F2 と Echarts だけです。Echarts が最近更新され、Echarts に詳しくなったため、Echarts を選択しました。F2 も試しましたが、うまくいきましたが、あまり詳しくなかったので諦めました。

さあ、本題に入りましょう

まず、Echarts に関する他の人の記事を見て、公式サイトへのリンクが貼られていました。その後、公式サイトに行って読んでみました。比較的簡単でした。ここにもリンクを貼っておきます。一般的な手順

1. 公式サイトのサンプルをダウンロードします。

2. 公式サイトのサンプルにあるec-canvasフォルダをプロジェクトディレクトリにコピーします。

3. コンポーネントを使用するのと同じように、特定のページに ec-canvas を導入します。

4. 特定のページの js で初期化します。

公式ウェブサイトの例をダウンロードしたら、echarts.js、wx-canvas.js、ec-canvas が含まれる ec-canvas フォルダーを見つけます。次に、このフォルダを自分のプロジェクトのディレクトリにコピーします。最初は utils の下に置き、サブパッケージ化してから別の場所に置きます。ここでは utils の下に置きます。その後、プロジェクトは 700 KiB 以上大きくなりました。

ページ

xxx.json

{
 "コンポーネントの使用": {
 "ec-canvas": "xxx/xxx/xxx/ec-canvas/ec-canvas"
 }
}

xxx.wxml

<view class="container-echarts margin-top-10">
 <ec-canvas class="mycharts" id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</ビュー>

xxx.js は、次の initChart メソッドを使用する前に、まず echarts をインポートする必要があるため、配置された ec-canvas のパスに従って echarts をインポートします。

import * as echarts from 'xxx/xxx/xxx/ec-canvas/echarts'; // 配置されたec-canvasのパスに従ってechartsをインポートします
let chart = null // 変数を使用して echarts の初期化を保存します let options = { // グラフィックス設定、echarts を使用したことがある人なら誰でも意味がわかります~以下は公式サイトの折れ線グラフ xAxis の基本的な例です: {
  タイプ: 'カテゴリ',
  データ: ['月', '火', '水', '木', '金', '土', '日']
 },
 y軸: {
  タイプ: '値'
 },
 シリーズ: [{
  データ: [150, 230, 224, 218, 135, 147, 260],
  タイプ: 'line'
 }]
} 
function initChart(canvas, width, height, dpr) { // ここで canvas, width, height, dpr は無視できます const chart = echarts.init(canvas, null, {
 幅: 幅、
 高さ: 高さ、
 devicePixelRatio: dpr // ピクセル});
 キャンバスにチャートを設定します。
 chart.setOption(オプション);
 リターンチャート;
}

ページ({
 データ: {
 ec: {
  onInit: initChart // ここで括弧を追加しないでください。
 }
 }
});

保存して実行します。この時点で、echarts は理論的には結果を表示できますが、自分でデバッグする必要があります。

echartsの初期化を省くためにチャート変数を使います。公式サイトもメソッド内にオプションを書いているのでそれを取り出しました。では、チャートは何の役に立つのでしょうか?ほとんどのデータは非同期的に取得されるため、echarts は動的にレンダリングする必要があります。データが取得されると、このチャートが使用されます。

チャート.setOption({
 x軸:
 データ: newData.map(item => {
  アイテム[0]を返します。
 })
 },
 シリーズ: {
 データ: newData.map(item => {
  アイテム[1]を返す。
 })
 }
})

ここでのデータ形式に関しては、各人のオプションでどのような画像をレンダリングしたいかを参考にしてください。公式サイトで提供されているサンプルポータルを使用しています。echartsのデータ更新はsetOptionを使用して直接更新できます。

開発者ツールでのズームとスクロールは機能しませんでしたが、試用版にアップロードした後、携帯電話では機能しました。 WeChatのキャンバスにはtype="2d"があります。ec-canvasでtype="2d"を使用する場合は、ec-canvas.jsを変更する必要があります。

データ: {
 isUseNewCanvas: true // ここで true に変更します。デフォルトは false です。
}

理由: isUseNewCanvas はデフォルトでは false であり、これはキャンバスの古いバージョンです。

<!-- 新機能: H5 に合わせたインターフェース -->
<canvas wx:if="{{isUseNewCanvas}}" type="2d" class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>
<!-- 古い -->
<canvas wx:else class="ec-canvas" canvas-id="{{ canvasId }}" bindinit="init" bindtouchstart="{{ ec.disableTouch ? '' : 'touchStart' }}" bindtouchmove="{{ ec.disableTouch ? '' : 'touchMove' }}" bindtouchend="{{ ec.disableTouch ? '' : 'touchEnd' }}"></canvas>

echarts.js はサイズが大きく、アップロードプロジェクトには 2 MiB の制限があります。

ダウンロードしたec-canvas内のecharts.jsは数百KiBあり、2MiBに比べるとかなり大きいです。プロジェクトをアップロードしたところ、制限を超えたというメッセージが表示されました。すぐに効果がありそうな方法は、echarts.jsのサイズを小さくすることと、別のパッケージに分割することの2つしか思いつきませんでした。

echarts.js のサイズが大きい問題

echartsの公式サイト(ポータル---オンラインカスタマイズ)には、オンデマンド構築方法があります。以下のオンラインカスタマイズに入り、必要なグラフを選択します。私は折れ線グラフと直交座標系を選択しました。コンポーネントでは、ブラシ選択、ツールバー、カスタムグラフィック以外のすべてのコンポーネントを選択しました。他のオプションでもsvgをチェックしました。次に、ダウンロードをクリックして構築ページに入ります。構築が完了すると、echarts.min.jsファイルが自動的にダウンロードされ、サイズが約200 KiB削減されます。次に、名前を echarts.js に変更し、ec-canvas で置き換えます。

アップロードプロジェクトの 2MiB 制限の問題

echarts.js のサイズは縮小されましたが、サブパッケージ化というアップロード制限の問題は依然として存在します。

app.jsonにはサブパッケージがあります

{
 「サブパッケージ」: [
 {
  "ルート": "xxx/xxx",
  "名前": "xxx",
  「独立」:偽、
  「ページ」: [
  「ページ/xxx」、
  「ページ/xxx」、
  「ページ/xxx」
  ]
 },
 {
  "ルート": "baoziTask/",
  "名前": "包子",
  「ページ」: [
  「ページ/roubaozi/roubaozi」
  ]
 }
 ]、
}

このサブパッケージは公式サイトで非常に簡単に説明されていますが、私が使用したときにはこのように理解しました。

ルートはサブパッケージ化されるパスであり、ルート ディレクトリに配置します。そうすると、baoziTask の下にあるすべてのファイルがパッケージとして扱われます。 baoziTask パスにないすべてのファイルは、アプリのメイン パッケージにパッケージ化されます。

name は、事前ダウンロード中に使用されるサブパッケージのエイリアスです。この事前ダウンロードは、特定のページにいるときに、アクセス速度を向上させるために使用される可能性のあるサブパッケージを積極的にダウンロードすることを意味します。たとえば、特定のページに入ると、どこかをクリックして特定のサブパッケージにジャンプする可能性が高くなります。このとき、ジャンプ時にこのサブパッケージをダウンロードするのではなく、事前にダウンロードすることができます。

独立というのは下請けが独立しているかどうかということだが、使ったことがないので直感的にわからない。アプリ本体のパッケージに依存せず、独立して実行できるとのこと。これには、コードのダウンロードではなく、preloadRule の設定が必要です。詳細については、公式サイトを参照して自分で試してみる必要があります。ポータル---サブパッケージの事前ダウンロード

ページはパッケージ内のページなので、理解しやすいです。

これらのサブパッケージ内のページにジャンプしたい場合は、ジャンプ URL に正しいパスを記述するだけです。たとえば、roubaozi にジャンプする場合、URL は次のように記述されます。

url: '/baoziTask/pages/roubaozi/roubaozi'

下請けが成功したかどうかを確認するにはどうすればよいですか?

開発者ツールの右上隅に詳細ボタンがあります。クリックして詳細を表示し、下にスライドします。「ローカル コード」の行が表示されます。その後ろのサイズをクリックすると、メイン パッケージと各サブ パッケージのサイズが表示されます。メイン パッケージが 2MiB を超えていない場合は、アップロードは成功です。

群衆: KB と MB の間に i を追加するのはなぜですか?小津喬:正確に表現すると1024です

要約する

WeChatミニプログラムにおけるEchartsの使用と下請けに関するこの記事はこれで終わりです。WeChatミニプログラムEchartsと下請けに関するより関連性の高いコンテンツについては、123WORDPRESS.COMで以前の記事を検索するか、以下の関連記事を引き続き閲覧してください。皆様が今後も123WORDPRESS.COMを応援してくれることを願っています。

以下もご興味があるかもしれません:
  • WeChatアプレットでechartsを使用する方法
  • WeChatアプレットでEchartsチャートコンポーネントを使用する方法の詳細な説明
  • WeChatアプレットはechartsを使用してデータを取得し、折れ線グラフを生成します
  • ECharts を使用して WeChat アプレットでデータを非同期的にロードする方法
  • WeChatアプレットEchartsが通常のコンポーネントをカバーしてしまう問題の解決策
  • ECharts を使用してデータを非同期的に読み込み、WeChat アプレットでチャート機能を実装する
  • iOS の WeChat アプレットで Echarts チャートがスライドできない問題の解決方法
  • WeChatアプレットはEchartsチャートを横断して複数の円グラフを実現します
  • Taro WeChatアプレット開発におけるEchartsの落とし穴
  • WeChatミニプログラムの基本チュートリアル:Echartの使用

<<:  MySQL 5.7 でルートパスワードを忘れた後に変更する方法の詳細なチュートリアル

>>:  Docker で MySQL サービスをデプロイする方法と、遭遇する落とし穴

推薦する

Dockerデーモンのセキュリティ設定項目の詳細な説明

目次1. テスト環境1.1 CentOS 7をインストールする1.2 Docker CE 19.03...

nuxt.js 複数の環境変数の設定

目次1. はじめに2. シナリオ3. 環境を整える3.1 環境変数の挿入4. 最後に1. はじめに一...

WeChatアプレットはウォーターフォールフローのページングスクロール読み込みを実装します

この記事では、WeChatアプレットのウォーターフォールフローページングスクロールロードを実装するた...

Centos7.3 での mysql5.7 のインストールと設定のチュートリアル

この記事では、MySQL 5.7のインストールと設定のチュートリアルを参考までに紹介します。具体的な...

高可用性 Web クラスターを実装するための Keepalived+Nginx+Tomcat サンプル コード

高可用性 Web クラスターを実現する Keepalived+Nginx+Tomcat 1. Ngi...

左右の幅を固定し、中央の幅を適応させたHTMLレイアウトのソリューションの詳細な説明

この記事では、次のように、誰にでも共有できる左右幅固定のミドルアダプティブ HTML レイアウトソリ...

HTML の iframe と frame の違いを例を使って説明します

プロジェクトで frameset 属性を使用したことがあるかどうかはわかりません。昨年、オンライン ...

MySQLデータベースのトランザクションとロックの詳細な分析

目次1. 基本概念酸3.自動コミット4. トランザクション分離レベル5. 同時実行の一貫性の問題6....

MySQL 半同期レプリケーションの原理構成と導入の詳細な説明

環境の紹介: Ubuntu Server 16.04.2+MySQL 5.7.17 コミュニティ サ...

Linux での感嘆符コマンド (!) の使用の概要

序文最近、弊社では mbp の設定をしており、ssh を使うことが多くなりました。複雑なコマンドを書...

動的なセカンダリメニューを実現するためのCSS

シンプルなセカンダリメニューを動的に実装するマウスを第 1 レベルのラベル上に置くと、マウスが小さな...

Linux のような環境で jdk1.8 をインストールし、環境変数を設定する方法の詳細な説明

設定は非常にシンプルですが、毎回確認しないといけないので、記録だけ残しておきます。 1. インストー...

Linux コマンドラインでメールを送信する 5 つの方法 (推奨)

シェル スクリプトで電子メールを作成する必要がある場合は、コマンド ラインから電子メールを送信する知...

CSS で画像アダプティブ コンテナを実装するためのサンプル コード

多くの場合、画像をコンテナのサイズに合わせて調整する必要があります。 1. imgタグ方式幅と高さを...

JavaScript を使用せずに HTML の a タグを無効にするには、純粋な CSS を使用します。

実際、この問題は、HTML の select タグを初めて学んだときにすでに発生していました。今日に...