开发一个微信小程序,主要有两种路径:原生开发 和跨端框架开发。选择哪种,取决于你的技术背景和项目需求。
📌 先做选择:原生 vs 跨端
| 维度 | 原生开发 | 跨端框架 (uni-app / Taro) |
|---|---|---|
| 技术栈 | WXML/WXSS/JS,类似 Web | Vue (uni-app) 或 React (Taro) |
| 性能 | 最佳,API 支持最全 | 良好,但有一定转换损耗 |
| 开发效率 | 只针对微信,效率一般 | 一套代码可编译到多端,效率高 |
| 适用场景 | 性能敏感、仅做微信端 | 需同时做 H5、App 或多平台小程序 |
如果你的项目只做微信小程序 ,且对性能有极致要求,选原生开发 。
如果未来可能扩展到 H5、App 或其他平台 ,或者团队熟悉 Vue/React,选跨端框架更划算。
下面以最通用的原生开发流程为主线来讲解。
🚀 第一步:准备工作(资质与工具)
在写代码前,需要先拿到"入场券"和"工具箱"。
1. 注册小程序账号 访问微信公众平台,注册"小程序"账号。注意:
- 个人主体:无法开通微信支付、附近的小程序等能力。
- 企业主体:需营业执照,可开通支付等完整功能。
2. 完成小程序备案(强制) 自2023年9月起,所有新小程序必须完成 ICP 备案才能上架 。建议注册完账号后立即提交备案,与开发并行,因为管局审核可能需要 1-20 个工作日。
3. 获取 AppID 在后台"开发 → 开发管理 → 开发设置"中获取 AppID,这是小程序的唯一标识,开发时必须用到。
4. 下载微信开发者工具 前往官方下载页,选择稳定版安装。这是官方必备的开发环境,集成了编码、预览、调试和上传功能。
🏗️ 第二步:理解项目结构
用开发者工具新建项目后,你会看到标准的小程序文件结构。核心是全局三件套 和页面四件套。
全局文件(根目录)
app.json:全局配置,决定页面路径、窗口样式、底部 TabBar 等。app.js:全局逻辑,注册应用、管理全局数据。app.wxss:全局样式。
页面文件(每个页面一个文件夹) 每个页面由四个文件组成:
.wxml:结构,类似 HTML,但只能用微信提供的组件(view、text、button等)。.wxss:样式,类似 CSS,支持rpx响应式单位(750rpx = 屏幕宽度)。.js:逻辑,用Page()注册页面,处理数据与交互。.json:页面配置,可覆盖全局窗口样式。
关键机制:setData 与双线程 小程序采用双线程模型 :逻辑层(JS)和渲染层(WXML/WXSS)分离。你不能直接操作 DOM ,想让页面变化,必须调用 this.setData() 把数据从逻辑层发送到渲染层,驱动视图更新。这是小程序最核心的开发思维。
💻 第三步:编写核心代码
1. 配置页面路由 在 app.json 的 pages 数组中注册所有页面路径,第一项为首页:
json
{
"pages": ["pages/index/index", "pages/detail/detail"],
"window": { "navigationBarTitleText": "我的小程序" }
}
2. 写一个计数器页面 这是理解数据绑定和 setData 的最小示例:
index.wxml
html
<view class="box">
<text>计数:{{count}}</text>
<button bindtap="add">+1</button>
</view>
index.js
js
Page({
data: { count: 0 },
add() {
this.setData({ count: this.data.count + 1 })
}
})
点击按钮触发 add,setData 更新 count,视图自动刷新。
3. 理解生命周期 页面常用的生命周期钩子:
onLoad:页面加载,只执行一次,适合接收参数。onShow:页面显示,每次进入都可能触发。onReady:首次渲染完成。onHide/onUnload:页面隐藏 / 卸载。
🔌 第四步:对接后端与微信能力
1. 网络请求 用 wx.request 发起请求,但务必封装统一的 request 函数,统一处理 baseURL、Token 注入和错误提示。
js
// utils/request.js
const request = (url, method, data) => {
return new Promise((resolve, reject) => {
wx.request({
url: `https://你的域名${url}`,
method,
data,
header: { Authorization: wx.getStorageSync('token') },
success: res => resolve(res.data),
fail: reject
})
})
}
export default request
2. 配置服务器域名 后端接口的域名必须在小程序后台"开发设置 → 服务器域名"中配置 ,且必须是 HTTPS 协议,否则请求会被拦截。
3. 登录鉴权 标准流程:wx.login 拿到 code → 发给后端 → 后端调用微信接口换取 openid 和 session_key → 生成 Token 返回 → 小程序存储 Token 后续携带。
4. 常用微信能力
- 微信支付:需企业主体,在后台绑定商户号并配置 API v3 凭证。
- 获取用户信息 :
wx.getUserProfile,需在隐私协议中声明用途。 - 分享转发 :页面中定义
onShareAppMessage即可。
🐞 第五步:调试与优化
- 真机预览:开发者工具点"预览",手机扫码查看真实效果。
- 真机调试 :远程连接查看真机控制台报错,涉及支付、相机、定位时必须真机测试。
- 性能优化 :
- 主包控制在 2MB 以内 ,非核心页面用分包加载。
- 避免频繁调用
setData,只传变化的数据。 - 长列表用虚拟滚动,图片压缩后用 CDN 加载。
📦 第六步:提交审核与发布
- 上传代码:在开发者工具点击"上传",填写版本号。
- 提交审核 :在微信公众平台后台提交审核。审核周期通常 2-12 小时,特殊行业可能需 1-3 天。
- 全量发布:审核通过后,手动点击"发布",小程序正式上线。
- 注意 :每个小程序每周最多可提审 3 次,请合理规划。
⚠️ 常见坑与建议
- 隐私协议 :涉及手机号、定位等敏感信息,必须在后台配置隐私协议,否则审核直接驳回。
- 服务类目:必须与实际功能匹配,选错会被拒审。
- 域名配置 :服务器域名每月只能修改 50 次,提前规划好。
- AI 辅助:可以用 AI 工具辅助写 WXML/WXSS 样式,节省布局时间,但核心逻辑仍需自己把关。
- 善用组件库 :用 Vant Weapp 或 TDesign 等成熟组件库,避免重复造轮子。
开发小程序最核心的是理解 "数据驱动视图" 的思维(setData)和生命周期。如果你告诉我具体想做什么类型的小程序(电商、工具、预约等),我可以给你更具体的技术选型和代码结构建议。