技术点总有它的来由,唯一要做的是静下心来看 谁知道之后又会怎么样了。
1.hybrid 基本概念
⑴.什么是hybrid?
hybrid即“混合”,前端和客户端的混胡开发模式,有的同时需要server端。 hybrid 底层依赖于Native提供的容器(WebView),上层使用html&css&JS做业务开发。
⑵.hybrid存在的意义?
可以快速迭代开发更新。(无需app审核,哈哈因为对手机的操作权限不高?,相对于app)
跨平台、低层本,双端(ios和安卓)公用一套代码。(两端接口一致哈)
Hybrid从业务开发上讲,没有版本问题,有BUG能及时修复(相对于app)。
缺点:开发成本高,连调,测试,查bug都比较麻烦,运维成本高(以实现方式具体比较,看下图)。
⑶webview是什么?
app中的一个组件,native提供的容器盒子,用于加h5页面,小型浏览器内核。
2.前端和客户端的交互和通讯
大概描述:js访问客户端的能力,传递参数和回调函数参数,客户端通过回调函数返回内容。
代码来源:https://github.com/tcoulter/jockeyjs/blob/master/JockeyJS/js/jockey.js
dispatchMessage: function(type, envelope) { // We send the message by navigating the browser to a special URL. // The iOS library will catch the navigation, prevent the UIWebView // from continuing, and use the data in the URL to execute code // within the iOS app. var src = "jockey://" + type + "/" + envelope.id + "?" + encodeURIComponent(JSON.stringify(envelope)); var iframe = document.createElement("iframe"); iframe.setAttribute("src", src); document.documentElement.appendChild(iframe); iframe.parentNode.removeChild(iframe); iframe = null; }
前端和客户端通信协议schema 协议
⑴.什么是schema协议?
大概描述 :scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面;通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转native页面等。
通过执行以下操作支持自定义URL方案:
- 定义应用程序URL的格式。
- 注册应用程序URL方案,以便系统将适当的URL定向到应用程序。
- 处理应用收到的网址(url)。
一些有URL Scheme
https://www.zhihu.com/question/19907735
⑵.H5与Native通信?
接(1)客户端可以拦截跳转的自定义的url,并做处理
⑶.native到h5页面?
native提供的容器盒子那么native,可否调用它提供的webview,中window对象的方法了?