Struktur project aplikasi mini
Seperti bahasa markup, bahasa penataan gaya, dan komponen; dengan struktur project aplikasi mini, detail seperti ekstensi file atau nama default juga akan bervariasi. Namun, ide keseluruhannya sama untuk semua penyedia aplikasi super. Struktur proyek selalu terdiri dari:
- File root
app.js
yang menginisialisasi aplikasi mini. - File konfigurasi
app.json
yang kira-kira sesuai dengan manifes aplikasi web. - File lembar gaya umum opsional
app.css
dengan gaya default bersama. - File
project.config.json
yang berisi informasi build.
Semua halaman disimpan di masing-masing subfolder dalam
folder pages
. Setiap subfolder halaman berisi file CSS, file JS, file HTML, dan file JSON konfigurasi
opsional. Semua file harus diberi nama seperti folder yang menampungnya, terlepas dari ekstensi
file. Dengan begitu, aplikasi mini hanya memerlukan pointer ke direktori dalam file app.json
(file seperti manifes), dan dapat menemukan semua subresource secara dinamis. Dari perspektif developer
web, aplikasi mini merupakan aplikasi multi-halaman.
├── 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
Siklus proses aplikasi mini
Aplikasi mini harus terdaftar di aplikasi super dengan memanggil metode App()
yang ditetapkan secara global.
Mengacu pada struktur project yang diuraikan sebelumnya, hal ini terjadi di
app.js
. Siklus proses aplikasi mini pada dasarnya terdiri dari empat peristiwa: launch
, show
, hide
, dan
error
. Pengendali untuk peristiwa ini dapat diteruskan ke metode App()
dalam bentuk
objek konfigurasi, yang juga dapat berisi properti globalData
yang menyimpan data yang harus
tersedia secara global di semua halaman.
/* 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",
});
Seperti biasa, setiap detail bervariasi, tetapi konsepnya sama untuk WeChat, Alipay, Baidu, ByteDance, dan juga Quick App.
Siklus proses halaman
Serupa dengan siklus proses aplikasi, siklus proses halaman juga memiliki peristiwa siklus proses yang dapat
diproses dan direspons oleh developer. Peristiwa inti tersebut adalah load
, show
, ready
, hide
, dan unload
. Beberapa
platform menawarkan peristiwa tambahan seperti pulldownrefresh
. Penyiapan pengendali peristiwa terjadi di metode Page()
yang ditentukan untuk setiap halaman. Untuk halaman index
atau other
dari
struktur project sebelumnya, hal ini akan terjadi di index.js
atau
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",
},
});
Proses build
Proses build aplikasi mini diabstraksi dari developer. Pada prinsipnya, LLM menggunakan alat industri seperti compiler Babel untuk transpilasi dan minifikasi serta transformer CSS postcss. Pengalaman build sebanding dengan
Next.js atau
create-react-app
. Dalam hal ini, developer tidak akan pernah menyentuh parameter build jika
secara eksplisit memilih untuk tidak melakukannya. File yang diproses yang dihasilkan
akhirnya ditandatangani, dienkripsi, dan dikemas dalam satu atau beberapa (sub)paket yang kemudian diupload
ke server penyedia aplikasi super. Sub-paket dimaksudkan untuk pemuatan lambat, sehingga aplikasi mini
tidak perlu didownload sekaligus. Detail paket dimaksudkan untuk bersifat pribadi dan
tidak didokumentasikan, tetapi beberapa format paket seperti format wxapkg
WeChat telah
direkayasa balik.
Ucapan terima kasih
Artikel ini ditinjau oleh Joe Medley, Kayce Basques, Milica Mihajlija, Alan Kent, dan Keith Gu.