本文已被【微信小程序开发】专题收录|聚焦核心架构设计原理与工程实践
层级 | 运行环境 | 核心职责 |
---|---|---|
逻辑层 | JavaScript引擎 | 数据处理/生命周期管理/网络请求 |
视图层 | WebView渲染线程(双实例) | WXML解析/样式渲染/事件响应 |
原生层 | Native容器 | 提供系统级API能力桥接 |
架构优势:
{
"pages": ["pages/index/index", "pages/logs/logs"],
"window": {
"navigationBarTitleText": "DemoApp",
"backgroundColor": "#F5F5F5"
},
"tabBar": {
"list": [
{ "pagePath": "pages/index/index", "text": "首页" }
]
},
"networkTimeout": { "request": 60000 }
}
关键配置说明:
pages
:数组首位为首页,新增页面需在此注册usingComponents
:全局组件声明(如"usingComponents": { "custom-btn": "/components/button" }
)permission
:权限声明(摄像头/定位等)pages/
├── index/
│ ├── index.js // 页面逻辑
│ ├── index.json // 页面配置(覆盖全局)
│ ├── index.wxml // 模板结构
│ └── index.wxss // 局部样式
Page({
// 初始数据
data: { count: 0 },
// 生命周期回调
onLoad() { console.log('页面加载') },
// 事件处理
handleTap() {
this.setData({ count: this.data.count + 1 }) // 必须用setData!
},
// 页面跳转
goToLogs() {
wx.navigateTo({ url: '/pages/logs/logs' })
}
})
<view class="container">
<text>{{userInfo.nickName}}text>
<view wx:if="{{count > 5}}">警告:操作频繁!view>
<block wx:for="{{items}}" wx:key="id">
<view>{{index + 1}}. {{item.name}}view>
block>
view>
/* 使用rpx响应式单位 */
.container {
width: 750rpx; /* 满屏宽度 */
padding: 32rpx; /* 自动缩放 */
}
/* 引入公共样式 */
@import '/styles/common.wxss';
// components/custom-dialog.js
Component({
properties: { title: String }, // 外部传参
methods: {
onConfirm() {
this.triggerEvent('confirm', { data: 'ok' }) // 向父组件传值
}
}
})
"subpackages": [
{
"root": "packageA",
"pages": ["pages/cart", "pages/payment"]
}
]
场景 | 解决方案 |
---|---|
大图加载(>200KB) | CDN加速 + WebP格式转换 |
图标资源 | 使用字体图标(Iconfont) |
频繁更新图片 | 云存储+CDN动态刷新 |
// 页面卸载时清除定时器
Page({
onLoad() {
this.timer = setInterval(() => {...}, 1000)
},
onUnload() {
clearInterval(this.timer) // 必须清理!
}
})
工具 | 功能场景 |
---|---|
开发者工具Audits面板 | 自动化检测渲染性能/内存泄漏 |
真机性能Trace | 定位帧率卡顿点(需Android 10+) |
Charles抓包 | 分析网络请求性能 |
最佳实践总结:
数据驱动
原则,避免直接操作视图分包加载
控制主包体积(建议≤2MB)自定义组件
解耦逻辑版权声明:本文采用 CC BY-SA 4.0 协议,转载需注明作者及原文链接。技术问题欢迎评论区交流!