小程序开发之框架篇

简介: 本篇文章会从跨端框架的角度入手,带你了解如何选择小程序开发框架,并介绍我们的最佳实践

在上一篇小程序开发之入门篇的文章里,我们从小程序诞生的背景、为什么会存在小程序这种形态以及开发小程序的基础知识、运行原理等方面进行了介绍。对于开发者来说,如果要在开发一个小程序并发布上线,应该怎么做到快速开发和部署呢。本篇文章会从跨端框架的角度入手,带你了解如何选择小程序开发框架,并介绍我们的最佳实践。

原生小程序开发带来的问题

在介绍框架之前,我们首先来看一下如果不使用框架,而是直接采用原生的小程序语法进行开发会是一种什么样的体验。

1.不支持原生的Html标签

对于熟悉 Web 开发的同学来说,小程序语法不支持原生的 Html 标签恐怕是很大的一个困扰。不同于 Web 开发中统一的 Html 标签语言,每家小程序平台都定义了自己的一套小程序标签语言,比如支付宝小程序的 AXML,或者是微信小程序的 WXML。无论是 AXML 还是 WXML,基本都会支持数据绑定、条件渲染、列表渲染、模板等几种语法,但是在具体使用上仍然会有些差异。比如 AXML 的条件渲染是 a:if 语法,WXML 的语法确是wx:if 语法

<view a:if="{{length > 5}}"> 1 </view>

<view a:elif="{{length > 2}}"> 2 </view>

<view a:else> 3 </view>

<view wx:if="{{view == 'WEBVIEW'}}"> WEBVIEW </view>

<view wx:elif="{{view == 'APP'}}"> APP </view>

<view wx:else="{{view == 'MINA'}}"> MINA </view>

从上面的代码中我们也可以看出来,使用的标签是 Html 中不存在的 <view> 标签。不同于 Html 中丰富的标签,小程序的标签主要有 view  和 text 两种标签,其中 view 可以认为是块元素,text 是行元素。这种不同于 Html 的语法和标签设计,对熟悉 Web 开发的同学来说是一种不小的心智负担。

2.不能直接使用React或Vue

React 和 Vue 可以认为是前端开发最重要的两种框架了(Angular 同学不喜勿喷),对于熟悉用这两种框架开发的同学来说,使用原生的小程序开发一个组件无法直接复用React 或 Vue 的生态。你不得不要写一遍 axml、acss、index.js、index.json等文件来描述这个组件。开发体验不所谓不繁琐

3.不支持dom、bom的Api

原生小程序语法不支持直接调用 dom 或者 bom 的 api,在 Web 开发中查询一个节点的宽高可以很容易的实现,直接调用document.querySelector即可。但在小程序中,需要借助于小程序的节点查询 api 才可以实现,比如支付宝小程序的 SelectorQuery 语法。

4.无法在多个小程序之间复用

从上面几点我们可以看出,不同的小程序平台会有自己的一套语法实现。如果我们开发的一个组件想要在多个小程序平台上复用就很难处理,更别说一套代码要部署到多个小程序平台了。所以使用小程序的原生语法进行开发带来的很大一个问题就是代码复用问题。


为什么需要跨端框架

正是由于原生小程序语法开发带来的上述问题,各大公司和社区围绕着小程序开发体验以及多端的需求相继推出了自己的跨端框架。跨端框架可以带来的好处主要有以下几点

1.提升开发效率,可使用React、Vue开发

对于熟悉了 Web 开发的同学来说,借助于跨端框架,“理论上”你可以像开发一个普通的 React 或者 Vue 应用一样开发一个小程序。和之前的开发模式也没有什么不同,不需要再关心 AXML 或者 WXML 的语法,也可以使用你所熟悉的 Less 或者 Sass 来写样式。

2.一次开发,多端运行

从框架名字上就可以看出来,跨端框架,最重要的两个字是跨端,这里的跨端主要是指不同的小程序平台,比如支付宝小程序、钉钉小程序、微信小程序以及头条小程序等,除了小程序之外一般还会支持 H5,对于某些跨端框架可能还会支持React Native。这就保证了使用跨端框架开发完之后,可以分发到微信、支付宝等不同的小程序平台,还可以编译成一个普通的 H5 或者 RN 应用。真正做到一次开发,多端运行。

3.可复用可沉淀

由于我们可以开发一次就在多个端运行,因此我们的代码就可以在不同的小程序或者 H5 中进行复用。基于此可以沉淀公共组件、抽象公共逻辑,会极大地提升开发效率。


常见的跨端框架及对比

目前市面上存在的跨端框架有很多,综合来看比较常用的主要是以下 4 个,我们从以下几个维度来比较看下,这些跨端框架的区别,帮助你在做技术选型时可以更好的选择适合业务场景的框架。注意,由于框架本身也存在版本升级,不同版本的差异也很大,以下的对比仅讨论最新版

框架名称

开发团队

是否开源

是否支持React、Vue

多端支持

组件库

是否支持 Html 标签

实现原理

社区生态,文档完善

Remax

原支付宝开发同学

支持 React 所有特性

支持阿里程序、微信小程序(QQ小程序)、头条小程序以及 H5 应用的开发

remax/one 提供了跨平台的组件,也可以使用自定义组件库比如weuimini-ali-ui

支持

运行时,详细查看点这里

