Hybrid

Hybrid,第1张

概述一,hybrid是什么,为何用hybrid? 二,hybrid更新和上线流程 三,hybrid和h5区别 四,前端js和客户端如何通讯?   一,hybrid是什么,为何用hybrid? 1,文字解释 hybrid即“混合”,即前端和客户端的混合开发 需前端开发人员和客户端开发人员配合完成 某些环节也可能涉及到server端   2,存在价值,为何用hybrid 可以快速迭代更新【关键】,无须ap 一,hybrID是什么,为何用hybrID? 二,hybrID更新和上线流程 三,hybrID和h5区别 四,前端Js和客户端如何通讯?

 

一,hybrID是什么,为何用hybrID? 1,文字解释 hybrID即“混合”,即前端和客户端的混合开发 需前端开发人员和客户端开发人员配合完成 某些环节也可能涉及到server端   2,存在价值,为何用hybrID 可以快速迭代更新【关键】,无须app审核,(思考为何?,因为没有权限 *** 作手机系统的API,不会有安全隐患) 体验流畅(和NA的体验基本类似)-肉眼区别不出来 减少开发和沟通成本,双端公用一套代码(ios和androID)   3,webvIEw 是app中的一个组件,app可以有webvIEw,也可以没有 用于加载H5页面等,即一个小型的浏览器内核,是个统称 例,浏览器中:

微信中:

  4,file://协议 一开始做网页,就已经使用file协议了,双击打开 只不过当初没有协议,标准的概念 再次强调协议,标准的重要性!!!如前端的 w3c标准,promise标准等等啊 加载本地的资源

  01,http协议和file协议区别: file协议:本地文件,快    file:// http/https协议:网络加载,慢  http://     5,hybrID实现流程 不是所有场景都适合hybrID: 使用NA:体验要求极致,变化不频繁(如头条的首页) 使用hybrID:体验要求高,变化频繁(如头条的新闻详情页) 使用H5:体验无要求,不常用(如举报,反馈等页面)

 

具体实现: 前端做好静态页面,(HTML,CSS,Js)将文件交给客户端 客户端拿到前端静态页面,以文件形式存储在app中 客户端在一个webvIEw中,使用file协议加载静态页面 具体流程图:

 

遗留问题: app发布之后,静态文件如何实时更新? 静态页面如何获取内容?

 

二,hybrID 更新上线流程 回顾hybrID实现流程 思考(目的,实现途径)

 

serve端,可以随时更新文件 更新流程 思考(目的,可行途径): 要替换每个客户端的静态文件 只能客户端来做 客户端去server下载最新的静态文件 维护server的静态文件

 

完整流程: 分版本,有版本号,如201803211015 将静态文件压缩成zip包,上传到服务端 客户端每次启动,都去服务端检查版本号 如果服务端版本号大于客户端版本号,就去下载最新的zip包 下载完之后解压包,然后将现有文件覆盖 要点1:服务端的版本和zip包维护 要点2:更新zip包之前,先对比版本号 要点3,zip包下载解压和覆盖

  

 三,hybrID 和 H5 的比较: 1,优点: 体验好,跟NA基本一致 可快速迭代,无需app审核(关键) 2,缺点: 开发成本高,连调,测试,查BUG都比较麻烦 运维成本高,参考上面讲的更新上线流程 3,适用的场景 hybrID:产品的稳定功能,体验要求高,迭代频繁,适用于产品型 h5:单次的运营活动(如XX红包),或不常用功能,适用于运营型

   

四,前端和客户端通讯   (微信公众平台:Js-SDk(微信公众平台封装的,h5前端和客户端的一个桥),下面内容要深入一些) 1,回顾之前的问题 2,Js和客户端通讯的基本形式 3,schema协议简介和使用(前端和客户端通信的协议规定) 4,schema使用的封装 5,内置上线

 

新闻详情页适用hybrID,前端如何获取新闻内容? 不能用AJAX获取,第一,跨域,第二,速度慢 hybrID是客户端获取新闻内容(可以提前获取),然后Js通讯拿到内容,再渲染

 

Js和客户端通讯的基本形式 Js访问客户端能力,传递参数和回调函数 客户端通过回调函数返回内容

 

schema协议简介和使用(前端和客户端) 之前介绍了http/https和file协议 scheme协议——前端和客户端通讯的约定  如   weixin:// (APP自己定的)

 
// schema协议简介和使用 // 以下是演示,无法正常运行,微信有严格的权限验证,外部页面不能随意使用schema var iframe = document.createElement(‘iframe‘); iframe.style.display = ‘none‘; iframe.src = ‘weixin://dl/scan‘; //iframe访问schema var body = document.body || document.getElementsByTagname(‘body‘)[0]; body.appendChild(iframe); setTimeout(function() {     body.removeChild(iframe); //销毁iframe     iframe = null; })

 加上参数和callback

// 如果要加上参数和callback,那么就要这么写 window[‘_weixin_scan_callback‘] = function(result) {     alert(result); } // ..省略 iframe.src = ‘weixin://dl/scan?k1=v1&k2=v2&callback=_weixin_scan_callback‘ // ..省略

schema协议的封装

新建invoke.Js

(function(window) {     // 跳用schema的封装     function _invoke(action, data, callback) {         // 拼装schema协议         var schema = ‘myapp://utils/‘ + action;         // 拼接参数         schema += ‘?a=a‘;         var key;         for (key in data) {             if (data.hasOwnProperty(key)) {                 schema += ‘&‘ + key + data[key];             }         }         // 处理callback         var callbackname = ‘‘;         if (typeof callback === ‘string‘) {             callbackname = callback;         } else {             callbackname = action + Date.Now();             window[callbackname] = callback;         }         schema += ‘&callback=‘ + callbackname;         // 触发         var iframe = document.createElement(‘iframe‘);         iframe.style.display = ‘none‘;         iframe.src = schema; //重要         var body = document.body || document.getElementsByTagname(‘body‘)[0];         body.appendChild(iframe);         setTimeout(function() {             body.removeChild(iframe); //销毁iframe             iframe = null;         })     }     // 暴露到全局变量     window.invoke = {         share: function(data, callback) {             _invoke(‘share‘, callback)         },         scan: function
总结

以上是内存溢出为你收集整理的Hybrid全部内容,希望文章能够帮你解决Hybrid所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/998818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存