- Native APP:就是所说的原生开发,Native Code编程,代码编译之后以2进制或者字节码的形式运行在OS上,直接调用OS的Device API;
- Web APP,以HTML+JS+CSS等WEB技术编程,代码运行在浏览器中,通过浏览器来调用Device API(取决于HTML5未来的支持能力):
- Hybrid APP,就是混合开发。部分代码以WEB技术编程,部分代码由某些Native Container承担(例如PhonGAP插件,BAE插件),其目的是在HTML5尚未完全支持Device API和Network API的目前阶段,承担这部分职责。常用的技术就是webview+html5
react native
- React Native 是 Facebook 推出的一个用 javascript语言就能同时编写 ios,android,以及后台的一项技术。用React Native 就是真正意义上的全栈,一个项目从头到尾可以一个人搞定
React Native的优势:
它可以做到实时热更新(就像网页一样,改了一个字体,随时可上线)
-
相对Hybird app或者Webapp:
- 不用Webview,彻底摆脱了Webview让人不爽的交互和性能问题
有较强的扩展性,这是因为Native端提供的是基本控件,JS可以自由组合使用
可以直接使用Native原生的「牛逼」动画(在FB Group这个app里面,面板滑出带一点果冻弹动,面板基于某个点展开这种动画随处可见,这种动画用Native code来做小菜一碟,但是用Web来做就难上加难)。
- 不用Webview,彻底摆脱了Webview让人不爽的交互和性能问题
-
相对于Native app:
- 可以通过更新远端JS,直接更新app,不过这快成为各家大型Native app的标配了…
劣势
- 扩展性仍然远远不如web,也远远不如直接写Native code(这个不用废话解释了吧)
- 从Native到Web,要做很多概念转换,势必造成双方都要妥协。最终web要用一套CSS的阉割版,Native要费劲地把这个阉割版转换成native原生的表达方式(比如iOS的Constraint\origin\Center等属性),两边都会不爽