前言
最近公司在探索发展新的mobile领域。借此机会,分别测试对比了下主流跨平台框架的优劣。到目前为止React Native 和 Ionic 2, NativeScript 都各写了小Demo。
Ionic 2
Ionic 2完全重写了Ionic 1的构架。基于Angular 2的语法,封装了各种手机适用的组件,非常适合快速迭代,追求速度的产品。
优点:
- 几乎100%跨平台可复用代码。只需写一次,哪里都能跑。
- 开发几乎无需手机, 大多数功能浏览器都可以调试搞定。
- TypeScript语法,代码简洁高效。
- 统一风格的组件,可以快速开发。
缺点:
- 由于是基于WebView的混合APP,在运行效率上与原生还是有差距。
- 各个平台上的布局和操作设置都是一样,没有根据平台习惯调整。
- 在调用设备传感器或需要原生代码的API时,只能靠插件。如果这种调用太多,效率会比较低。如果自己写插件需要懂各个平台原生代码。
- 应用布局风格上自由度较小。
React Native
Facebook 旗下产品, 从React.js框架衍生而来。语法和React.js结构相似。适合有React.js基础的开发者或是追求APP运行效率的产品。
优点:
- 三大框架中运行效率最高。
- 风格、布局自由度高。
- 可以在原生APP项目的基础上用React Native继续扩展。
- 可以通过无线局域网的方式调试真机。
缺点:
- 15%的代码需要根据平台调整。需要了解一些各个平台的语言
- 对比Ionic封装的统一风格的组件,需要更多的时间自行设计。
- 最初为IOS设计,对Android平台支持还不太完善,可能需要更多的代码。
NativeScript
我感觉最好,最有潜力的框架。100%可以用前端代码编写,框架内自动编译成原生代码。让我最为吃惊的是,他可以用js直接编写java代码。因为我在项目中加入了第三方jar包,框架内可以js无缝对接。但最后我还是放弃了此框架,因为Debug js封装的java代码太麻烦了,特别是当引入第三方jar包的时候。希望后续官方能够改善!
优点:
-100%前端代码编写
-可选择集成angularjs框架,方便代码迁移
-原生封装组件,运行效率高
-以js封装原生代码,可与第三方原生lib无缝对接
缺点:
-界面布局、组件运用需要重新学习,成本较高
-调试原生代码困难
-生成的安装文件较大
-开发者少,网上解决方案稀缺