智能小程序框架概述

文件结构

小程序分为 app 和 page 两层。app用来描述整个应用,page 用来描述各个页面,此外还有关于整个 project 的配置描述(可选)。 app 由三个文件组成,必须放在小程序源码目录内。

小程序源码目录默认等于项目根目录,可在项目配置文件project.tuya.json中修改字段 miniprogramRoot

完整项目示例

├── project.tuya.json
├── app.js
├── app.json
├── app.tyss
├── assets
│   └── images
│       └── tab
│           └─ component.png
├── i18n
│   └── strings.json
├── components
│   └── foo
│       ├── index.js
│       ├── index.json
│       ├── index.tyml
│       └── index.tyss
├── pages
│   └── page
│       ├── index.js
│       ├── index.json
│       ├── index.tyml
│       └── index.tyss
├── theme.json
├── package.json
└── node_modules

app 主体

app 由三个文件组成,必须放在项目的根目录。

文件必填作用
app.js应用逻辑
app.json公共设置,例如:所有页面路径等
app.tyss公共样式
theme.json主题配置文件

pages 页面

文件类型必填作用
js页面逻辑
json页面配置
tyml页面结构
tyss页面样式表

注意: 为了方便开发者,智能小程序规定这四个文件必须具有相同的路径与文件名。 project 特指 project.tuya.json 文件,必须放在项目的根目录,其中的具体配置请参见 小程序项目配置。 开发者写的所有代码最终将会打包成一份 JavaScript 脚本,在小程序启动的时候运行,在小程序结束运行时销毁。

components 自定义组件

文件必填作用
js组件逻辑
json组件配置
tyss组件样式表
tyml组件结构

注意: 为了方便开发者,智能小程序规定这四个文件必须具有相同的路径与文件名。

i18n

文件必填作用
strings.json多语言配置

逻辑结构

小程序的核心是一个响应式的数据绑定系统,分为视图层和逻辑层。这两层始终保持同步,只要在逻辑层修改数据,视图层就会相应的更新。

示例代码:

<!-- 视图层 -->
<view> Hello {{name}}! </view>
<button bind:tap="changeName">Click me!</button>
// 逻辑层脚本
// 注册一个页面
Page({
  data: { name: 'world' },
  changeName(e) {
    // 改变数据
    this.setData({ name: 'Smart MiniApp' });
  },
});

上面代码中,框架自动将逻辑层数据中的 name 与视图层的 {{name}} 进行了绑定,所以在页面一打开的时候会显示Hello world!

用户点击按钮的时候,视图层会发送 changeName 的事件给逻辑层,逻辑层找到对应的事件处理函数。逻辑层执行了 setData 的操作,将 name 从 world 变为 Smart MiniApp ,因为该数据和视图层已经绑定了,从而视图层会自动改变为 Hello Smart MiniApp!

注意: 由于框架并非运行在浏览器中,所以 JavaScript 在 web 中的一些能力都无法使用,如 document、window 等对象。

模块化

小程序均支持 CommonJS 和 ESModule 模块化语法规范,推荐使用 ESModule。需要注意的是项目内的脚本文件应遵循统一语法规范,否则可能出现程序运行异常的情况。

ESModule 模块化语法

import util from './util'; // 载入相对路径
import absolute from '/absolute'; // 载入项目根路径文件
import lodash from 'lodash'; // 载入 npm 三方包

CommonJS 模块化语法

const util = require('./util'); // 载入相对路径
const absolute = require('/absolute'); // 载入项目根路径文件
const lodash = require('lodash'); // 载入 npm 三方包

更多详细信息请参考 模块化

保留关键字

小程序中将浏览器部分内置对象名(如:windowdocument)作为保留字使用。请勿使用保留字作为变量名或使用保留字到逻辑中,否则小程序应用会出现无法正常运行的情况。

NPM 模块

支持引入第三方模块,需先在项目目录下执行如下命令安装该模块:

$ npm install query-string --save

引入后即可在逻辑层中直接使用:

import queryString from 'query-string'; // 载入第三方 npm 模块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IoT砖家涂拉拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值