hybridappHybrid设计与实现大前端技术栈

优点

缺点

因此,基于网络环境和渲染性能的影响,在设计H5页面时,应注意以下几点:

在做Hybrid架构设计之前需要分清Native与前端的界限,首先Native提供的是一宿主环境,要合理的利用Native提供的能力,要实现通用的Hybrid平台架构,站在前端视角,我认为需要考虑以下核心设计问题。

Hybrid架构设计第一个要考虑的问题是如何设计与前端的交互,如果这块设计的不好会对后续开发、前端框架维护造成深远的影响,并且这种影响往往是不可逆的,所以这里需要前端与Native好好配合,提供通用的接口,比如:

①NativeUI组件,header组件、消息类组件

②通讯录、系统、设备信息读取接口

③H5与Native的互相跳转,比如H5如何跳到一个Native页面,H5如何新开Webview做动画跳到另一个H5页面

Native首先需要考虑如何访问H5资源,做到既能以file的方式访问Native内部资源,又能使用url的方式访问线上资源;需要提供前端资源增量替换机制,以摆脱APP迭代发版问题,避免用户升级APP。这里就会涉及到静态资源在APP中的存放策略,更新策略的设计,复杂的话还会涉及到服务器端的支持。

账号系统是重要并且无法避免的,Native需要设计良好安全的身份验证机制,保证这块对业务开发者足够透明,打通账户信息。

Hybrid交互有两种:1、native主动调用前端js方法主动与前端通信2、H5主动与native通信是通过urlschema方式进行的,首先要和native约定好通信的schema如:wubacst然后根据Android和iOS不同的通信方式来分别约定其中Android是在通信之前先创建一个iframe通过iframe把拼接好的url请求发送到native或者通过拦截prompt中的消息来和前端通信iOS使用了iOS8以上的wkwebview中的messageHandlers的postMessage方法直接把url请求发送到nativenative接收到前端发送的请求解析之后通过回调函数来通知前端

两者通信的桥梁都是webview

iOS基于WebKit框架的中的WKWebView+WKScriptMessageHandler实现JS与OC之间互相通信。整体交互过程分为三步:第一:通过-(void)addScriptMessageHandler:(id)scriptMessageHandlername:(NSString*)name,搭建JS调用OC的桥梁,注册供JS调用的方法name;第二:JS在调用OC注册方法只需要:window.webkit.messageHandlers..postMessage()第三:客户端在WKScriptMessageHandler代理方法里收到JS的调用,通过解析处理,并按照事先与FE约定好的的协议做方法的映射,从而达到JS事件的响应。

将UIWebViewDelegate与UIWebView拆分成了14类与3个协议,包含该更细节功能的实现

WKWebView:

类似于JOSNP跨域原理APP在安装之后会注册私有协议到OS,浏览器自身不能识别的协议时,会将链接抛给OS,转为APP处理比如itunes://开头的链接是AppleStore的私有协议,支付宝的私有协议alipay://,腾讯的tencent://等等固定协议:webview.loadUrl("javascript:alert('helloworld')");

调用nativeAPI接口方式和我们请求服务端的ajax方式类似,都是前端主动去发送一个请求,被接收处理后返回回调

混合开发中交互种类繁多,如何做到通用以58同城车商通app为例:页面跳转类型

native组件处理类型

前面提到过,Android和iOS对于前端的交互是有区别的,虽然都是采用URL拦截的方式,但是具体的方式是不一样的;iOS采用WKwebview中的messageHandlers方法,而Android采用类似ajax一样的请求;但是对于业务放来说,在和native通信时是不区分端的,这就需要封装一个交互协议的API来提供给业务方,在协议API中来区分处理Android和iOS的交互;

处理源码如下:

//区分处理Android和iOS_nativeBridge:function(param){"android"==this.osthis._andr4Native(param):"ios"==this.osthis._ios4Native(param):"ipad"==this.os&&this._ios4Native(param)},Android客户端处理

_createIframe:function(){variFrame;returniFrame=document.createElement("iframe"),iFrame.setAttribute("style","display:none;"),iFrame.setAttribute("height","0px"),iFrame.setAttribute("width","0px"),iFrame.setAttribute("frameborder","0"),iFrame}//开始是使用iframe和Android客户端通信后来改成了prompt_andr4Native:function(param){varhost=param.host;varpath=param.path;varquery=param.query;query=JSON.stringify(query)//3.5.0以上版本Android端都走新的拦截方式varurl="wubacst://"+host+"/"+path+"query="+encodeURIComponent(query);if(this._versionCompare(this._getVersion(),'3.5.0')){window.prompt(url)}else{if(!this.domReady)returnvoidthis.actionPreQueue.push(param);this.andrFrame=this._createIframe(),this.andrFrame.src="wubacst://"+host+"/"+path+"query="+encodeURIComponent(query),document.body.appendChild(this.andrFrame),this.andrFrame=null}}iOS客户端处理

