多端适配

设计稿尺寸单位

框架默认开启 px 单位转换功能,在小程序中会转换为 rpx,在 H5 中会转换为 rem

将编译配置中 designWidth 设置为实际设计稿的宽度值,在开发汇总书写尺寸即可按照 1:1 的关系来进行书写,即从设计稿上量的长度 100px,那么尺寸书写就是 100px。详细设置参考【编译配置】。

特性支持

全局方法

生命周期 小程序 H5
getApp 支持 支持(可以获取到 app 实例及其属性和生命周期、支持 $api)
getCurrentPages 支持 支持(已支持获取到 route 和 uri,其他信息暂未支持)

配置

App

配置属性 小程序 H5
pages 支持 支持
tabBar 支持 见下方
window 支持 见下方
preloadRule 支持 不支持
subpackages 支持 不支持

tabBar

配置属性 小程序 H5
backgroundColor 支持 支持
borderStyle 支持 支持
color 支持 支持
list 支持 见下方
selectedColor 支持 支持

tabBar.list: Array<item: Object>

list 接受一个数组,tab 按数组的顺序排序,每个项都是一个对象,其属性值如下:

配置属性 小程序 H5
pagePath 支持 支持
text 支持 支持
iconPath 支持 支持
selectedIconPath 支持 支持

window

配置属性 小程序 H5
navigationBarBackgroundColor 支持 支持
navigationBarTextStyle 支持 支持
navigationBarTitleText 支持 支持
navigationStyle 支持 不支持
backgroundColor 支持 支持
backgroundTextStyle 支持 支持
enablePullDownRefresh 支持 支持
onReachBottomDistance 支持 支持

Page

配置属性 小程序 H5
navigationBarBackgroundColor 支持 支持
navigationBarTextStyle 支持 支持
navigationBarTitleText 支持 支持
navigationStyle 支持 支持
backgroundColor 支持 支持
backgroundTextStyle 支持 支持
enablePullDownRefresh 支持 支持
onReachBottomDistance 支持 支持
disableScroll 支持 支持

生命周期和事件方法

Mars (在 Page 和 Componet 上)支持完整的 Vue 生命周期和小程序生命周期,对应的映射关系如下,建议开发者使用 Vue 生命周期来开发。

App

生命周期 小程序 H5
onLaunch 支持 支持
onShow 支持 支持
onHide 支持 支持
onError 支持 不支持
onPageNotFound 支持 不支持

页面 Page

生命周期 小程序 H5
beforeCreate 支持 支持
created 支持(onLoad时调用) 支持
beforeMount 支持(onReady前调用) 支持
mounted 支持(onReady时调用) 支持
beforeUpdate 支持(setData前调用) 支持
updated 支持(视图更新后调用) 支持
beforeDestroy 支持(onUnload时调用) 支持
destroyed 支持(onUnload时调用) 支持
onShow 支持 支持(映射为 activated)
onHide 支持 支持(映射为 deactivated)
onLoad 支持 支持(映射为 created)
onReady 支持 支持(映射为 mounted)
onUnload 支持 支持(映射为 destroyed)
页面方法 小程序 H5
onPullDownRefresh 支持 支持
onReachBottom 支持 支持
onPageScroll 支持 支持
onTabItemTap 支持 支持
onForceReLaunch 支持 暂不支持
onShareAppMessage 支持 暂不支持

组件 Component

生命周期 小程序 H5
beforeCreate 支持 支持
created 支持 支持
beforeMount 支持(ready前调用) 支持
mounted 支持(ready时调用) 支持
beforeUpdate 支持(setData前调用) 支持
updated 支持(视图更新后调用) 支持
beforeDestroy 支持(detached时调用) 支持
destroyed 支持(detached时调用) 支持
pageLifetimes.onShow 支持 支持(映射为 activated)
pageLifetimes.onHide 支持 支持(映射为 deactivated)
lifetimes.created 支持 支持(映射为 created)
lifetimes.attached 支持 支持(映射为 beforeMount)
lifetimes.ready 支持 支持(映射为 mounted)
lifetimes.detached 支持 支持(映射为 destroyed)

特性

Component 构造器

这里只列出小程序特有的特性,生命周期和 Vue 单文件组件具有的特性请参考上述【生命周期和页面方法】以及【Vue 特性支持 - 自定义组件】。

字段 小程序 H5
options 支持 不支持
externalClasses 支持 不支持
behaviors 不支持 不支持
definitionFilter 不支持 不支持

多端不同业务逻辑适配方法

1、JS 逻辑适配

环境判断条件:process.env.MARS_ENV

process.env.MARS_ENV 会在编译时进行静态替换,所以不能当做变量使用,只能静态使用。替换后并进行 dead code elimination,不符合平台判断的代码块会在编译时移除。

if (process.env.MARS_ENV === 'h5') {
    // 此代码块里的内容只渲染到h5端
    // todo ...
}
else if (process.env.MARS_ENV === 'swan') {
    // 此代码块里的内容只渲染到swan端
    // todo ...
}
else if (process.env.MARS_ENV === 'wx') {
    // 此代码块里的内容只渲染到wx端
    // todo ...
}

2、template 逻辑适配

通过模板<template-mars target="h5/swan/wx">判断

<template-mars target="h5" > // 在H5端渲染为<template>
    ...
</template-mars>

<template-mars target="swan"> // 在swan渲染为<block>,wx同理
    ...
</template-mars>

3、style 逻辑适配

通过<style target="h5/swan/wx">判断 style 标签不需要写scoped 编译过程统一加

<style target="swan/wx">
// 此处的style 会与其他style 按顺序合并到一个 style标签,编译到swan/wx
</style>

<style target="h5">
// 此处的style直接编译到H5端,单独style标签存在
</style>