鸟巢如何更简单更快的开发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方法。同时,针对移动设备本身的特点,严格选择了协议的子集来实现,从而保证不会像浏览器那样臃肿。

相关文章
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
126 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
12天前
|
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
79 15
如何在苹果内购开发中获取App Store Connect API密钥-共享密钥理解内购安全-优雅草卓伊凡
布谷一对一直播源码开发:阿里云视频语音通话社交交友App的必备功能
在当今移动社交领域,一对一视频和语音通话功能已成为用户期待的基础配置。从熟人社交到陌生人交友,从专业咨询到情感陪伴,实时音视频互动能力直接决定了社交App的用户留存和市场竞争力。山东布谷科技将深入探讨一对一直播源码开发高质量一对一视频和语音通话功能的关键要素和技术实现方案。
布谷一对一直播源码开发:阿里云视频语音通话社交交友App的必备功能
【一步步开发AI运动APP】一、写在最前
本文介绍新系列【一步步开发AI运动APP】,旨在帮助开发者突破小程序限制,打造性能更强、体验更佳的AI运动APP。相比小程序,APP可充分利用CPU/GPU算力,实现高精度人体检测、多人检测等复杂功能。本系列基于跨平台框架`uni`及扩展插件`uni AI运动识别插件`,适合有小程序开发经验的开发者。内容涵盖抽帧、人体识别、运动分析、姿态交互等,逐步进阶实现完整AI运动APP,并支持多手机平台发布。
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
1980 20
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
74 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
直播App程序源码开发前期功能调研:运营角度思考如何有利于推广运营获利
在直播App程序源码开发的前期,功能调研至关重要。除了技术实现的可行性,更需要从运营角度出发,思考哪些功能能够助力推广运营,最终实现获利。山东布谷科技从运营角度,对直播App功能进行调研分析
小游戏源码开发之可跨app软件对接是如何设计和开发的
小游戏开发团队常需应对跨平台需求,为此设计了成熟的解决方案。流程涵盖游戏设计、技术选型、接口设计等。首先明确游戏功能与特性,选择合适的技术架构和引擎(如Unity或Cocos2d-x)。接着设计通用接口,确保与不同App的无缝对接,并制定接口规范。开发过程中实现游戏逻辑和界面,完成登录、分享及数据对接功能。最后进行测试优化,确保兼容性和性能,发布后持续维护更新。
语音app系统软件源码开发搭建新手启蒙篇
在移动互联网时代,语音App已成为生活和工作的重要工具。本文为新手开发者提供语音App系统软件源码开发的启蒙指南,涵盖需求分析、技术选型、界面设计、编码实现、测试部署等关键环节。通过明确需求、选择合适的技术框架、优化用户体验、严格测试及持续维护更新,帮助开发者掌握开发流程,快速搭建功能完善的语音App。

热门文章

最新文章