问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

跨端开发面面谈之基于WebView的Hybrid开发模式

发布网友 发布时间:2022-09-15 12:32

我来回答

1个回答

热心网友 时间:2023-10-09 03:38

跨终端移动开发是近期准备总结的一个主题,作为这一系列的开始,首先简单说说基于WebView的Hybrid混合开发模式。

有过混合应用开发经验的同学,对基于WebView的Hybrid开发模式应该不会陌生。借助于原生端各平台的WebView组件,可以实现Native和JavaScript的双向通信,从而将Web App与Mobile App融合起来,开启混合开发的新模式。

基于WebView的Hybrid开发模式到如今已经非常成熟,不再是一个实验性新技术,而是广泛应用在各大厂商的平台型应用如微信、手Q中。

JSBridge作为连接Native和JavaScript的桥梁,是基于WebView的Hybrid开发模式中的关键点。

在了解其通信原理后,再来看JSBridge究竟是什么。从前端角度来看,可能会把JSBridge理解为业务开发过程中,以全局变量注入到WebView中,帮助调用原生API的JavaScript工具库。这样的理解不够准确,按照我的理解,JSBridge不是一个标准的规范,基于原生系统为WebView组件提供的能力,已经可以建立起WebView JavaScript bridge,即使不再做更高程度的封装,也可以完成从Native到JavaScript的双向通信了。

我们所说的JSBridge,是对底层通道的抽象封装,这一过程包括了原生和JavaScript两侧内容,在原生端需要考虑系统API差异,对上层调用提供统一接口,在JavaScript端需要考虑调用方式,请求管理等内容。JSBridge的设计实现已经是成熟技术了,其设计可以参考 In-depth Profiling of JSBridge 、 Hybrid APP架构设计思路 ,一个安卓端完整JSBridge实现可以参考 JsBridge实现 。

目前,基于WebView的Hybrid开发模式非常成熟,广泛应用于各类平台型App中。实现一个完善的JSBridge是在现有App中集成使用Hybrid开发模式的基础,在完成这一基础设施建设后,大家继续在各个方向深挖,在不同的维度不断优化性能和体验。

多数App的Hybrid部分做到上面部分,已经有了还不错的体验。在我的了解中,空间团队在上面基础上继续优化给出的是当前做的更好的方案。其主要流程如下图所示,详细内容可以参考 QQ空间前端工程师如何做首屏优化

除了在现有App中集成使用这一开发模式,还可以使用这一技术开发独立App。早期的PhoneGap、Cordova、现在的Ionic,是这一领域较为知名的开发框架。

我司前端技术栈曾以Angular为主,一些App也由前端团队基于Angular技术栈选型Ionic。初入团队曾维护过基于Angular 1.x的Ionic App,用于我司投资顾问服务客户的以IM为主、综合一些其他业务,可以算一个比较复杂的应用。

前端技术背景的同学,采用Ionic框架开发App的学习成本不高。开发过程中仍在沿用前端技术,写的仍是Web App,跑在原生WebView容器中。采用Ionic提供的组件库,可以快速搭建项目界面。其扩展原生的机制也比较方便,如有原生能力的需求,并且没有现成实现的,可以自行封装使用,不过这个过程就需要原生开发同学的参与了。在我们的上述App开发中,主要是安卓端消息推送模块由原生开发同学提供了支持,其余对原生能力的需求如拍照、相册访问等常见需求,都有现成方案。

然而,采用Ionic完成上述应用,也有明显不足的地方。首先是聊天列表方面,我们知道,如微信和QQ聊天窗口,这是一个异构的无限滚动长列表,在进入聊天界面时,一般只加载最近的一屏聊天数据,然后通过滚动加载历史消息。在原生端完成这一需求有各种常见手段,而仅靠Web端技术,在各种折腾后,效果都不尽如人意。其次是动画,这里的动画包括了换页动画和其他动画,流畅程度一般。最后是前端开发通病,要处理浏览器兼容性问题,crosswalk只是一个理论解决方案,其体积*了几乎不会被采用。

Ionic不断迭代,新的版本中依赖新的Angular。新的Angular与Angular 1.x开发体验已经完全不同,如果你还不了解,可以阅读我们团队书籍 揭秘Angular 2 。新的Ionic的开发体验,相比以往也有提升,在其工具链中,提供了拖拽式项目生成工具

同时,Ionic pro提供的开发者工具,为应用整个生命周期提供了完善的支持平台,包括了以下功能,不过,使用需要付费。

站在当下来看,对于前端技术背景开发者来说,如果已有Angular基础,不希望引入过高学习成本,需要快速开发一个复杂程度不算太高、或者对应用性能不是特别敏感的跨终端App,选择Ionic依然是一个可行方案。

然而,既然你已经身在前端领域这样一个技术更迭日新月异的圈子里,还是应该使劲的折腾,关注跨端开发这个主题新的技术热点,接下来我也会继续谈谈在NativeScript、React Native、Flutter的一些体验,可以保持关注。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
有类似xxxholic和恐怖宠物店的漫画吗 沂水滑雪场怎么走 沂水天然地下画廊景区交通指南 m果实能力 脑血管造影适应症 重仓大盘蓝筹股的基金,或加指数基金? 文言文 理穷言他 有托其妻子于其友而之楚游者的有是什么意思 有托其妻子于其友而之楚... 猫吃了毒老鼠,吐白沫,惊叫,走不稳 内存对手机性能有多重要 Flutter项目打包iOS出现 ITMS-90078 Missing Push Notification Entitlement问题 flutter 远程推送 Flutter—手机消息推送(notification) 搭配裙子的上衣有哪些 如何判定偷税漏税 清明节家族祭祀对联 数学中8和9的最大公约数 空调不制热外机不转怎么解决 空调不制热外机不转如何解决? 刘诗诗的经典古装作品 形容人 鬼灵精什么意思- 问一问 8和9的因数是多少,最大公因数是多少 请问无线充电会损伤电池吗 绑定了QQ号,要如何解绑? qq号绑定了别的怎么解绑 在还呗上借钱,不提现要不要违约金? 西宁市哪个公交充值点可以办学生卡? 西宁市唐道交通卡充值点 18和9的公因数? 18和9的最大公因数和最小公倍数下面还有 点完瘊子可不可以洗澡,可不可以擦护肤品,面霜之类的?或者彩妆?我希望专业的回答。谢谢大家。 手上的瘊子前两天到医院用激光弄掉了,今天发现流脓,我应该注意什么,会有什么事吗,会留很难看的疤么? 银屑病能吃蚝油,料酒吗? 纹眉后料酒煮东西可以吃吗? 申请新怎么申请? cubase5.联想y560的本本。电容麦。怎么设置可以没有杂音? 怎么查老公和别人开过房记录 急、脚受伤了,料酒能消毒吗 怎样注册新 注册一个新的怎么注册 大腿骨折病人煮鱼汤能否放料酒和酱油 怎样才能注册一个新的- 问一问 如何重新申请? 怎样申请 怎么申请新的? 剖腹产可以吃料酒煮的鱼吗 我用古文怎么说 "我"用古文怎么说? 受伤了,有什么忌口的东西吗 佘诗曼 演过什么 电视剧??