# 前端跨平台方案

# 移动端

移动端包括: Web App(H5), 小程序, IOS App, Android App

# 三种程序采用的技术类型

# Web App

全部由前端开发, 适应各大主流手机浏览器即可

# App

  • H5嵌入, IOS、Android 套壳

  • Hybrid开发, 70% H5, 30%原生(比例由需求决定)

  • 原生开发, 即IOS, Android

# 小程序

微信, 百度, 支付宝等等各类小程序, 由前端开发


# 跨平台开发框架对比

uni-app Taro Flutter RN
H5
小程序
IOS
Android
技术栈 Vue React Dart React

# 技术学习成本和难度

rn,要求开发者学习react,要求精通flex布局,要求原生开发协作。

flutter,要求开发者学习dart,了解dart和flutter的API、要求精通flex布局,要求原生开发协作。

taro, 要求开发者学习react, 了解小程序。

uni-app,要求开发者学习vue,了解小程序。

# 跨端性差异

flutter 和 rn,都是支持web技术的。但都是仅限于普通界面排版

涉及定位、摄像头、相册等复杂功能的,需要单独写代码的。

# 总结

  • flutter的相对优势:
    • 性能好一丢丢。比rn有优势,但比 uni-app,在实际开发中没有很明显的差距。
  • flutter的相对劣势:
    • 需要原生协作,维护3套代码,无法有效降低开发成本,提升开发效率
    • 嵌套地狱,代码难看难维护
    • 不支持热更新
    • 目前质量和成熟度很低,github上的issue有5k+,很容易掉坑里
    • ui库不适合国情
    • 学习成本高
    • dart未来扑朔迷离

  • rn的相对优势:
    • rn是纯单页的,嵌入原生App比较灵活。而uni-app是应用整体的概念,如果要内嵌入其他原生应用的话,要求原生应用内嵌uni-app应用整体进来
  • rn的相对劣势:
    • 需要原生协作,维护3套代码,无法有效降低开发成本,提升开发效率
    • 不支持小程序,发布到h5也无法直接发
    • ui库不适合国情
    • 学习成本高,用人成本高
    • rn是纯单页应用,如果一个应用的页面很多,用rn写会很崩溃,变量污染和干扰严重。而 uni-app支持多页面,页面之间上下文隔离,写页面较多的大型应用更合适
    • 另外react在中国的市场占有率远不如vue。这也是中国与国外不同的特色情况。

# 建议

uni-app 使用的 vue 技术栈更符合现有资源, 在国内 vue 比 react 的生态更好


# PC端

# 节省重复开发成本

  • 开发组件库
  • 使用集成方案

两者对比:

  • 组件库显然更加灵活, 但是需要人力维护, 编写组件, 书写文档, 磨平各项目间 UI 差异
  • 集成方案相对冗余, 但是大部分功能都已经写好, 只需要进行联调

集成方案


# 总结

开发组件库和使用集成方案都需要一点, 就是 UI 风格的统一

对于有特定风格要求的客户, 自己开发组件库, 可以更好的控制这一点