当前位置: 首页 > news >正文

小程序开发技术框架选型

前言:

        目前我们开发小程序,如果在只考虑性能的情况下,最优的还是选择原生小程序,但是如果考虑多端一套代码的话,原生小程序就无法满足需求,目前还在持续更新并效果比较优秀的有 taro 与 uni-app 。

介绍:

        自 2017-1-9 小程序诞生以来,历经多年的迭代升级,上线小程序现在非常多,成为继 Web、iOS、Android 之后,第四大主流开发技术

框架选型:官方入口

原生小程序优点:

       官方支持,性能开发最好

原生小程序的不足之处:

  1. 原生开发对 Node、预编译器、webpack 支持不好,影响开发效率和工程构建流程
  2. 微信定义了一个不伦不类的语法,不如正经学 vue、react,学会了全端通用,而不是只为微信小程序
  3. vue/react 生态里有太多周边工具,可以提高开发效率,比如 ide、校验器、三方库。。。
  4. 微信那个 ide 和专业编辑器相比实在不好用

框架方面:Taro 和 Uniapp 对比

框架版本Issues(open)总提交
Taro 3.4.x3.4.118258076
Taro 3.5.x3.5.0-beta.28258310
Uniapp 3.x3.0.0-alpha9559699

        taro 和 uniapp 均支持H5微信小程序支付宝小程序QQ 小程序百度小程序字节跳动小程序钉钉小程序京东小程序飞书小程序快手小程序AndroidiOS快应用,taro 额外支持鸿蒙 OS,uniapp 额外支持 360小程序

Taro 3.5

​​​​​​​        相比上个版本 3.4,提升很明显,几乎提高了一半的性能,但目前处于公开测试期间,老项目升级的话有一定成本。Taro 3.5 构建时默认使用 terser,虽然它现在支持使用 esbuild,但打包esnext目标后体积增大 33% 左右,换成es2015es2016后,与esnext变化不大

优点:开发和真机效果一样、Typescript 类型声明完善
缺点:热更新无效(需要手动刷新)、Composition API 无效、beta 版本刚发布


Uniapp 3.0 

        处于内部测试有很长一段时间了,相对来说,几乎各项数据都比 taro 要好,但仍然有需要考虑的地方,uniapp 从编译速度来看几乎可以说是无感知,但这并不是最终消耗的时间,如果是web端,可以做到实时更新,但小程序需要等微信开发者工具编译完成,这个时间也需要5 - 10秒。uniapp 使用 vite(rollup)打包后仅79kb,这意味着在2M的限制下使用 uniapp 进行开发,可以开发更多的功能,但是在项目不大的情况下,通过分包可以忽略这个特性

优点:编译速度快,构建产物体积小
缺点:开发和真机效果不一致(canvas 动态设置宽高,CSS样式)、频繁出现FSWatcher错误导致需要重新编译、Typescript 类型声明支持很差

总结:

Taro:react 基础的适合使用

uni-app: vue基础适合使用

相关文章:

  • 大学生怎么制作查题搜题公众号?
  • Spring源码------IOC容器初始化过程
  • SpringBoot+Vue+Element-UI实现家具商城系统
  • Proxy-Reflect
  • 容器-基础
  • GC垃圾回收
  • 3D场景的制作步骤
  • 【精讲】后台项目 采用vue2框架 完整版内含详细注释 2
  • mac vscode debug安装调试moodle
  • PyTorch(一)安装与环境配置
  • 全网最牛自动化测试框架系列之pytest(7)-yield与终结函数
  • JSR303校验(1)
  • Nacos - 支持PostgreSQL
  • CFD网格质量评估标准
  • 网课答案公众号题库系统
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 5、React组件事件详解
  • Apache的80端口被占用以及访问时报错403
  • css选择器
  • extract-text-webpack-plugin用法
  • JS数组方法汇总
  • Mocha测试初探
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • node和express搭建代理服务器(源码)
  • React系列之 Redux 架构模式
  • Spark RDD学习: aggregate函数
  • 测试开发系类之接口自动化测试
  • 简单易用的leetcode开发测试工具(npm)
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 面试总结JavaScript篇
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 试着探索高并发下的系统架构面貌
  • 延迟脚本的方式
  • 白色的风信子
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #git 撤消对文件的更改
  • #Java第九次作业--输入输出流和文件操作
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (七)Knockout 创建自定义绑定
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)Scala的“=”符号简介
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Core中Emit的使用
  • .Net FrameWork总结
  • .netcore 获取appsettings