🌟🌟🌟

一般

Taro

核心是京东,部分特性支持则有其他团队承接,比如 RN 的支持是 58 的团队开发

支持 React 、Vue 所有特性

微信、京东、百度、支付宝、字节跳动 、QQ 、飞书小程序以及 H5 和 RN 等应用。

@tarojs/components,同时支持原生小程序组件

支持,但有部分限制

运行时,taro@3.x的实现原理

🌟🌟🌟🌟🌟

非常完善

Rax

淘宝

支持 React DSL,无法保证所有React 特性都支持

支付宝、手淘、钉钉、微信、百度、字节、快手等小程序以及H5、Flutter

Rax Components,也可以使用 fusion mobile

支持

同时支持编译时和运行时,详细查看点这里

🌟🌟🌟🌟

相对完善

Uni-app

dcloud

支持 Vue

iOS、Android、Web(响应式)、以及各种小程序、快应用

内置基础组件以及跨端组件uni-ui

-

https://uniapp.dcloud.io/select.html

🌟🌟🌟🌟🌟

非常完善


综上,如果不考虑任何其他外在因素的影响,如果你的开发团队使用 React 居多,推荐使用 Taro,如果你的开发团队使用 Vue 偏多,则推荐使用 uni-app

我们的最佳实践

由于我们的团队主要是使用 React,基于 React 的沉淀也较多,我们最终的跨端框架选择是 Taro。基于 Taro 我们沉淀了一套跨端脚手架,脚手架默认支持以下几个特性:

🏠 基于 Taro,支持H5、微信、支付宝、钉钉小程序等多端

基于 @tarojs/cli 初始化工程模板,默认支持微信、支付宝、钉钉等小程序以及 H5 和 RN 应用

💪 使用 TypeScript 编写,完整的类型定义

基于 TypeScript 编写,支持完整的类型定义,让代码更健壮

📦 支持 React 和 React Hooks

除了支持 React 外,React 的相关生态都可以直接复用。React Hooks 除了支持 taro-hooks 外还内置 ahooks 的支持,丰富的 hooks 列表供开发者使用

🎨 支持 css 变量,轻松定制门户主题

css 样式默认使用 less 并支持 css modules,此外对于很多门户类应用,通常会有主题定制或者换肤的需求,我们的跨端脚手架默认支持 css 变量,帮助开发者轻松定制门户主题

🚪 代码门禁,提交代码自动执行代码规范检查

默认提供标准的 lint 配置 @ali-dayu/lint-confg,包括 eslint、stylelint、prettier 以及 commitlint。完善的代码门禁,保证代码质量,杜绝代码坏味道

总结

本篇作为跨端系列第二篇文章,主要从小程序跨端的开发场景切入介绍了常见的跨端框架以及我们自己的最佳实践。一方面可以帮助开发者在遇到跨端问题时可以更快的选择适合自己的技术栈,另一方面我们基于项目上的诉求以及内部的多年实践沉淀了我们自己的跨端脚手架,希望对正在开发小程序的同学有所启发。

相关文章
|
7月前
|
人工智能 小程序 前端开发
一个小程序轻量AR体感游戏,开发实现解决方案
针对青少年运动兴趣不足问题,AR体感游戏凭借沉浸式互动体验脱颖而出。结合小程序“AI运动识别”插件与WebGL渲染技术,可实现无需外设的轻量化AR健身游戏,如跳糕、切水果等,兼具趣味性与锻炼效果,适用于儿童健身及职工团建,即开即玩,低门槛高参与。
|
7月前
|
人工智能 小程序 安全
小程序跨平台框架未来的发展趋势是什么?
小程序跨平台框架未来的发展趋势是什么?
458 128
|
7月前
|
运维 小程序 数据可视化
小程序开发平台有哪些?SaaS小程序制作平台哪个好
小程序开发模式详解:自主开发、SaaS小程序制作平台与外包全对比 选择合适的小程序开发模式,是项目成功的基石。这三种模式在成本、周期、控制力和灵活性上各有千秋,适用于不同阶段和不同类型的企业。下面我们将逐一深入剖析。
590 9
|
7月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?哪个好
小程序的开发方式丰富多元,开发团队可根据自身的技术背景、项目具体需求以及资源状况,灵活挑选最为适宜的开发路径。以下将详细介绍几种主流的小程序开发方式。
629 1
|
7月前
|
移动开发 小程序 前端开发
小程序快速开发平台有哪些?
小程序开发并非“一刀切”,需结合技术储备、资金预算、时间规划及功能需求等多维度因素综合考量。以下为您详细拆解五种主流开发方案及其适用场景,助您精准匹配开发路径。
418 3
|
7月前
|
移动开发 小程序 前端开发
小程序开发平台有哪些?小程序开发制作软件推荐
小程序开发方案全解析:5种主流方式与选择指南 小程序开发需根据技术能力、预算、时间及功能需求综合决策。以下为5种主流开发方案及适用场景分析:
26249 0
|
9月前
|
小程序 JavaScript API
uni-halo + 微信小程序开发实录:我的第一个作品诞生记
这篇文章介绍了使用uni-halo框架进行微信小程序开发的过程,包括选择该框架的原因、开发目标以及项目配置和部署的步骤。
480 0
uni-halo + 微信小程序开发实录:我的第一个作品诞生记