跨端输出配置
Mpx以微信增强DSL为基础,支持跨端输出至多端小程序、web和客户端,包括支付宝、百度、抖音、京东、QQ等多端小程序平台,基于Vue的web平台,和基于react-native的ios、android及鸿蒙平台。
跨端输出配置
配置mpx进行跨端输出十分简单,找到项目构建的webpack配置,在@mpxjs/webpack-plugin的配置参数中设置mode和srcMode参数即可。
new MpxwebpackPlugin({
// mode为mpx编译的目标平台,可选值有(wx|ali|swan|qq|tt|jd|web|ios|android|harmony)
mode: 'ali',
// srcMode为mpx编译的源码平台,目前仅支持wx
srcMode: 'wx'
})对于使用 @mpxjs/cli 创建的项目,可以通过在 npm script 当中定义 targets 来设置编译的目标平台,多个平台标识以,分隔。
// 项目 package.json
{
"script": {
"build:cross": "mpx-cli-service build --targets=wx,ali,ios,android"
}
}支持的平台
小程序平台
- 微信小程序 (wx)
- 支付宝小程序 (ali)
- 百度小程序 (swan)
- QQ小程序 (qq)
- 抖音小程序 (tt)
- 京东小程序 (jd)
Web平台
- 基于Vue的Web应用 (web)
客户端平台
- iOS应用 (ios)
- Android应用 (android)
- 鸿蒙应用 (harmony)
支付宝文本与滚动条兼容
当 mode 为 ali 时,Mpx 会在 App 全局样式之前加载支付宝兼容样式,其中包含 text { white-space: inherit }。因此,text 默认会继承父节点的换行方式;业务在 App 样式、页面样式、组件样式或行内样式中显式声明 white-space 时,后加载的业务规则仍可覆盖该默认值。
该默认值只处理换行继承。省略号布局仍需由业务设置宽度、overflow、text-overflow 等必要样式。
使用微信语法开发并输出支付宝小程序时,scroll-view 的 show-scrollbar 支持以下布尔契约:
<scroll-view
scroll-y="{{true}}"
show-scrollbar="{{showScrollbar}}"
>
<view>列表内容</view>
</scroll-view>show-scrollbar="false"会为当前节点添加滚动条隐藏样式。- 动态值仅在结果严格等于布尔值
false时隐藏;undefined、null、0和字符串"false"均不会触发隐藏。 true只移除 Mpx 添加的隐藏样式,恢复宿主默认行为,不会强制宿主显示滚动条。- 支付宝原生语法源码(
srcMode: 'ali')不会转换该属性。
滚动条最终是否可见仍受支付宝客户端、基础库、系统和设备影响,建议在目标真机上验证横向、纵向及嵌套滚动场景。该兼容样式由完整 App 构建的全局样式入口提供;独立分包、插件产物及单独编译的页面或组件不在自动覆盖范围内。
支付宝与 Web 的 .mpx-root-view { display: initial }、page { line-height: normal } 也作为框架默认样式先于用户 App 样式加载。业务同优先级声明可以覆盖这些默认值。
构建命令
单平台构建
# 构建微信小程序 {#build-wechat-miniprogram}
npm run build:wx
# 构建支付宝小程序 {#build-alipay-miniprogram}
npm run build:ali
# 构建Web应用 {#build-web-app}
npm run build:web
# 构建iOS应用 {#build-ios-app}
npm run build:ios多平台构建
# 构建所有支持的平台 {#build-all-platforms}
npm run build:cross
# 构建指定的多个平台 {#build-specific-platforms}
mpx-cli-service build --targets=wx,ali,web项目结构
跨端项目的典型目录结构:
src/
├── components/ # 公共组件
├── pages/ # 页面文件
├── utils/ # 工具函数
├── styles/ # 样式文件
├── app.mpx # 应用入口
└── app.json # 应用配置