//messageHandlers上绑定的WBcheshangtong对象是和iOS约定好的_ios4Native:function(param){varhost=param.host;varpath=param.path;varquery=param.query;query=JSON.stringify(query);varurl="wubacst://"+host+"/"+path+"query="+encodeURIComponent(query);if(window.webkit){try{window.webkit.messageHandlers.WBcheshangtong.postMessage(url);}}}处理好底层交互之后,在根据业务的不同,前端封装一些通用的协议,如:

整个通信协议API如下:

由于Android使用的是iframe发送请求和Android客户端进行交互的,在前端使用canvas时,iframe重复执行,导致前端重复提交协议,目前换成了prompt交互;在开发过程中有遇到这种问题的小伙伴,欢迎留言。

THE END
1.15个设计必备的免费设计素材网站Seseed是一个提供国内外高质量设计资源、灵感和信息的导航网站。设计师只需使用手机号码注册或微信即可直接登录。psdrepo PSDRepo是一个由StelianFirez和SergiuFirez创意的高质量PSD文件共享社区,包括样机、图标、UI、APP设计和网站等多类模板。Iconscout iconscout是一个专门提供线性图标的网站,设计师可以下载svg格式的https://baijiahao.baidu.com/s?id=1785080960129658406&wfr=spider&for=pc
2.如何下载即时设计APP资源?即时设计 APP 下载过程总共分为三步:第一,挑选合适的设计资源;第二,在工作台打开该资源;最后,导出即时设计资源。「即时设计」作为近几年来深受设计师好评的在线 UI 工具,提供了超过 1600k 的免费设计资源,基本涵盖了各个领域,例如网页设计、名片设计、海报设计、小程序设计、图标设计等等。我最喜欢即时设计的一点https://js.design/special/article/js-design-app-download.html
3.室内设计app家装设计软件下载装修app排行榜装修app内汇集了市面上所有的装修app可供下载,您可以轻松的找到您想要的装修app,进行家装设计、室内设计等,您在这里无需有着任何操心,只需在给出的设计图案中挑选出自己最满意的设计图就可以了,所有图片都是实景拍摄,其他的各类事项应用官方都为会您解决:联系装修公司等各项事宜,你还可以与各类优秀的设计师一同http://www.downcc.com/k/zhuangxiuapp/
4.2018年更全的App设计资源(工具+模板下载+例子)在做移动App设计时,设计师想要更好的呈现视觉效果给用户,不仅仅需要一款优秀的App原型设计工具,同样也需要适用和优质的原型模板和例子。Mockplus为大家提供了更佳的移动端mockup设计工具,mockup设计的例子以及模板资源下载(PSD)。 一,免费的App原型设计工具 https://www.51cto.com/article/574376.html
5.SketchAppSources专注高质量的Sketch设计资源Boss设计Sketch App Sources专注高质量的 Sketch 设计资源,轻松帮你节省工作时间,让你可以更加愉快的创作。除了付费的设计资源,还有免费海量的 Sketch UI 套件、线框套件、模板和图标集合,旨在帮助设计师优化设计、学习和提升设计思维,在这里还有志同道合的设计师,一样热衷设计,可以分享我们的工作,也是学习新技能和设计技巧的社https://www.bossdesign.cn/sketchappsources/
6.三大设计app(十大设计接单平台)杂七乱八⑺具有通用性、易用性,适用于各类用户,此外,从AutoCAD2000开始,该系统又增添了许多强大的功能,如AutoCAD设计中心(ADC)、多文档设计环境(MDE)、Internet驱动、新的对象捕捉功能、增强的标注功能以及局部打开和局部加载的功能。 2、solidworks solidworks solidworks2015免费版是一款便利的图形制作工具。solidworks2015免费版提https://www.yuanmacun.com/post/131725.html
7.建标库Ofrece compras dentro de la app Capturas de pantalla del iPhone Descripción 建标库平台拥有数百万建筑工程资源,包含超全的标准规范、海量的图纸模型、超火的技术交流社区等。 建标库二十余年如一日,始终坚持为广大建筑工程界朋友提供规范标准电子版服务。为此我们每年投入大量的资源,平均年投入资金数百万元,累计投入https://apps.apple.com/ni/app/%E5%BB%BA%E6%A0%87%E5%BA%93-%E4%B8%93%E4%B8%9A%E5%BB%BA%E7%AD%91%E5%B7%A5%E7%A8%8B%E8%AE%BE%E8%AE%A1%E8%B5%84%E6%BA%90%E8%BD%AF%E4%BB%B6/id1269063051
8.自建房设计图软件app自建房设计软件免费自建房设计图软件app由新绿资源网小编为大家收集整理几款常用的自建房装修软件,APP会提供很多种设计的方案,来供用户们挑选,选择你的户型然后设计出完美的房子,欢迎来新绿资源网下载住宅在线、装修体验馆、设计君、家炫DIY房屋设计、酷家乐、设计本等体验吧!http://www.xlhs.com/k/zjfsj/
9.app项目源码6SeniorDesign:高级设计下载海量资源 写文章/发动态/加入社区 立即登录 会员12.12 消息 创作中心 学习中心成长任务 发布 共177个文件 png:78个 jpg:23个 pdf:15个 系统开源 需积分: 13200 浏览量2021-06-06上传27.86MBZIP 安卓毕业设计app项目源码6 CS480高级设计GUI界面 陈述 这是一个为期四天的短期项目,我刚刚在过去的周末(11/7https://download.csdn.net/download/weixin_38608688/19410904
10.青柠设计APP2.7.0ForAndroid破解版,解锁终身会员,新潮设计免费首页 APP软件 Android 正文 青柠设计APP 2.7.0 For Android破解版,解锁终身会员,新潮设计免费享用!管理员 3月11日发布 关注私信 01576 共计131字,阅读大约1分钟 青柠设计APP 2.7.0 For Android破解版,解锁终身会员,新潮设计免费享用! 此内容为免费资源,请登录后查看 ¥0 登录查看 推荐使用支付宝支付,若微信https://www.zuitx.com/2340.html
11.ios14有哪些新功能ios14新功能介绍iOS14增加了全新的特性,组件功能支持将组件拖至主屏幕,并且支持智能叠放(更灵活的桌面组件,app资源库可以自动整理app),同时智能叠放不仅对主屏幕设计固有的设计进行改动,同时还可以支持小组件功能的叠放。 2、小组件的形态大小不同 iOS13中的小组件是在负一屏中进行选取,而iOS14则支持把小组件功能带入主屏幕中(与http://product.pconline.com.cn/itbk/sjtx/sjwt/1386/13861559.html
12.我不信这些源文件可以免费商用,真的不信!菜心设计铺不论你是否在开发 HarmonyOS 设计语言的 APP,这套完整的移动端设备组件库都非常具有参考价值。 HarmonyOS 智慧屏组件库/可穿戴设备组件库 除此之外,HarmonyOS 还开源了智慧屏组件库、可穿戴设备组件库,这里就不展开介绍了,有需要的同学可以直接去即时设计的资源广场搜索,一键引用。 https://www.shangyexinzhi.com/article/4984385.html
13.app设计学堂新闻 hao123 地图 视频 贴吧 登录 更多产品 关于百度 About Baidu ?2017 Baidu 使用百度前必读 意见反馈 京ICP证030173号 https://www.25xt.com/
14.设计师福利:15个免费设计资源网站知识库08:Graphic Burger —— 这里的每一个设计资源都足够精致 链接地址:http://graphicburger.com/ 09:Marvel —— 来自著名设计师的免费素材 链接地址:https://marvelapp.com/resources/ 10:Free Section of Pixeden —— 大量免费设计资源 链接地址:http://www.pixeden.com/free-design-web-resources https://www.shichangbu.com/know_info/24026.html
15.一文读懂WWDC20:苹果自研Mac芯片正式亮相,iOS14界面大改在App资源库当中,所有应用会被自动分类,用户可自行隐藏应用页面,在顶部搜索栏搜索应用。同时该功能还能猜测用户当下想要使用的应用,来提供使用建议。 重新设计的桌面小部件 虽然之前苹果在iOS 13中已经加入了桌面小部件功能,但是用户的使用效率并不高。这次在iOS 14中桌面小部件功能也得到了重新设计,可以通过更直观、更https://www.36kr.com/p/763447843072516
16.优设导航官网设计导航设计导航2013年上线至今,是优设网旗下最专业好用的设计师导航网站!设计导航为设计师提供AI创作、UI设计、设计教程、素材下载、高清图库、App设计、网页设计等设计网站导航指引。设计导航每周更新,设计风向标就看优设网!https://hao.uisdc.com/