什么是 Native、Web App、Hybrid、React Native 和 Weex?
(点击上方公众号,可快速关注)
来源:zwwill_木羽
segmentfault.com/a/1190000011154120
一句话概要
Native、Web App、Hybrid、React Native(后面以RN简称)、Weex 间的异同点,后期同步 小程序 和 PWA。
App常用开发模式简介
此处App为应用,application,并非我们通常讲的手机App。
常用的几种APP开发模式-脑图:http://naotu.baidu.com/file/6af15fcbb72f89926043779811b1ea44?token=df0378691ecdcef2
Native App
传统的原生App开发模式,有iOS和aOS两大系统,需要各自语言开发各自App。
优点:性能和体验都是最好的。
缺点:开发和发布成本高。
举个栗子:网易管家App (https://id.163.com/gj/)
应用技术:Swift,OC,Java。
WebApp
移动端的网站,常被称为H5应用,说白了就是特定运行在移动端浏览器上的网站应用。一般泛指 SPA(Single Page Application)模式开发出的网站,与MPA(Multi-page Application)对应。
优点:开发和发布成本最低。
缺点:性能和体验不能讲是最差的,但也受到浏览器处理能力的限制,多次下载同样会占用用户一定的流量。
举个栗子:网易管家APP(https://id.163.com/gj/)
应用技术:ReactJS,RegularJS,VueJS等等。
Hybrid App
混合模式移动应用,介于Web App、Native App这两者之间的App开发技术,兼具“Native App良好交互体验的优势”和“Web App跨平台开发的优势”(百度百科解释)
主要的原理是,由Native通过JSBridge等方法提供统一的API,然后用Html+Css实现界面,JS来写逻辑,调用API,最终的页面在Webview中显示,这种模式下,Android、iOS的API一般有一致性,Hybrid App所以有跨平台效果。
优点:开发和发布都比较方便,效率介于Native App、Web App之间。
缺点:学习范围较广,需要原生配合。
举个栗子:FanReact,我爱我家App,东方航空App,富国基金-富国钱包App
应用技术:PhoneGap,AppCan,Wex5,APICloud等。
React Native App
Facebook发现Hybrid App存在很多缺陷和不足,于是发起开源的一套新的App开发方案RN。使用JSX语言写原生界面,js通过JSBridge调用原生API渲染UI交互通信。
优点:效率体验接近Native App,发布和开发成本低于Native App。
缺点:学习有一定成本,且文档较少,免不了踩坑。
举个栗子:Facebook、Youtube、Discord、QQ、百度等等。
Weex App
阿里巴巴开发团队在RN的成功案例上,重新设计出的一套开发模式,站在了巨人肩膀上并有淘宝团队项目做养料,广受关注,2016年4月正式开源,并在v2.0版本官方支持Vue.js,与RN分庭抗礼。
优点:单页开发模式效率极高,热更新发包体积小,并且跨平台性更强。
缺点:刚刚起步,文档欠缺;社区没有RN活跃,功能尚不健全,暂不适合完全使用Weex开发App。
举个栗子:淘宝、天猫、阿里云、优酷、闲鱼、饿了么等。
Native App
Native App是一种基于智能手机本地操作系统如iOS、Android、WP并使用原生程式编写运行的第三方应用程序,也叫本地app。一般使用的开发语言为Java、C++、Objective-C。
自iOS和Android这两个的手机操作系统发布以来,在互联网界从此就多了一个新的名词:App意为运行在智能的移动终端设备第三方应用程序。
Native App因为位于平台层上方,向下访问和兼容的能力会比较好一些,可以支持在线或离线,消息推送或本地资源访问,摄像拨号功能的调取。但是由于设备碎片化,App的开发成本要高很多,维持多个版本的更新升级比较麻烦,用户的安装门槛也比较高。但是比较乐观的是,AppStore培养了一种比较好的用户付费模式,所以在Apple的生态圈里,开发者的盈利模式是一种明朗状态,其他market也在往这条路上靠拢。
优势
相比于其它模式,提供最佳的用户体验,最优质的用户界面,最华丽的交互
针对不同平台提供不同体验
可节省带宽成本,打开速度更快
功能最为强大,特别是在与系统交互中,几乎所有功能都能实现
劣势
门槛高,原生开发人才稀缺,至少比前端和后端少,开发环境昂贵
无法跨平台,开发的成本比较大,各个系统独立开发
发布成本高,需要通过store或market的审核,导致更新缓慢
维持多个版本、多个系统的成本比较高,而且必须做兼容
应用市场逐渐饱和,怎么样抢占用户时间需要投入大量时间和金钱,这也导致“僵尸”App的增多
WebApp
说到Web App 不少人会联想到 WAP,或者有人认为,WAP就是WebApp,其实不然。
WebApp 与 WAP 最直接的区别就是功能层面。WAP更侧重使用网页技术在移动端做展示,包括文字、媒体文件等。而Web App更侧重“功能”,是使用网页技术实现的App。总的来说,Web App就是运行于网络和标准浏览器上,基于网页技术开发实现特定功能的应用。
响应式的大部分技术都是为实现WebApp能适配多类客户端而设计的。
Web网站一般分两种,MPA(Multi-page Application)和SPA(Single-page Application)。而WebApp一般泛指SPA形式开发出的网站。这样更像是一个App。
优势
可以跨平台,调试方便
无需安装,不会占用手机内存,而且更新速度最快
不存在多版本问题,维护成本低
临时入口,可以随意嵌入
劣势
依赖于网络,第一次访问页面速度慢,耗费流量
受限于手机和浏览器性能,用户体验相较于其他模式最差
功能受限,大量移动端功能无法实现
入口强依赖于第三方浏览器,且只能以URL地址的形式存在,导致用户留存率低(优点即缺点)
Hybird App
混合开发,也就是半原生半Web的开发模式,由原生提供统一的API给JS调用,实际的主要逻辑有Html和JS来完成,最终是放在webview中显示的,所以只需要写一套代码即可达到跨平台效果,另外也可以直接在浏览器中调试,很方便。最重要的是只需要一个前端人员稍微学习下JS api的调用即可。
Hybird App 的较早实践者是PhoneGap,随后遍地开花,如Titanium、Salama、WeX5、Kerkee和国内的AppCan,项目各有各的实现方式,大致的原理基本相同。有幸在AppCan上海总部参与过一段时间的学习研究,如下大致简介:
AppCan是基于HTML5技术的Hybird跨平台移动应用开发工具。开发者利用Html5+Css3+JavaScript技术,通过AppCan IDE集成开发系统、云端打包器等,快速开发出Android、iOS、WP平台上的移动应用。
AppCan的平台构成:
在实际的APP开发中,AppCan可以完成大部分的工作量,如图示:
AppCan将App底层复杂的原生功能封装在引擎、插件中,开发者仅需调用接口、打包编译,就可以获得原生功能;灵活的插件扩展机制。
开发者可以像开发WebApp一样开发app的视觉UI,以及绝大部分的交互,当需要使用原生功能(如摄像头,陀螺仪等功能)时,只需要调用官方的API就可以轻松实现Native的效果。至于JS和Native的通信,常用的有URL监听和绝大部分Hybrid厂商使用的JSBridge通信,两者原理相近。
关于JsBridge的原理详解,可见http://blog.csdn.net/xiangzhihong8/article/details/66970600
在Hybird概念盛行的时候,国内外各大公司也参与了探索,国外代表有Facebook、google、亚马逊,国内的有腾讯、阿里巴巴、网易等,慢慢的他们发现Hybird严重受限于WebView的解析渲染效率,于是Facebook开始了他的类原生的研究探索。
React Native App
请移驾:【笔记】React Native 快速入门笔记(https://segmentfault.com/a/1190000010989345)。
Weex App
请移驾:网易严选App感受Weex开发(https://segmentfault.com/a/1190000011027225)。
【关于投稿】
如果大家有原创好文投稿,请直接给公号发送留言。
① 留言格式:
【投稿】+《 文章标题》+ 文章链接
② 示例:
【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/
③ 最后请附上您的个人简介哈~
觉得本文对你有帮助?请分享给更多人
关注「前端大全」,提升前端技能
什么是 Native、Web App、Hybrid、React Native 和 Weex?相关推荐
- Hybrid App 和 React Native 开发那点事
版权声明:本文为博主原创文章,未经博主允许不得转载. 简介:Hybrid App(混合模式移动应用)开发是指介于Web-app.Native-App这两者之间的一种开发模式,兼具「Native App ...
- 如何将React App转换为React Native
I have been working on a lot of mobile projects lately - including Cordova, PhoneGap, React Native, ...
- Web前端:React Native Web与React — 比较指南
React 是Facebook开发的用于构建交互式用户界面的JavaScript库.React 在 Apache 许可下作为开源软件提供,可用于个人和商业网站.客户端 Web 应用程序和服务器应用 ...
- 开发跨平台app推荐React Native还是flutter?
嗯...这个问题十分不好回答啊(捋下鱼须).闲鱼作为flutter领域的先驱者,以及fish_redux.flutter_boost等当红flutter库的作者,当然是欢迎广大的开发者多多使用flut ...
- 适合做app的前端框架有哪些?webAPP移动端App:react native、weex、flutter
- 基于 React Native 的 58 同城 App 开发实践
作者简介: 彭飞,58 同城 iOS 客户端架构师.专注于新技术的研发,主要负责 App 端组件化架构以及性能优化,并已推广 React Native 在 58 同城 App 中业务场景的应用.在 M ...
- React Native制作仿美团APP总结
最近学习了一个网上的React Native项目,利用React Native制作一个类似于美团的App,项目属于对之前React Native常用组件的基本使用,但是仍有一些关键点值得记录.最后做成 ...
- 小谈React、React Native、React Web
React有三个东西,React JS 前端Web框架,React Native 移动终端Hybrid框架,React Web是一个源码转换工具(React Native 转 Web,并之所以特别提出 ...
- 技术实践丨React Native 项目 Web 端同构
摘要:尽管 React Native 已经进入开源的第 6 个年头,距离发布 1.0 版本依旧是遥遥无期."Learn once, write anywhere",完全不影响 Re ...
- 手机app开发可选技术——React Native
百度百科 React Native是Facebook于2015年开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架React在原生移动应用平台的衍生产物,支持IOS和安卓两大平台.RN ...
最新文章
- css菜单缓慢滑动_如何使用HTML,CSS和JavaScript构建滑动菜单栏
- EIRP/ERP(有效辐射功率)基本概念
- 在线支付之风控系统架构选型
- 20155220吴思其 实验2 Windows口令破解
- 《论道HTML5》内容技术分享活动
- 三维数据平滑处理_VTK图像处理(二)--vtkPolyData数据处理
- 雅礼集训Day3-难题选讲
- SVN部署与简单使用
- office提示 Excel 4.0函数以定义名称保存
- 通达OA前台任意用户登录漏洞复现
- Simulink飞行动力学教程
- 2课:单片机引脚介绍
- 机器学习8-误差逆传播算法BP的认识
- Python练习题答案: 纳特拼音alaphabeta【难度:1级】--景越Python编程实例训练营,1000道上机题等你来挑战
- linux 命令修改IP(最有效方法)
- 【扫盲】Pulse消除马赛克(老司机福利)
- linux下的清屏方法
- 红楼梦人物分词及可视化
- golang+uniapp 开发的一套微信小程序电商系统
- 代理对推广网站的四个作用
热门文章
- python实验一_Python实验一
- ROS下UVC免驱高速摄像头图像读取以及利用image_transport进行图像传递
- OLED控制字体和大小
- 【AI】AI入门之Nvidia Jetson平台(一)- Jetson平台介绍
- 计算机类商品零售高速增长,【中银策略】行业景气跟踪:1月纺织服装类商品出口累计同比增14.6%...
- matlab图像处理相关函数
- autojs对话框修改样式
- 爬虫解析库之xpath、Beautifulsoup的对比使用
- Flink 怎么部署安装?
- 访谈报告计算机辅导员,职业访谈の大学辅导员