鸟巢如何更简单更快的开发Native App

简介:

该文章来自于阿里巴巴技术协会(ATA)精选文章。

导读:Native向左,HTML5向右,两者都是为了解决移动应用的问题,各有优势劣势。为结合HTML5开发便利动态性强和Native体验佳性能优的特点,让未来趋势和现实要求结合,鸟巢(Birdnest Native),一种全新的Native APP开发模式,应运而生。

背景:通过下面这段文字向大家介绍一下鸟巢,以及简单分析鸟巢的优势和劣势,鸟巢的适用场景和解答对鸟巢的疑问。欢迎大家参与讨论。先通过一段简单的视频演示鸟巢的实现效果:


什么是鸟巢

鸟巢(Birdnest native),一种通过前端技术扩展Native动态能力的解决方案。运用HTML5+CSS+JavaScript这些前端技术只是为了降低接入门槛。鸟巢为Native APP,提供的是一套从前端到后端的整体方案。技术目标是:
1.将Native页面开发难度简化为前端HTML5页面开发;
2.提供媲美传统Native的用户体验;
3.将业务复杂度放在服务端,可以通过动态推送实现业务功能更新。

1429787640_html5_128 + 1429787785_social_style_3_css3_128 + 1429787868_javascript_128 -> birdnest_256
图1、运用前端技术进行鸟巢Native APP开发

有了鸟巢,开发Native APP页面和开发一个HTML5页面一样简单:
editor
图2、鸟巢页面代码和Native效果

鸟巢的特点

动态能力是鸟巢的初衷,鸟巢打造了从前端到后端的整体动态能力输出方案,形成了一个闭环,这是它最重要的特点。采用这种设计是为了,降低接入门槛,降低学习成本。

鸟巢参数

方案 支持平台 语言 布局方式 扩展性 动态能力 体积
鸟巢 Web、iOS、android HTML5+CSS+JavaScript CSS Layout+Flex box Bridge+Native Module 服务端客户端整体动态方案 android:650K,iOS:800K

从支持平台(Android、iOS、Web),语言灵活度(私有 or 标准协议),布局方式能力(自定义 or CSS Layout)、扩展性(自定义 or Bridge+Native Module)和动态能力(自定义 or 纯客户端方案 or 客户端服务端整体方案)五个角度分析方案的优缺点。每个角度分成3级,由内到外代表能力的从低到高。

鸟巢对比

c_reactc_weappc_dynativec_beeframework
图3、业内方案对比

从实际情况看来,鸟巢无论是在系统支撑上(iOS5+支持,Android同步支持),入门门槛上(了解HTML5即可上手),还是整体配套上(客户端服务端整体解决方案)都超出了其他几种方案。鸟巢的整体解决方案,使应用方可以专注于UI开发,而无需考虑动态更新相关的客户端和服务端改造。

鸟巢的产生

鸟巢的demo版有用过自定义协议,在经历了私有协议的反复折磨后,最终果断放弃。转而选择采用业界前端标准的子集。

  • Layout的选择:在2014年底确认采用CSS Layout和Flex Box来重新设计实现,让Layout变得简单起来,以前通过线性布局和水平垂直布局实现的种种问题,都迎刃而解。
  • 脚本库的选择:在果断放弃接受范围窄的脚本库后,我们选型了一个性能佳体积小的JS库,iPhone和Android采用同一套JS库,大大降低了鸟巢核心的开发成本,提供了一个稳定可控的鸟巢核心。
  • 页面协议的选择:选择HTML5来做页面描述,遵守Chrome事实标准后,问题都消失了。如果选择私有JSON页面协议,开发一个工具来编辑维护JSON页面,工作量巨大,效果也不佳。

鸟巢的优势

依托前端开发技术,获得Native用户体验;遵守行业标准,学习门槛低;客户端服务端整体方案,改造接入简单;重后端设计,减少客户端升级依赖;

标准化

语法

以标准的HTML5、CSS和JavaScript语法为唯一标准语法,无私有语法协议;

私有协议,会让开发者在最开始就望而生畏。协议本身,会不断的随着业务需求的驱动增加修改。团队人员的变动和衡量标准的不一,会让协议本身都会成为一种负担。

实现效果

Chrome浏览器是衡量语法是否标准的唯一标杆,鸟巢展示效果保持和Chrome一致,无需关心多浏览器兼容性问题;

Chrome √ safari ×
图4、与Chrome展示效果保持一致

开发效率

上手快

Easy to learn:尽管鸟巢从实际需求及性能考量,只实现了里面的一个子集,这带来了一定的学习成本,但是成本很低。一个刚刚毕业的新人,一周以后就能够高质量的做出各式满足视觉要求的页面,培养成本远远低于一个Native开发工程师。

