mpvue 2.0
mpvue 2.0 在 微信小程序 的基础上增加了对 百度智能小程序、头条小程序 和 支付宝小程序 的支持,升级了相关依赖设施。为保证老用户的使用体验、同时对新项目提供更有针对性的支持,我们进行了 major 版本升级。此文档将作为新功能使用向导或升级指南。
影响范围
mpvue 升级到 2.0 后,老项目并不能直接更新到此版本、手动升级方式并附后文。对于不考虑升级的开发者,可以继续使用原来的版本。使用 mpvue-quickstart 项目模板新创建的项目,将默认升级到 2.0。
1.x 稳定版说明
对于不升级 2.0 的项目,可以继续使用1.x 的大版本,目前1.x 会持续在 1.4.x 上继续维护 同时请注意在构建脚本中同步 fileExt
配置项,修改方式如下:
- 第一步:
vue-loader.config.js
中传递fileExt
配置项: /build/vue-loader.conf.js - 第二步:webpack rules 中修改 js 文件类型配置项:/build/webpack.base.conf.js
- 第三步:
config/index.js
中 增加fileExt
配置项:/config/index.js,并修改如下代码:
// var fileExt = fileExtConfig[process.env.PLATFORM] // 修改前
var fileExt = fileExtConfig[process.env.PLATFORM || 'wx'] // 修改后
- 第四步:安装 1.4.0 依赖版本
yarn add mpvue@1.4.0 mpvue-template-compiler@1.4.0 mpvue-loader@1.4.0
安装方式
新项目使用向导
第一步:使用最新的 mpvue/mpvue-quickstart 项目模板,初始化 mpvue 小程序项目
第二步:安装依赖并运行
# 初始化项目
> vue init mpvue/mpvue-quickstart myproject
> cd myproject
# 安装依赖
> yarn
# 开发时构建
> npm dev
# 打包构建
> npm build
# 指定平台的开发时构建(微信、百度、头条、支付宝)
> npm dev:wx
> npm dev:swan
> npm dev:tt
> npm dev:my
# 指定平台的打包构建
> npm build:wx
> npm build:swan
> npm build:tt
> npm build:my
老项目升级指南
第一步:按照升级清单更新依赖项版本,也可使用如下安装命令
依赖升级脚本
yarn add mpvue@2.0.2 mpvue-template-compiler@2.0.2 mpvue-loader@2.0.0 webpack-mpvue-asset-plugin@2.0.0 webpack-mpvue-vendor-plugin@2.0.0
第二步:更新构建脚本
- 初始化一个新项目
- 拷贝新项目中的
build
,config
目录到老项目中 - 拷贝新项目中的
package.json
中script
指令到老项目中
第三步: 指定平台执行构建,不指定将默认为构建微信小程序
注意:
如果构建脚本已经过定制,升级时请勿遗漏
依赖清单
依赖项 | 更新说明 |
---|---|
mpvue-quickstart
| 项目模板默认最新,依赖项和构建脚本已更新 |
mpvue
| 更新到 2.0.0 版本 |
mpvue-template-compiler
| 更新到 2.0.0 版本 |
mpvue-loader
| 更新到 2.0.0 版本 |
webpack-mpvue-asset-plugin
| 更新到 2.0.0 版本 |
webpack-mpvue-vendor-plugin
| 更新到 2.0.0 版本 |
mpvue-webpack-target
| 未做更新,老版本 1.0.3 |
mpvue 2.0 功能说明
本次升级,旨在提供对其他小程序平台的能力支持,主要涉及的功能点如下:
- 提供一套源代码,构建到不同平台目标代码的能力
- 提供 api 统一调用的能力,附带平台判断能力,可针对平台单独书写逻辑代码,详见示例
- 重构 mpvue 代码转换部分的功能
统一api调用方式:
mpvue 2.0 中, api 调用建议统一改为 mpvue 前缀,如需对特定平台做单独处理,可通过 mpvuePlatform 特征变量进行判断。若不考虑多平台适配,可继续使用原有方式调用 api。
let logs
if (mpvuePlatform === 'my') {
logs = mpvue.getStorageSync({key: 'logs'}).data
// 等效 logs = my.getStorageSync({key: 'logs'}).data
} else {
logs = mpvue.getStorageSync('logs')
}
说明:
mpvue 在统一api调用方式上只做简单的前缀统一,并不抹平api差异,此部分交由开发同学自行决定。