小程序开发之框架篇

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

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

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

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

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。完善的代码门禁,保证代码质量,杜绝代码坏味道

总结

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

相关文章
预约按摩小程序开发,为什么很多上门按摩平台根本招聘不到优秀技师?
上门按摩平台面临招不到优秀技师的问题,主要原因是平台众多,技师选择多样。为解决此问题,平台可引入技师等级制度,根据订单数量和好评率划分高、低等级技师。高等级技师可享受70%-90%的高提成及首页推荐,这不仅能激励技师的积极性,还能帮助平台筛选出优质技师,提升服务质量和口碑,形成良性循环。
|
23天前
|
人工智能 小程序
【一步步开发AI运动小程序】十五、AI运动识别中,如何判断人体站位的远近?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,无需后台支持,具有快速、体验好、易集成等特点。本文介绍如何利用插件判断人体与摄像头的远近,确保人体图像在帧内的比例适中,以优化识别效果。通过`whole`检测规则,分别实现人体过近和过远的判断,并给出相应示例代码。
|
3天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
|
17天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十七、如何识别用户上传视频中的人体、运动、动作、姿态?
【云智AI运动识别小程序插件】提供人体、运动、姿态检测的AI能力,支持本地原生识别,无需后台服务,具有速度快、体验好、易集成等优点。本文介绍如何使用该插件实现用户上传视频的运动识别,包括视频解码抽帧和人体识别的实现方法。
|
22天前
|
人工智能 小程序 UED
【一步步开发AI运动小程序】十六、AI运动识别中,如何判断人体站位?
【云智AI运动识别小程序插件】提供人体、运动及姿态检测的AI能力,本地引擎无需后台支持,具备快速、体验好、易集成等优势。本文介绍如何利用插件的`camera-view`功能,通过检测人体站位视角(前、后、左、右),确保运动时的最佳识别率和用户体验。代码示例展示了如何实现视角检查,确保用户正或背对摄像头,为后续运动检测打下基础。
|
2月前
|
人工智能 小程序 IDE
【一步步开发AI运动小程序】九、姿态辅助调试桌面工具的使用
随着AI技术的发展,各大厂商推出的AI运动APP如“乐动力”、“天天跳绳”等,使云上运动会、线上健身等概念大热。本文将指导你如何利用“云智AI运动识别小程序插件”,在微信小程序中实现类似功能,包括工具搭建、服务启动及数据回传等步骤,助力开发者高效开发AI运动小程序。
【一步步开发AI运动小程序】九、姿态辅助调试桌面工具的使用
|
28天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十三、自定义一个运动分析器,实现计时计数02
本文介绍如何利用“云智AI运动识别小程序插件”开发AI运动小程序,详细解析了俯卧撑动作的检测规则构建与执行流程,涵盖卧撑和撑卧两个姿态的识别规则,以及如何通过继承`sports.SportBase`类实现运动分析器,适用于小程序开发者。
|
28天前
|
人工智能 小程序 API
【一步步开发AI运动小程序】十二、自定义一个运动分析器,实现计时计数01
随着AI技术的发展,AI运动APP如雨后春笋般涌现,如“乐动力”、“天天跳绳”等,推动了云上运动会、线上健身等热潮。本文将指导你从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”,介绍运动识别原理、计量方式及运动分析器基类的使用,帮助你在小程序中实现运动计时和计数功能。下篇将继续探讨运动姿态检测规则的编写。
|
2月前
|
人工智能 JSON 小程序
【一步步开发AI运动小程序】八、利用body-calc进行姿态识别
随着AI技术的发展,各大厂商推出的如“乐动力”、“天天跳绳”等AI运动APP,使得云上运动会、线上健身等概念风靡一时。本文将引导读者从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”,介绍人体姿态检测规则、规则编写语法、执行检测规则运算及姿态检测实战等内容,助力开发者轻松实现AI运动小程序的开发。
【一步步开发AI运动小程序】八、利用body-calc进行姿态识别
|
17天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。