uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架。开发者编写一套代码,即可编译到 iOS、Android、H5、小程序等多个平台,从而解决多平台开发需要多套代码、效率低、成本高的问题。下面将详细介绍如何利用 uni-app 进行微信小程序的开发。
1. 注册
根据微信官方指引填写信息。在开发选型时,务必准确分类主体账号信息,明确小程序的定位。目前小程序上线审核日趋严格,并非所有功能都能过审。例如,涉及人脸授权的功能很难通过审核,若有此类需求,建议考虑开发 APP 而非小程序。
2. 登录设置
登录微信小程序后台,进入设置模块配置小程序的主题信息。其中最关键的是获取唯一的 AppID(小程序ID),它相当于微信小程序的敲门砖。若项目需要多人协作,可以在此添加多个开发者账号。
3. 选框架与安装开发工具
开发采用 uni-app 框架,同时必须安装微信小程序的官方开发工具——微信开发者工具,建议安装最新版本以获取新特性。此外,uni-app 开发需捆绑安装 HBuilderX 工具,虽然该工具被一些开发者吐槽,但这是使用 uni-app 的必要条件。
工具安装清单:
- 微信开发者工具
- HBuilderX
完成上述准备后,即可开始项目开发。
4. 项目开发
a. 新建 uni-app 项目
在 HBuilderX 中新建一个 uni-app 项目,选择适合的模板。
b. 项目结构
项目创建后,会生成标准目录结构。需注意:static 目录下的 js 文件不会被编译,若内含 ES6 代码可能直接在移动设备上报错;css、less/scss 等资源也不建议放在 static 目录下,公共资源可置于 common 目录。
c. 项目运行
首次运行项目到微信小程序时,可能报错。此时需手动打开微信开发者工具并扫码登录(确保账号已加入开发者)。随后重新运行项目,或配置微信开发者工具的默认路径以避免重复操作。若仍报错,请逐步检查,通常问题解决后即可成功编译,看到默认模板页面。
d. 正式项目开发
建议从空模板开始新项目,以保持结构清晰。
(1) 配置 AppID:在项目 manifest.json 中正确配置小程序的 AppID。
(2) 运行项目:可使用 HBuilderX 的内置终端方便开发。
(3) 搭建目录框架:在项目根目录下创建常用目录,如 components、models、store、utils 等。
(4) 路由管理:uni-app 的路由由框架统一管理,开发者需在 pages.json 的 pages 数组中配置每个页面的路径和样式,不支持 Vue Router。
(5) Vuex 状态管理:uni-app 内置了 Vuex,但默认不支持持久化存储,可结合 vuex-persistedstate 等第三方库。首先通过 npm 初始化项目并安装依赖,然后在 store.js 中配置状态,在模块中定义 mutations 和 actions,最后在 main.js 中引用 store。
(6) 封装 API 模块:为调用服务端接口,需封装请求模块。在 config 中配置从微信官方获取的 appId 和 appKey,然后封装统一的请求函数。接口请求通常需携带 AuthTokens 令牌,可在 App.vue 的生命周期中调用登录接口获取 token,并结合 Vuex 管理用户状态。
5. 静默授权
微信官方禁止新用户初次打开小程序即弹出授权框,因此必须采用静默授权。即用户可无障碍访问小程序,仅在需要深度交互(如分享、购买)时再触发授权。
实现时,可抽离公共组件如 userInfoBtn.vue,使用微信原生的 button 控件并设置 open-type 属性。注意样式重置,可通过 /deep/ 修改或新起无 scoped 的 style 标签。在需要授权的页面(如个人中心)引用该组件。需注意,App.vue 中已获取 token 用于基础接口,但用户信息授权需额外带上 encryptedData 和 iv 参数,这两者应在服务端设为非必传,待用户确认授权后再调用登录接口获取真实信息。务必避免在 tabbar 切换或页面进入时强制授权,以免审核被拒。
6. 功能扩展
(1)上拉加载与下拉刷新:在目标页面的 pages.json 中声明可加载属性,然后在页面中实现 onReachBottom(上拉加载)和 onPullDownRefresh(下拉刷新)方法,并在服务端接口处理分页数据。
(2)联系客服:使用微信原生 button,设置 open-type="contact",用户点击后可进入客服会话,开发者可在微信小程序管理后台的“客服反馈”页面查看消息。
(3)分享功能:同样使用微信原生 button,设置 open-type="share",并在页面的生命周期函数如 onLoad 中处理分享携带的参数。
(4)轮播图与跳转第三方 URL:封装 swiper.vue 组件使用 uni-app 自带的 swiper。跳转第三方 URL 需确保域名已在微信后台配置为合法域名。开发时可暂时关闭域名校验,但上线前必须配置。跳转时,通常新开一个页面如 bannerWebview,使用 <web-view :src="url"></web-view> 承载,且最好对 URL 进行 encodeURIComponent 编码。
7. 开屏广告页
广告页应设置为每天首次打开时显示,持续 3~7 秒并可跳过。在 pages.json 中将其注册为第一项(启动页)。页面内使用定时器控制显示时长,结束后跳转至首页并清除定时器。注意发版时需确保首页配置正确,避免空白页。
8. 消息推送
消息推送模块可根据业务需求集成,但需注意频率以免引起用户反感。具体实现可参考其他专门文档。
9. 发布测试
在微信开发者工具中点击“上传”,填写版本号后提交。随后在微信小程序管理后台的版本管理中找到开发版,设置正确的主入口页(对应 pages.json 中 pages 数组的第一项),提交体验版供测试。
10. 发布正式
正式版需注意代码包大小限制在 2MB 以内。优化建议:图片使用 CDN、用 iconFont 替代纯色图标、避免引用第三方字体、使用雪碧图等。同时,区分开发与生产环境,通过 process.env.NODE_ENV 配置不同域名。在 HBuilderX 中选择“发行->小程序(微信)”打包,发行后在微信开发者工具中检查域名是否正确,确认无误后按测试流程上传并提交审核。
11. 题外话
相比其他框架如 mpvue,uni-app 打包后的代码体积更小(可压缩至 1MB 内),且审核通过率较高,后期迭代可能进入快速审核通道,提升上线效率。
至此,基于 uni-app 的微信小程序开发到上线的全流程已介绍完毕。