易复用

Write once,run anywhere。这是很多程序员的梦想。由于采用Chrome标准,因此在iPhone上实现的页面,放在Android上也是完全ok的。只是在实际工作中,不同平台视觉要求可能会有差异,其中一个平台可能需要在另一个平台的页面基础上进行二次开发,但是效率也已经提升了很多。从鸟巢实际情况看,开发效率提升到了原有的1.5~2倍。

使用成本低

改造成本

鸟巢对原有APP方案的侵入性很低:鸟巢是为了替代Native APP中的动态部分,并不是为了替代Native APP本身。应用方根据自身的不同需求,可以选择整个APP、APP中的部分页面或APP中页面的部分进行托管。

维护成本

鸟巢是一套整体解决方案,客户端解决页面问题,服务端解决页面的动态维护管理问题。使用方无需单独考虑页面的维护管理。

fullconnect
图6、APP使用鸟巢的调用关系图

稳定可靠性

鸟巢这种方式目前已经接入了:支付、线下、搜索、服务窗等业务,鸟巢的原型版本在过去的一年里,托管了整个支付宝手机端的多个页面,每天有亿级的Native页面通过这种方式支撑。

screen
图7、接入的应用场景

鸟巢的适用场景

鸟巢并不是一个万能的事物,而是在有动态需求的地方,可以很方便简单的解决这个需求。在缺乏客户端开发资源的情况下,可以通过前端技术获得Native体验。鸟巢本身不是为了做一个APP,而是为了解放APP本身的限制。

全业务托管

整个APP的所有页面全部托管给鸟巢,鸟巢负责全部页面的渲染、管理、更新、缓存。如:支付宝钱包支付采用了这个方式接入鸟巢。这个方案的好处就是:通过业务服务端发布和鸟巢页面管理,整个APP都处于可控状态,随时可以进行业务上新、业务变更和bug修复,业务可控性达到最佳。

full
图8、全业务托管样例

全屏页面托管

整个APP中,只有有动态变化需求的部分页面,才托管给鸟巢。鸟巢负责这部分页面的渲染、管理、更新、缓存。如:支付宝全局搜索采用这个方式接入了鸟巢。这个方案的好处是:在原有APP基础架构上,只用针对性的接入鸟巢,就可以把变更频繁的业务沉淀到服务端,降低业务变更对APP升级的依赖性。

part
图9、全屏页面托管样例

页面部分托管

整个APP中,在一个框架相对稳定的页面里,只有页面的一部分区域是需要动态变化的。鸟巢负责这个页面部分的渲染、管理、更新、缓存。如:支付宝线下采用这个方式接入了鸟巢。

对鸟巢的疑问

有很多同学问我,鸟巢是不是这样的,或者这样的?这里统一解答一下。

平台无关性

理论上,以鸟巢的方案实现了iPhone的页面,Android在展现上也是OK的,多平台共用一套模板也是鸟巢鼓励的方向。但并不强制,如果视觉风格本身两个平台有差异,其中一个平台就可以在另外一个平台的模板基础上进行二次开发。总的来说,开发速度是可以提升为原来的1.5~2倍。

鸟巢绝不是另一个的浏览器

鸟巢绝不是另一个的浏览器!鸟巢与Webview没有任何关系。鸟巢不会发展H5应用,更不会在此基础上形成应用生态。只是用低门槛的方式,适应界面布局和有限流程的变化需求。
只是借鉴使用了HTML及CSS的语法,整体的Layout及DOM结构与浏览器的方案和策略完全不同,每一个标签最终都会映射到一个Native控件上,引入了一个完整的JS库,通过Bridge将Native代码与JS进行桥接。

如何保障性能

鸟巢采用H5标准的子集,并抛弃了浏览器的DOM渲染模式,自行设计了一套Layout方法。同时,针对移动设备本身的特点,严格选择了协议的子集来实现,从而保证不会像浏览器那样臃肿。

目录
相关文章
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
660 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
732 1
|
5天前
|
移动开发 小程序 PHP
校园圈子论坛系统采取的PHP语音和uni账号开发的小程序APP公众号H5是否只需要4800元?是的,就是只需要4800元
关于校园圈子论坛系统采用PHP语言和uni-app开发的小程序、APP、公众号和H5是否仅需4800元这个问题,实际上很难给出一个确定的答案。这个价格可能受到多种因素的影响
|
1天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
22天前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
28天前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
1月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
1月前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
2月前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
2月前
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
439 0

热门文章

最新文章