一张图,可以很直观的看出Native app 、Web app和Hybrid app三者之间的区别
图片描述
1)Native APP:Native Code编程,代码编译之后以2进制或者字节码的形式运行在OS上,直接调用OS的Device API;
2)Web APP,以HTML+JS+CSS等WEB技术编程,代码运行在浏览器中,通过浏览器来调用Device API(取决于HTML5未来的支持能力):
3)Hybrid APP,部分代码以WEB技术编程,部分代码由某些Native Container承担(例如PhonGAP插件,BAE插件),其目的是在HTML5尚未完全支持Device API和Network API的目前阶段,承担这部分职责。
总体来讲,Hybrid App是同时采用网页语言与程序语言进行开发,通过不同的应用商店进行打包与分发,应用的特性更接近原生应用而且又区别与Web应用。但是在开发过程中同时使用了网页语言,所以开发成本与难度大大降低。也就是说Hybrid App兼具了Native App与Web App两者的诸多优点。
Hybrid App有以下的特性:
开发时可能不采用或者大部分不采用原生语言,但是却有所有原生应用的特性;
架构方案会和原生有出入,基本由工具而定;
具有跨平台特性;
一般开发相对原生开发的方式要简单。
工具方面,我们可以使用Angular.js用于双向数据绑定和网络请求以及视图管理等工作,使用require.js来实现模块化开发,帮你组织代码。使用jade模板引擎,关于jade这篇文章介绍得挺好的:http://segmentfault.com/a/1190000000357534
谈谈ionic和react native
最近,Fackbook开源了react native,其宣传 “Learning once, write anywhere” 。
ionic除了提供css框架以外,还提供js UI 库,ionic遵循了mvc的设计模式
React Native 可以基于用来构建用户界面的React.js来开发iOS和Android原生应用。
React Native 使你能够运用 js 和 React 的相关知识,基于本地平台构建世界级的应用。
React Native 关注的焦点是开发者能够高效地开发所有相关平台的应用 - 学习一样东西就可以做任何事情。
js框架选择原则
需要使用大量UI控件,表单密集型的应用
◦ jQuery Mobile
◦ Sencha Touch
◦ Ionic
UI较单一 ,注重性能,注重页面特效的应用(淘宝的)
◦ 使用多个小型js库
◦ zepto.js作为底层库,兼容jquery语法
◦ 使用sea.js进行模块的管理和发布
◦ 使用backbone.js为基础的MVC架构,用来剥离应用的数据部分
◦ 使用underscore.js做为前端模板引擎(或使用juicer)