小程序开发之框架篇

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

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

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

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

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%的高提成及首页推荐,这不仅能激励技师的积极性,还能帮助平台筛选出优质技师,提升服务质量和口碑,形成良性循环。
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
550 7
|
2月前
|
小程序 搜索推荐 数据挖掘
跳绳打卡小程序开发多钱费用
跳绳打卡小程序通过智能手机即可轻松使用,无需额外设备,只需一根跳绳即可开始您的健康之旅。它结合了便捷性、互动性和个性化设置,让跳绳这项运动变得更加有趣和高效
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
668 1
|
25天前
|
人工智能 小程序
【一步步开发AI运动小程序】五、帧图像人体识别
随着AI技术的发展,阿里体育等公司推出的AI运动APP,如“乐动力”和“天天跳绳”,使云上运动会、线上健身等概念广受欢迎。本文将引导您从零开始开发一个AI运动小程序,使用“云智AI运动识别小程序插件”。文章分为四部分:初始化人体识别功能、调用人体识别功能、人体识别结果处理以及识别结果旋转矫正。下篇将继续介绍人体骨骼图绘制。
|
26天前
|
人工智能 小程序 vr&ar
AI运动小程序开发常见问题集锦二
截至当前,我们的AI运动识别小程序插件已迭代至第23个版本,广泛应用于健身、体育、体测、AR互动等场景。本文针对近期用户咨询,汇总了常见问题,帮助用户减少开发成本,提高效率。主要涵盖计时与计数模式的区别、综合排行榜生成方法、全屏模式适配及无开发能力用户的解决方案。
|
26天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
开发框架 人工智能 小程序
小程序常见的 UI 框架
【10月更文挑战第17天】小程序 UI 框架为开发者提供了便捷的工具和资源,帮助他们快速构建高质量的小程序界面。在选择框架时,需要综合考虑各种因素,以找到最适合项目的解决方案。随着技术的不断进步,UI 框架也将不断发展和创新,为小程序开发带来更多的便利和可能性。
53 2
|
2月前
|
存储 传感器 小程序
跳绳计数小程序开发系统
首先,我们需要明确跳绳计数小程序的核心功能:为用户提供跳绳计数的便捷方式。这意味着小程序需要能够准确地记录用户的跳绳次数,并为用户提供清晰、直观的计数展示。
|
2月前
|
人工智能 编解码 小程序
【一步步开发AI运动小程序】四、小程序如何抽帧
随着AI技术的发展,阿里体育等公司推出的“乐动力”、“天天跳绳”等APP使云上运动会、线上健身等概念备受关注。本文将引导您从零开始开发一个AI运动小程序,利用“云智AI运动识别小程序插件”。文中详细介绍了微信小程序抽帧的相关API、设置及注意事项,帮助开发者更好地实现AI运动功能。下篇将介绍人体识别技术,敬请期待。

热门文章

最新文章

下一篇
无影云桌面