内容简介:Mars 是由 Vue 驱动的多端开发框架,其语法规范完全遵循 Vue,支持一套代码同时运行到百度小程序、微信小程序以及 H5 Web 端。Mars 诞生于搜索垂类产品对于小程序和 H5 Web 端相同的产品业务需求的场景下。从框架设计研发之初,就定位于解决小程序以及 H5 Web 端的复用和同构开发能力。Mars 来源于真实的业务场景和痛点,现在已经初步实现目标并将其开源,希望能解决大家的一些类似需求和问题,也希望倾听大家的反馈。随着小程序生态的崛起,市面上各种小程序开发框架层出不穷,其中不乏基于 Vue
Mars 是由 Vue 驱动的多端开发框架,其语法规范完全遵循 Vue,支持一套代码同时运行到百度小程序、微信小程序以及 H5 Web 端。
Mars 诞生于搜索垂类产品对于小程序和 H5 Web 端相同的产品业务需求的场景下。从框架设计研发之初,就定位于解决小程序以及 H5 Web 端的复用和同构开发能力。Mars 来源于真实的业务场景和痛点,现在已经初步实现目标并将其开源,希望能解决大家的一些类似需求和问题,也希望倾听大家的反馈。
2、又一个轮子?
随着小程序生态的崛起,市面上各种小程序开发框架层出不穷,其中不乏基于 Vue 驱动的框架(如 mpvue、megalo 等),那么 Mars 有何差异化呢?
a、Mars 支持了完整的原生自定义组件能力,相对于基于小程序模板能力的实现能支持更多的特性。
b、Mars 开发规范明确,其开发模式遵循 Vue 规范,基础组件、API 规范遵循小程序规范。降低开发者学习成本的同时为多端适配提供了完整的规范支持。
c、Mars 提供了完整的 H5 Web 端适配解决方案,在框架、基础组件及 API 上针对 H5 提供了极大程度的适配(包括 App 框架、路由、页面转场、生命周期、页面方法及配置等)实现和打平,开发者只需在少数由于平台差异无法适配的组件和 API 上进行较低成本的适配,即可完美运行在 H5 端(效果参见下方案例)。
d、性能优化。Mars 基于 Vue 的响应式系统实现了数据变更检测,只有变化了的 data 和 computed 才会从 Vue 同步到小程序。
Mars 虽然是又一个小程序开发框架,但是对 H5 适配提供了强大的支持,主要是为了解决小程序 H5 端适配而诞生。Mars 非常适用于对小程序端和 H5 Web 端有同构开发需求的开发场景。
3、为什么选择 Vue 技术栈?
为什么选择 Vue 技术栈?主要是以下几个考虑点:
a、搜索垂类业务的技术栈是 Vue,选择 Vue 技术栈能降低一些学习成本;
b、目前基于 Vue 的小程序框架还无法很好的解决 H5 端的同构开发的需求,而 React 技术栈已有 Taro 框架提供了 H5 端解决方案;
c、Vue 运行时提供了强大的数据驱动能力,Vue 的单文件组件开发方式、模板语法具有很好的开发体验,且易与小程序等平台对接;其技术栈具备强大的生态、具有多端适配扩展能力和空间。
4、真的能完美适配 H5 吗?
Mars 针对 H5 进行了最大程度的适配和体验优化,可以看一下百度小程序和同构 H5 版本的两个线上案例。达到案例中的体验只需在少数由于平台差异无法适配的组件和 API 上进行较低成本的适配,更多适配细节请查看文档【多端适配】部分。
案例 | 百度智能小程序 | H5 |
---|---|---|
装馨家 | ||
健康养生说 |
深入了解 Mars
设计思路
Mars 框架的设计思路是将跨多端的应用拆分为逻辑层和视图层,逻辑层采用同一套核心运行时进行数据驱动以及生命周期管理,视图层使用同一套模板语法,经过编译转换为特定平台的视图语言。
框架原理
考虑到学习成本、生态完善程度以及在多端上的扩展性、业务场景等原因,我们选择了 Vue 技术栈,采用 Vue 单文件组件和模板语法来书写组件代码,引入标准基础组件和 API 规范和标准生命周期规范。
在此开发规范之上,基于 Vue 的模板语法和基础组件来构建视图层,基于 Vue 数据驱动及标准生命周期规范来构建逻辑层,实现多端运行。框架总体原理图如下:
特性
Vue 驱动
- 语法规范完全遵循 Vue
- Vue 特性在小程序端高度支持
H5 端完美体验
- 小程序特性在 H5 端高度还原
- H5 Web 场景下细致的体验优化
现代化开发体验
- 单文件组件化开发
- CLI支持
- 自定义构建配置
H5 适配能力
Mars 在框架、基础组件及 API 上针对 H5 提供了极大程度的适配,从而支持 H5 端低成本适配和良好的体验。Taro 作为 React 技术栈多端开发的优秀框架,我们在 H5 适配设计上对其有所参考,也增加了一些特性的支持,目前 Mars 在 H5 端支持的配置和事件方法与 Taro 对比如下(Taro 支持度来自发稿时 Taro 官网):
页面
配置
配置属性 | Mars | Taro | |
---|---|---|---|
navigationBarBackgroundColor | :heavy_check_mark: | :heavy_check_mark: | |
navigationBarTextStyle | :heavy_check_mark: | :heavy_check_mark: | |
navigationBarTitleText | :heavy_check_mark: | :heavy_check_mark: | |
navigationStyle | ✘ | ✘ | |
backgroundColor | :heavy_check_mark: | ✘ | |
backgroundTextStyle | :heavy_check_mark: | ✘ | |
enablePullDownRefresh | :heavy_check_mark: | ✘ | |
onReachBottomDistance | :heavy_check_mark: | ✘ | |
disableScroll | ✘ | ✘ |
页面事件方法
页面方法 | Mars | Taro | |
---|---|---|---|
onPullDownRefresh | :heavy_check_mark: | ✘ | |
onReachBottom | :heavy_check_mark: | ✘ | |
onPageScroll | :heavy_check_mark: | ✘ | |
onTabItemTap | :heavy_check_mark: | ✘ | |
onForceReLaunch | ✘ | ✘ | |
onShareAppMessage | ✘ | ✘ |
基础组件和 API
Mars 框架的基础组件和 API 使用遵循小程序的组件和 API 定义与规范,请参考小程序文档。在小程序端及 Web 端的适配支持情况,请查看文档【组件】和【API】部分。
多端适配
对于由于平台差异无法适配的组件和 API,或者多端不同业务逻辑,Mars 框架提供以下适配方案。
1、JS
通过环境变量 process.env.MARS_ENV
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>
判断
<template-mars target="h5" > ... </template-mars> <template-mars target="swan"> ... </template-mars> 复制代码
3、style
通过 <style target="h5/swan/wx"></style>
<style target="swan/wx"> // 此处的 style 只编译到 swan/wx </style> <style target="h5"> // 此处的 style 只编译到 H5 </style> 复制代码
如何跑起来
看到这里,如果你已经想上手试试,可以这样跑起来:
# 安装 mars-cli npm install -g @marsjs/cli # 创建项目 mars create [projectName] # 可选项: # 是否支持 H5,如需支持 H5 请选择:小程序和 H5 ? 选择创建项目类型: (Use arrow keys) ❯ 小程序和 H5 仅小程序 # 启动项目 (小程序需使用开发 工具 打开对应的dist目录,H5 直接访问查看) mars serve [--target, -t swan (默认) | wx | h5] 复制代码
想了解更多的框架介绍和开发指南,请移步:
- Mars 官网 max-team.github.io/Mars/
- Github github.com/max-team/Ma…
以上所述就是小编给大家介绍的《Mars - 又双叒叕一个多端开发框架?这次是 Vue 驱动,能完美适配 H5》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- flutter 屏幕尺寸适配 字体大小适配
- 前端适配:移动端/web端适配方案
- iOS 关于全面屏适配的方案及UI在不同尺寸下适配方案
- iOS 关于全面屏适配的方案及UI在不同尺寸下适配方案
- 【移动端适配】用vw、vh+媒体查询打造最完美的移动端适配方案
- Rem 等比适配始末
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Using Google App Engine
Charles Severance / O'Reilly Media / 2009-5-23 / USD 29.99
With this book, you can build exciting, scalable web applications quickly and confidently, using Google App Engine - even if you have little or no experience in programming or web development. App Eng......一起来看看 《Using Google App Engine》 这本书的介绍吧!