File structure
A miniapp is divided into two layers: app and page. The app layer describes the entire application, and the page layer describes individual pages. All code written by a developer is packaged into a single JavaScript script. This script runs when the miniapp starts and is destroyed when the miniapp closes.

The
applayer consists of three files. These files must be in the project's root directory.FileRequired filesFunctionapp.acssNoGlobal style sheet for the miniapp.app.jsYesLogic for the miniapp.app.jsonYesGlobal configuration for the miniapp.The
pagelayer consists of four types of files:File typeRequired FilesFunctionacssNoStyle sheet for the page.axmlYesStructure of the page.jsYesLogic for the page.jsonNoConfiguration for the page.
For the developer's convenience, these four files must be in the same directory and share the same base name.
Logical structure
The core of a miniapp is a reactive data binding system. It consists of a view layer and a logic layer. These two layers are always in sync. When you change data in the logic layer, the view layer updates automatically.
Consider the following simple example.
<!-- View layer -->
<view> Hello {{name}}! </view>
<button onTap="changeName"> Click me! </button>// Logic layer
var initialData = {
name: 'taobao',
};
// Register a page
Page({
data: initialData,
changeName(e) {
// Change the data
this.setData({
name: 'mPaaS',
});
},
});In the code, the frame automatically binds the name property in the logic layer's data to the name property in the view layer. When the page opens, it displays Hello taobao!.
When a user clicks the button, the view layer sends a changeName event to the logic layer. The logic layer finds the corresponding event handler function. The logic layer runs the setData operation. This changes the value of name from taobao to mPaaS. Because this data is bound to the view layer, the view automatically updates to display Hello mPaaS!.
The frame does not run in a browser. Therefore, some web-based JavaScript features, such as the document and window objects, are not available.
JavaScript in the logic layer uses the ES2015 module syntax to organize code:
import util from './util'; // Import from a relative path
import absolute from '/absolute'; // Import a file from the project root directoryThird-party NPM modules
Miniapps support third-party modules. To install a module, run the following command in the miniapp's root directory:
$ npm install lodash --saveAfter installation, you can use the module directly in the logic layer:
import lodash from 'lodash'; // Import a third-party NPM moduleCode in third-party modules inside the node_modules directory is not processed by the converter. To ensure compatibility across different terminals, you must convert the code to the ES5 format before you import it. The module must use the ES2015 import/export syntax. Web-related browser features are also unavailable in these modules.