前言
技术发展日新月异,前端技术迭代速度更是快的飞起来,微信小程序,公众号,H5,ReactNative和各类前端框架,都能快速的开发一个移动端产品。
在看原生开发,需要IOS,Android两倍的人力,近几年培训机构越来越多,也越来越多的人投身到码农大军,加之需求被公众号,小程序分割,导致原生开发者工作越来越难找。现在面试都要求至少会一点混编的知识,因此为了讨口饭吃!是时候丰富下自己的技术栈了!
内容
原生开发:基于JVM,原生Android代码
Web开发:一个WebView,全部代码都是Html
混合开发:简单来说就是原生应用里使用一些H5,RN等技术。
比如电商产品,应用框架是Java写,商品详情用WebView嵌一个H5的页面,方便随时更新。
混编和原生开发的比较
Name | 优势 | 劣势 |
---|---|---|
原生 | 开发人员多;性能可控;和系统层交互 | Android、IOS 两套人力;在线更新比较麻烦 |
混编 | 节约成本;更新灵活 | 性能体验上没原生好;和系统层交互麻烦 |
概括下就是两点:1 原生成本高,应用体验好 2 混编成本低,应用体验欠缺
常见的混编技术比较
框架名 | 优势 | 劣势 |
---|---|---|
PhoneGap(Cordova) | 由Adobe公司和Apache基金会共同支持; 开发门槛低,兼容性不错; | 浏览体验在部分机型会有卡顿; |
Xamarin | 可以使用C#语言开发; 本地打包,不在受其他平台服务器的制约; 调试方便,vs开发工具打断点容易; | 国内资料少,资料都是国外; 应用群体少,成熟解决方案少; 开发成本高,C#程序员也来越少也越来越难招; |
DeviceOne | 开发效率极高,组件拖拉拽就可以; 开发门槛低,会js即可; 执行效率高; | 发质量、开发的功能,受组件的制约,组件没有的功能,你app也实现不了; deviceone的打包次数和下载次数有限制,超出的需要收取费用; 在线打包,服务器偶尔也会挂; 使用的人不多,网上的资料/替代方案相对匮乏; |
DCloud | 门槛比较低(懂Js和Html的程序员对照着api很快能够上手); 有一整套的解决方案,开发工具+UI库; | 传统H5技术,在性能上尤其是低端android机上有瓶颈,高端机操作上也有明显的延迟; 在线打包,服务器经常挂; 文档不是很全 |
React Native | FaceBook、JD 维护支持; 开发门槛低(会js稍加学习jsx语法即可); 资料多,解决问题成本低; 开发效率高,第三方集成组件多; 有好的开发生态圈,性能好,背靠npm有万级以上的优秀开源三方组件支持; | 初学者,配置较多,开发环境配置不是很方便 Facebook的更新频率比较快,版本存在一定的差异,有些老的资料可能并不适用于现在的版本; 基本只支持两端,WEB端写法会有差异; |
Weex | alibaba 维护支持; 三端支持; | 文档欠缺,上手比较难 |
目前使用较多的是Weex和ReactNative,别人都在用,我为啥不试试?
Weex和ReactNative的比较
不想看的我摘录出一些大家可能比较关心的问题:
Name | Weex | ReactNative |
---|---|---|
Android版本支持 | API14以上可用 | API16以上可用 |
跨平台 | 支持Android iOS web三个平台 | 支持Android iOS两个平台,需要自己扩展去支持web |
总结
- 框架很多,基础是要熟悉前端开发知识,H5,CSS,JS
- 混合开发可以提升迭代速度和开发效率
- 今后的团队基本会使用30% 原生 + 70% 的混编
- 完全的跨平台只会是什么都能做,但并不是什么都做得好
- 如何选择需要结合具体的项目需求
也看了网上各路同行的留言回复,各大论坛对混编和各种框架的褒贬不一,可能要自己用过之后才知道好坏,但是一门技术最重要的是减少工作量,提升效率。