原生移动端应用与混合移动端应用的优劣
原生代码开发的应用
优点:
运行效率高,界面响应速度快,动画效果流畅,用户体验较好。
缺点:
太死板,只能通过修改原生代码来改变界面中的内容,布局。如果是iOS应用,光是走更新上架就需要至少两天时间。
技术门槛较高,尤其是iOS,还需要使用objective-c或swift。
不跨平台,一个应用需要Android和iOS两套代码,需要两个技术团队来维护。
混合应用:
优点:
能够根据服务端返回的内容随意修改应用中的内容,甚至是布局,甚至是添加新功能。灵活,技术门槛低,一个前端开发工程师也是可以快速的学会开发移动应用的。
跨平台开发,write once ,run anywhere。代码只需要写一次就可以在不同平台上运行。
缺点:
应用是网页代码,html和js写出来的,在一些对计算要求比较高的操作上,比如动画效果会比原生代码开发的应用差一些。
不过,一些好的混合开发框架都会考虑到这个事情,也会在这个方面极力的改善自己框架在手机上的运行效果。比如react-native和weex。全都是js代码写成的应用,界面中的元素只是一层虚拟dom,等到需要打包时,在把js逻辑,界面布局,样式打包在一起,会大大提高运行效率。
一些好的混合开发框架
react-native,与之对应的还有前端框架react,编写也是使用reactjs来编写。
weex,支持vue和rax前端框架,类似于react-native,编写是使用vue.js的语法来编写。
flutter,与react-native和weex不同,他是自己来维护一套UI,而不是像react-native和weex,把virual dom通过渲染指令使用原生系统提供的UI来渲染界面。具体效果怎么样还有待研究。
以下这些框架都是通过webview来实现移动端功能,直接编写html和css,运行性能完全受webview的限制。
ionic,cordova,
mui,DClound推出的移动端开发框架,优点是有自己的开发工具HBuilder。
jquery mobile,jquery为了适应在移动端应用中使用而推出的框架。
各种框架都有为了原生效果而开发的原生插件。
一款好的应用应该是原生与混合共同使用的应用,既要兼顾运行效率又要兼顾灵活性。如果未来,混合应用能够做到在运行效率上越来越接近原生应用,那么混合应用一定会发展的越来越好。未来应该是一个人人可编程的社会,未来的编程语言也应该是从复杂到简化的过程。为了实现这一目标,混合移动应用的发展壮大是可以预见的。
几个列子:
支付宝每年双11活动都会在首页给出活动展示,而我们又没有重装应用,说明支付宝的首页应该就是使用网页来实现的,但是可以肯定的是,他的支付流程,指纹验证等环节肯定是原生代码写的,因为这样可以提高安全性,不至于页面被篡改而引起安全性问题。
滴滴前一段时间出的顺风车事件,导致顺风车功能被滴滴下架。这样一个突发的事情,我们并没有重新安装滴滴应用才可以不能使用滴滴顺风车业务,而是点进去就会弹出提示,滴滴顺风车业务已经无限期下线,说明这个页面也是网页做出来的。
这两个例子突出说明了混合移动开发的灵活性。