其他小程序

小程序框架选型方案报告

2020-02-03  本文已影响0人  前端新阳

生态

1. 开发工具

就开发工具而言 uni-app 应该是一骑绝尘,它的文档内容最为丰富,还自带了 IDE 图形化开发工具,鼠标点点就能编译测试发布。

其它的框架都是使用 CLI 命令行工具,但值得注意的是 chameleon 有独立的语法检查工具,Taro 则单独写了 ESLint 规则和规则集。

在语法支持方面,mpvue、uni-app、Taro 、WePY 均支持 TypeScript,四者也都能通过 typing 实现编辑器自动补全。除了 API 补全之外,得益于 TypeScript 对于 JSX 的良好支持,Taro 也能对组件进行自动补全。

CSS 方面,所有框架均支持 SASS、LESS、Stylus,Taro 则多一个 CSS Modules 的支持。

所以这一轮比拼的结果应该是:

uni-app > Taro > chameleon > WePY、mpvue

image.png

2. 多端支持度

只从支持端的数量来看,Tarouni-app 以六端略微领先(移动端、H5、微信小程序、百度小程序、支付宝小程序、头条小程序),chameleon 少了头条小程序紧随其后。

但值得一提的是 chameleon 有一套自研多态协议,编写多端代码的体验会好许多,可以说是一个能戳到多端开发痛点的功能。uni-app 则有一套独立的条件编译语法,这套语法能同时作用于 js、样式和模板文件。Taro 可以在业务逻辑中根据环境变量使用条件编译,也可以直接使用条件编译文件(类似 React Native 的方式)。

在移动端方面,uni-app 基于 weex 定制了一套 nvue 方案 弥补 weex API 的不足;Taro则是暂时基于 expo 达到同样的效果;chameleon 在移动端则有一套 SDK 配合多端协议与原生语言通信。

H5 方面,chameleon 同样是由多态协议实现支持,uni-appTaro 则是都在 H5 实现了一套兼容的组件库和 API。

mpvueWePY 都提供了转换各端小程序的功能,但都没有 h5 和移动端的支持。

所以最后一轮对比的结果是:

chameleon > Taro、uni-app > mpvue > WePY

image

3. 组件库/工具库/demo

作为开源时间最长的框架,WePY 不管从 Demo,组件库数量 ,工具库来看都占有一定优势。

uni-app 则有自己的插件市场和 UI 库,如果算上收费的框架和插件比起 WePy 也是完全不遑多让的。

Taro 也有官方维护的跨端 UI 库 taro-ui ,另外在状态管理工具上也有非常丰富的选择(Redux、MobX、dva),但 demo 的数量不如前两个。但 Taro 有一个转换微信小程序代码为 Taro 代码的工具,可以弥补这一问题。

mpvue 没有官方维护的 UI 库,chameleon 第三方的 demo 和工具库也还基本没有。

所以这轮的排序是:

WePY > uni-app 、taro > mpvue > chameleon

image

4. 接入成本

接入成本有两个方面:

第一是框架接入原有微信小程序生态。由于目前微信小程序已呈一家独大之势,开源的组件和库(例如 wxparseechartzan-ui 等)多是基于原生微信小程序框架语法写成的。目前看来 uni-appTarompvue 均有文档或 demo 在框架中直接使用原生小程序组件/库,WePY 由于运行机制的问题,很多情况需要小改一下目标库的源码,chameleon 则是提供了一个按步骤大改目标库源码的迁移方式。

第二是原有微信小程序项目部分接入框架重构。在这个方面 Taro 在京东购物小程序上进行了大胆的实践,具体可以查看文章《Taro 在京东购物小程序上的实践》。其它框架则没有提到相关内容。

而对于两种接入方式 Taro 都提供了 taro convert 功能,既可以将原有微信小程序项目转换为 Taro 多端代码,也可以将微信小程序生态的组件转换为 Taro 组件。

所以这轮的排序是:

Taro > mpvue 、 uni-app > WePY > chameleon

流行度

从 GitHub 的 star 来看,mpvueTaroWePY 的差距非常小。从 NPM 和 CNPM 的 CLI 工具下载量来看,是 Taro(3k/week)> mpvue (2k/w) > WePY (1k/w)。但发布时间也刚好反过来。笔者估计三家的流行程度和案例都差不太多。

uni-app 则号称有上万案例,但不像其它框架一样有一些大厂应用案例。另外从开发者的数量来看也是 uni-app 领先,它拥有 20+ 个 QQ 交流群(最大人数 2000)。

所以从流行程度来看应该是:

uni-app > Taro、WePY、mpvue > chameleon

image

5. 开源建设

一个开源作品能走多远是由框架维护团队和第三方开发者共同决定的。虽然开源建设不能具体地量化,但依然是衡量一个框架/库生命力的非常重要的标准。

从第三方贡献者数量来看,Taro 在这一方面领先,并且 Taro 的一些核心包/功能(MobX、CSS Modules、alias)也是由第三方开发者贡献的。除此之外,腾讯开源的 omi 框架小程序部分也是基于 Taro 完成的。

WePY 在腾讯开源计划的加持下在这一方面也有不错的表现;mpvue 由于停滞开发了很久就比较落后了;可能是产品策略的原因,uni-app 在开源建设上并不热心,甚至有些部分代码都没有开源;chameleon 刚刚开源不久,但它的代码和测试用例都非常规范,以后或许会有不错的表现。

那么这一轮的对比结果是:

Taro > WePY > mpvue > chameleon > uni-app

最后补一个总的生态对比图表:

image

官网优势介绍

uniapp 官网 taro 官网

【个人观点】:1. 结合公司现有小程序进行转化,发现 taro 并不能完美支持小程序原生组件与API 文档;2. uniapp 使用的是 vue 语法,taro 使用的是 react 语法,相对来说,vue更易上手。 3. uniapp 社区更为丰富,所以遇到问题后,有强大的后盾支持,能更快速的解决问题。综上,个人认为 uniapp 更适合我们进行快速的切换到多端支持的小程序框架上来。

细化 uniapp

参考:https://uniapp.dcloud.io/README

目录结构

了解一个项目首先要了解他的目录结构,其次需要了解它的组件,这里重点关注存放小程序组件的地方,这里就可以了解到为什么 uniapp 可以实现多端,并且保证他们的差异化。

wxcomponents 小程序组件支持情况
CSS变量 描述 App 小程序 H5
--status-bar-height 系统状态栏高度 系统状态栏高度、nvue注意见下 25px 0
--window-top 内容区域距离顶部的距离 0 0 NavigationBar 的高度
--window-bottom 内容区域距离底部的距离 0 0 TabBar 的高度

用法示例:

<template>
    <view>
        <view class="status_bar">
            <!-- 这里是状态栏 -->
        </view>
        <view> 状态栏下的文字 </view>
    </view>
</template>    
<style>
    .status_bar {
        height: var(--status-bar-height);
        width: 100%;
    }
</style>

优秀测评文档

  1. 跨端框架深度评测:微信原生、wepy、mpvue、uni-app、taro、chameleon

  2. 深度横评对比

上一篇 下一篇

猜你喜欢

热点阅读