2021-10-11
小程序 配置
官方文档
小程序根目录下的 app.json 文件用来对微信小程序进行全局配置。文件内容为一个 JSON 对象,有以下属性:
| 属性 | 类型 | 必填 | 描述 | 最低版本 |
|---|---|---|---|---|
| entryPagePath | string | 否 | 小程序默认启动首页 | |
| pages | string[] | 是 | 页面路径列表 | |
| window | Object | 否 | 全局的默认窗口表现 | |
| tabBar | Object | 否 | 底部 tab 栏的表现 | |
| networkTimeout | Object | 否 | 网络超时时间 | |
| debug | boolean | 否 | 是否开启 debug 模式,默认关闭 | |
| functionalPages | boolean | 否 | 是否启用插件功能页,默认关闭 | 2.1.0 |
| subpackages | Object[] | 否 | 分包结构配置 | 1.7.3 |
| workers | string | 否 | Worker 代码放置的目录 | 1.9.90 |
| requiredBackgroundModes | string[] | 否 | 需要在后台使用的能力,如「音乐播放」 | |
| requiredPrivateInfos | string[] | 否 | 调用的地理位置相关隐私接口 | |
| plugins | Object | 否 | 使用到的插件 | 1.9.6 |
| preloadRule | Object | 否 | 分包预下载规则 | 2.3.0 |
| resizable | boolean | 否 | PC 小程序是否支持用户任意改变窗口大小(包括最大化窗口);iPad 小程序是否支持屏幕旋转。默认关闭 | 2.3.0 |
| usingComponents | Object | 否 | 全局自定义组件配置 | 开发者工具 1.02.1810190 |
| permission | Object | 否 | 小程序接口权限相关设置 | 微信客户端 7.0.0 |
| sitemapLocation | string | 是 | 指明 sitemap.json 的位置 | |
| style | string | 否 | 指定使用升级后的weui样式 | 2.8.0 |
| useExtendedLib | Object | 否 | 指定需要引用的扩展库 | 2.2.1 |
| entranceDeclare | Object | 否 | 微信消息用小程序打开 | 微信客户端 7.0.9 |
| darkmode | boolean | 否 | 小程序支持 DarkMode | 2.11.0 |
| themeLocation | string | 否 | 指明 theme.json 的位置,darkmode为true为必填 | 开发者工具 1.03.2004271 |
| lazyCodeLoading | string | 否 | 配置自定义组件代码按需注入 | 2.11.1 |
| singlePage | Object | 否 | 单页模式相关配置 | 2.12.0 |
| supportedMaterials | Object | 否 | 聊天素材小程序打开相关配置 | 2.14.3 |
| serviceProviderTicket | string | 否 | 定制化型服务商票据 | |
| embeddedAppIdList | string[] | 否 | 半屏小程序 appId | 2.20.1 |
| halfPage | Object | 否 | 视频号直播半屏场景设置 | 2.18.0 |
| debugOptions | Object | 否 | 调试相关配置 | 2.22.1 |
| enablePassiveEvent | Object或boolean | 否 | touch 事件监听是否为 passive | 2.24.1 |
| resolveAlias | Object | 否 | 自定义模块映射规则 | |
| renderer | string | 否 | 全局默认的渲染后端 | 2.30.4 |
| rendererOptions | Object | 否 | 渲染后端选项 | 2.31.1 |
| componentFramework | string | 否 | 组件框架,详见相关文档 | 2.30.4 |
| miniApp | Object | 否 | 多端模式场景接入身份管理服务时开启小程序授权页相关配置,详见相关文档 | |
| static | Object | 否 | 正常情况下默认所有资源文件都被打包发布到所有平台,可以通过 static 字段配置特定每个目录/文件只能发布到特定的平台(多端场景) 相关文档 | |
| convertRpxToVw | boolean | 否 | 配置是否将 rpx 单位转换为 vw 单位,开启后能修复某些 rpx 下的精度问题 | 3.3.0 |
entryPagePath
指定小程序的默认启动路径(首页),常见情景是从微信聊天列表页下拉启动、小程序列表启动等。如果不填,将默认为 pages 列表的第一项。不支持带页面路径参数。
pages
用于指定小程序由哪些页面组成,每一项都对应一个页面的 路径(含文件名) 信息。文件名不需要写文件后缀,框架会自动去寻找对应位置的 .json, .js, .wxml, .wxss 四个文件进行处理。
{
"pages": ["pages/index/index", "pages/logs/logs"]
}数据绑定
https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/data.html
数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于:
<view> {{ message }} </view>Page({
data: {
message: 'Hello MINA!'
}
})组件属性(需要在双引号之内)
<view id="item-{{id}}"> </view>Page({
data: {
id: 0
}
})条件
<view wx:if="{{condition}}"> True </view>小程序 API
小程序 组件
全局状态管理 (一个比较好开发方式)
传统的MVC架构 Model View Controller, 我们把业务逻辑放到C层(ios的ViewController,android的Activity&Fragment), 但是这里会引入另外一个问题, 所有的逻辑都在C层, 不可避免的会造成C层非常复杂, 如果项目越来越大, C层的代码会更加臃肿, 维护起来也非常麻烦
MVP 模型 :
简而言之: 就是在View 和Model 加了一层 Presenter; View <= Presenter => Model
MVP分离了view和model层, Presenter层充当了桥梁的角色, View层只负责更新界面即可
- 安装
npm i westore --save
- UserStore
const { Store } = require('westore')
const User = require('../models/user')
class UserStore extends Store {
constructor(options) {
super()
this.options = options
//这里是 View data 的根节点
this.data = {UserStore: {} }
this.init();
}
init() {
//远程获取数据
request({
url: "http://xxx/data_open_api/auth/vCode"
}).then(res=>{
console.log(res);
this.modify(res)
})
}
modify(data) {
this.data["UserStore"] = data;
//更新视图
this.update()
}
}
module.exports = new UserStore- 页面使用
const userStore = require('../../stores/user-store')
Page({
data: {
UserStore: userStore.data
},
onLoad() {
/* 绑定 view 到 store
也可以给 view 取名 userStore.bind('userPage', this)
取名之后在 store 里可通过 this.update('userPage') 更新 view
不取名可通过 this.update() 更新 view
*/
userStore.bind(this)
},
saveNickName(newNickName) {
userStore.saveNickName(newNickName)
},
onInputChange(evt) {
userStore.modifyInputNickName(evt.currentTarget.value)
},
clearInput() {
userStore.modifyInputNickName('')
}
})
安装 npm 第三方包
-
初始化项目
npm init -
执行
npm install*此处要求参与构建 npm 的 package.json 需要在 project.config.js 定义的 miniprogramRoot 之内; * -
点击开发者工具中的菜单栏: 工具 ⇒ 构建 npm
-
勾选”使用 npm 模块”选项
使用 vant UI库
-
通过 npm 安装
npm i @vant/weapp -S --production -
步骤二 修改 app.json 将 app.json 中的 “style”: “v2” 去除
-
修改 project.config.json
{
...
"setting": {
...
"packNpmManually": true,
"packNpmRelationList": [
{
"packageJsonPath": "./package.json",
"miniprogramNpmDistDir": "./"
}
]
}
}