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

目录
相关文章
|
5天前
|
JSON 缓存 前端开发
HarmonyOS NEXT 5.0鸿蒙开发一套影院APP(附带源码)
本项目基于HarmonyOS NEXT 5.0开发了一款影院应用程序,主要实现了电影和影院信息的展示功能。应用包括首页、电影列表、影院列表等模块。首页包含轮播图与正在热映及即将上映的电影切换显示;电影列表模块通过API获取电影数据并以网格形式展示,用户可以查看电影详情;影院列表则允许用户选择城市后查看对应影院信息,并支持城市选择弹窗。此外,项目中还集成了Axios用于网络请求,并进行了二次封装以简化接口调用流程,同时添加了请求和响应拦截器来处理通用逻辑。整体代码结构清晰,使用了组件化开发方式,便于维护和扩展。 该简介概括了提供的内容,但请注意实际开发中还需考虑UI优化、性能提升等方面的工作。
49 11
|
3天前
|
前端开发 数据库 UED
uniapp开发,前后端分离的陪玩系统优势,陪玩app功能特点,线上聊天线下陪玩,只要4800
前后端分离的陪玩系统将前端(用户界面)和后端(服务器逻辑)分开开发,前者负责页面渲染与用户交互,后者处理数据并提供接口。该架构提高开发效率、优化用户体验、增强可扩展性和稳定性,降低维护成本,提升安全性。玩家可发布陪玩需求,陪玩人员发布服务信息,支持在线聊天、预约及线下陪玩功能,满足多样化需求。[演示链接](https://www.51duoke.cn/games/?id=7)
|
9天前
|
供应链 搜索推荐 API
1688APP原数据API接口的开发、应用与收益(一篇文章全明白)
1688作为全球知名的B2B电商平台,通过开放的原数据API接口,为开发者提供了丰富的数据资源,涵盖商品信息、交易数据、店铺信息、物流信息和用户信息等。本文将深入探讨1688 APP原数据API接口的开发、应用及其带来的商业收益,包括提升流量、优化库存管理、增强用户体验等方面。
56 6
|
10天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
38 3
|
16天前
|
移动开发 小程序 PHP
校园圈子论坛系统采取的PHP语音和uni账号开发的小程序APP公众号H5是否只需要4800元?是的,就是只需要4800元
关于校园圈子论坛系统采用PHP语言和uni-app开发的小程序、APP、公众号和H5是否仅需4800元这个问题,实际上很难给出一个确定的答案。这个价格可能受到多种因素的影响
49 8
|
12天前
|
人工智能 小程序 数据处理
uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!
近期,多家康复机构咨询AI运动识别插件是否适用于肢力运动受限患者的康复锻炼。本文介绍该插件在康复锻炼中的应用场景,包括康复运动指导、运动记录、恢复程度记录及过程监测。插件集成了人体检测、姿态识别等功能,支持微信小程序平台,使用便捷,安全可靠,帮助康复治疗更加高效精准。
|
2天前
|
安全 算法 机器人
双重防护!红娘相亲app搭建开发,婚恋交友系统登录方式,密码+验证码的优势
在婚恋交友系统中,密码和验证码是两种重要的安全措施。密码用于验证用户身份,应设置为复杂组合以防止未经授权的访问;验证码则通过图形或字符识别,防止自动化攻击如暴力破解和注册机器人。两者同时开启可显著提高安全性,防止暴力破解和自动化注册,提升用户信任感。建议要求强密码、定期更新验证码样式,并在可疑登录时增加验证码复杂性。这样既能保障用户信息安全,又兼顾了用户体验。 ![交友11111.jpg](https://ucc.alicdn.com/pic/developer-ecology/hy2p6wcvgk4oe_c9eb8d6eb8144866b0cd1d96ffb0c907.jpg)
|
1月前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
1月前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
1月前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!

热门文章

最新文章