ミニアプリ プロジェクトの構造
以前のマークアップ言語、スタイル設定言語、コンポーネントと同様に、ミニアプリ プロジェクトの構造でも、ファイル拡張子やデフォルト名などの詳細は異なります。ただし、全体的なコンセプトはすべてのスーパーアプリ プロバイダで同じです。プロジェクト構造は常に次の要素で構成されます。
- ミニアプリを初期化するルートファイル
app.js
。 - ウェブアプリ マニフェストにおおまかに対応する構成ファイル
app.json
。 - 共有デフォルト スタイルを含むオプションの共通スタイルシート ファイル
app.css
。 - ビルド情報を含む
project.config.json
ファイル。
すべてのページは、pages
フォルダ内の個別のサブフォルダに保存されます。各ページのサブフォルダには、CSS ファイル、JS ファイル、HTML ファイル、オプションの構成 JSON ファイルが含まれています。すべてのファイルには、ファイル以外の、含まれるフォルダと同じ名前を付ける必要があります
できます。このように、ミニアプリは app.json
ファイル(マニフェストのようなファイル)内のディレクトリへのポインタを必要とするだけで、すべてのサブリソースを動的に見つけることができます。ウェブの観点からは
ミニアプリはマルチページ アプリです。
├── app.js # Initialization logic
├── app.json # Common configuration
├── app.css # Common style sheet
├── project.config.json # Project configuration
└── pages # List of pages
├── index # Home page
│ ├── index.css # Page style sheet
│ ├── index.js # Page logic
│ ├── index.json # Page configuration
│ └── index.html # Page markup
└── other # Other page
├── other.css # Page style sheet
├── other.js # Page logic
├── other.json # Page configuration
└── other.html # Page markup
ミニアプリのライフサイクル
グローバルに定義された App()
メソッドを呼び出して、ミニアプリをスーパーアプリに登録する必要があります。
前述のプロジェクト構造を参照すると、この作業は
app.js
。ミニアプリのライフサイクルは基本的に 4 つのイベント(launch
、show
、hide
、
error
。これらのイベントのハンドラは、構成オブジェクトの形式で App()
メソッドに渡すことができます。このオブジェクトには、すべてのページでグローバルに利用できるデータを保持する globalData
プロパティを含めることもできます。
/* app.js */
App({
onLaunch(options) {
// Do something when the app is launched initially.
},
onShow(options) {
// Do something when the app is shown.
},
onHide() {
// Do something when the app is hidden.
},
onError(msg) {
console.log(msg);
},
globalData: "I am global data",
});
通常、個々の詳細は異なりますが、コンセプトは WeChat、 Alipay、 バイドゥ ByteDance、 さらに クイックアプリ。
ページのライフサイクル
アプリのライフサイクルと同様に、ページのライフサイクルにも、デベロッパーがリッスンして対応できるライフサイクル イベントがあります。これらのコアイベントは、load
、show
、ready
、hide
、unload
です。一部
プラットフォームでは、pulldownrefresh
などの追加のイベントが提供されます。イベント ハンドラの設定は
各ページに定義されている Page()
メソッド。前のプロジェクト構造の index
ページまたは other
ページの場合、これはそれぞれ index.js
または other.js
で行われます。
/* index.js */
Page({
data: {
text: "This is page data.",
},
onLoad: function (options) {
// Do something when the page is initially loaded.
},
onShow: function () {
// Do something when the page is shown.
},
onReady: function () {
// Do something when the page is ready.
},
onHide: function () {
// Do something when the page is hidden.
},
onUnload: function () {
// Do something when the page is closed.
},
onPullDownRefresh: function () {
// Do something when the user pulls down to refresh.
},
onReachBottom: function () {
// Do something when the user scrolls to the bottom.
},
onShareAppMessage: function () {
// Do something when the user shares the page.
},
onPageScroll: function () {
// Do something when the user scrolls the page.
},
onResize: function () {
// Do something when the user resizes the page.
},
onTabItemTap(item) {
// Do something when the user taps the page's tab.
},
customData: {
foo: "bar",
},
});
ビルドプロセス
ミニアプリのビルドプロセスは、デベロッパーから抽象化されています。内部的には、
トランスパイルと圧縮のための Babel コンパイラなどの業界向けツールが
postcss CSS トランスフォーマーを使用します。ビルド エクスペリエンスは Next.js や create-react-app
に似ています。デベロッパーは、明示的に選択しない限り、ビルド パラメータに触れることはありません。結果として処理されたファイル
最終的に署名、暗号化され、1 つまたは複数の(サブ)パッケージにパッケージ化されてアップロードされる
スーパーアプリ プロバイダのサーバーに送られます。サブパッケージは遅延読み込みを目的としているため、ミニアプリを一度にすべてダウンロードする必要はありません。パッケージの詳細は非公開であり、ドキュメント化されていません。ただし、WeChat の wxapkg
形式など、一部のパッケージ形式はリバース エンジニアリングされています。
謝辞
この記事をレビューしたユーザー: Joe Medley Kayce Basques Milica Mihajlija 氏 Alan Kent、 (Keith Gu)氏です。