混合开发中h5前端离线打包规范流程

1、离线化的目的
首先在H5+Native的混合开发实战中,让人头疼最多的恐怕就是网页加载过程中的白屏了,以及弱网、断网状态下h5页面无法正常加载的问题,那么为了解决这些问题,我们H5端跟原生端共同讨论采用Hybrid App离线加载方案,因此web前端采用offline-package-webpack-plugin插件生成离线包,提供给安卓原生端进行下载。
2、离线化的适用范围
适用于所有需要支持离线化加载的web前端技术开发人员(h5嵌入app,并且需要离线加载的所有应用)。
3、简介
3.1、离线机制的介绍
借用网上的一个离线化图
在这里插入图片描述
3.2 与原生对接机制介绍
在这里插入图片描述
3.3 前端对接运维与客户端流程图
在这里插入图片描述
离线包主要是使用一个可以将h5项目打包成zip压缩包的webpack插件生成。
这个插件就是offline-package-webpack-plugin,它是一个在前端打包的过程中同时生成离线包的插件,打包完后最后会将每个资源(可通过文件类型限定遍历范围)的信息记录在一个资源映射的json里,但是这里我们公司的需求为了跟cocos统一,不做zip压缩,只生成json文件跟资源,剩余交由运维统一处理。

4.原理
我们的需求是希望前端打包的过程中同时生成离线包,而webpack插件就是基于在emit钩子时(生成资源并输出到目录之前),通过compilation对象(代表了一次单一的版本和构建资源)遍历读取webpack打包生成的资源,最后将文件类型的信息记录在json里,具体内容如下:
在这里插入图片描述
其中remoteUrl是该资源在静态资源服务器的地址,path则是在客户端本地的相对路径(通过拦截该资源端对应的服务端请求,并根据相对路径从本地命中相关资源并返回)。
最后运维那边会把我们打包后的输出文件,统一做zip压缩处理(zip压缩),如没有特殊需求可我们前端h5可以直接做zip压缩。
5、插件安装
5.1插件安装指南

npm install offline-package-webpack-plugin -D 
//或
yarn add offline-package-webpack-plugin -D
//或
pnpm install offline-package-webpack-plugin -D

5.2不同项目接入方式
5.2.1 html+jquery项目(webpack)
使用插件的前提是我们的html项目已经配置了webpack打包环境,没有的话我们就先自行配置,这样我们自然必须创建一个webpack.config.js文件,然后我们统一将离线包配置加到webpack.config.js文件中,配置如下:

const OfflinePackagePlugin = require("offline-package-webpack-plugin")
plugins: [
  new OfflinePackagePlugin({
       version:1,   //版本号
       indexFileName:“index.json”,//此项映射json名称
       packageName:“离线资源”,//资源包名称
       moduleCode:1001,//模块编码
       createZip:false,    //由于要与cocos保持统一因此我们也不用直接生成压缩包,而是交给运维那边生成压缩包。
       baseUrl:“https://xxx.xxx.com/,//基础路径
      updateLogs:”这里填写更新内容”, //本次版本更新日志内容
      fileTypes:[“js”,“css”,“png”,“html”,“gif”,“jpg”] //fileTypes次选项可控制是否通过文件扩展名将资源添加到zip文件中,空数组即为无可扩展文件名限制
   })
]

5.2.2 vue(vue-cli2/vue-cli3/vue-cli4)基于webpack构建
在vue项目中我们一般都会在vue.config.js中进行一些插件配置,配置如下:

const OfflinePackagePlugin = require("offline-package-webpack-plugin")
configureWebpack:(config)=>{
          config.plugins.push({
             new OfflinePackagePlugin({
                     version:1,   //版本号
                     indexFileName:“index.json”,//此项映射json名称
                     packageName:“离线资源”,//资源包名称
                     moduleCode:1001,//模块编码
                    createZip:false,    //由于要与cocos保持统一因此我们也不用直接生成压缩包,而是交给运维那边生成压缩包。
                    baseUrl:“https://xxx.xxx.com/,//基础路径
                  updateLogs:”这里填写更新内容”, //本次版本更新日志内容
                    fileTypes:[“js”,“css”,“png”,“html”,“gif”,“jpg”] //fileTypes次选项可控制是否通过文件扩展名将资源添加到zip文件中,空数组即为无可扩展文件名限制
      })
   })
}
唐长老521
关注 关注
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Hybrid App 离线方案实践
xiangzhihong8的专栏
06-03 466
H5 + Native 的混合开发模式,让人诟病最多的恐怕就是加载 H5 页面过程的白屏问题了,下面这张图描述了从 WebView 初始化到 H5 页面最终渲染的整个过程。 可以看到,一个完整的WebView加载流程:基于此,目前主流的优化方式主要括:当然,针对每个公司的实施方案的不同,还有很多小的细节优化点,本文不再说明。本文重点讲的是,在与静态资源服务器建立连接,然后接收前端静态资源的过程。由于这个过程过于依赖用户当前所处的网络环境,因此也成了最不可控因素。当用户处于弱网时,页面加载速度可能
前端加速利器【离线
bilibili_TC的博客
05-21 1059
B站的离线技术方案与大部分互联网公司实现的方案在底层逻辑上是一致的,都实现了基础的资源下发和拦截匹配机制。
html5 css3 离线
07-11
html5和css3的离线chm,挺好的
H5网页打包成安卓apk(H5套壳成app), 保姆级教程来咯
最新发布
都已经是第二年的立春、又何必执着于、当年的盛​夏呢?
07-25 3120
说明,我什么其它功能都不要,所以我的功能模块我全部取消勾选了。就是应用的入口(线上的H5入口地址)
HTML5 Web 客户端五种离线存储方式汇总
weixin_34314962的博客
12-22 436
为什么80%的码农都做不了架构师?>>> ...
H5 离线方案
云之彼端的博客
02-25 2638
H5 离线方案 webview加载优化 接口预加载 页面数据localstore缓存
离线实现app内H5的秒开
z69183787的专栏
08-23 1423
市面上业务复杂 App近半数业务页面使用H5 页面承载,H5的优势很明显,跨平台、迭代快、开发体验好,H5的劣势同样明显,加载慢,用户体验差,为了提高页面加载速度和成功率,我们在app H5 部分业务加载 采用了离线方式,如果有业务功能有变更,就通过我们的无线发布系统,将新的业务离线更新到App ,从而做到随时发布,动态更新,页面秒开,无须app 改动。
基于 prefetch 的 H5 离线方案 | 京东云技术团队
JDDTechTalk的博客
06-06 1047
本文主要是介绍团队在离线技术方案上的探索,以及基于prefetch的离线实现方案如何减少维护成本和开发成本。
h5app:基于5 + App,mui和HBuilder的h5应用
05-28
6. **HBuilder IDE**:熟悉HBuilder的使用,括项目创建、代码编辑、热更新、调试、打包发布等流程,提高开发效率。 7. **移动端适配**:理解不同设备的屏幕尺寸、分辨率和浏览器兼容性,进行适当的适配和优化。 ...
前端200道面试题及答案(更新
热门推荐
m0_65450343的博客
06-11 11万+
目录html相关说一下对cookie和Storage(localStorage和sessionStorage) 的认识和区别?link和@import的区别浏览器如何实现不同标签页的通信?iframe的优缺点canvas做项目用到哪些h5新特性和css3新特性?用localstorage和sessionStorage写过什么?如何解决页面内容加载缓慢的问题?cookie的特点*页面渲染过程css相关javascript以及es6相关http相关浏览器bootstrapvue相关node相关微信小程序reac
Android Studio开发安卓app 封装WEB(H5,URL)
qq445829096的博客
05-22 1818
Android Studio开发安卓app 封装WEB(H5,URL)
前端MUI+H5+HBuilderX开发APP(IOS,android),后台Springboot,java学习与实践文章,更新(一)
weixin_43390321的博客
02-10 4613
前端MUI+H5+HBuilderX开发APP,学习与实践文章,更新(一)一级目录二级目录 此项目为本人本科毕业设计,不喜勿喷,只是想边学习边分享。如果能帮助到你,一定要点个赞哦! 此文章作为本人学习开发的笔记。希望能帮助到你。参考文章来自知网硕士研究生论文及知网期刊。 一级目录 二级目录 ...
货拉拉 Android H5离线原理与实践
eclipse_xu
07-25 2150
点击上方蓝字关注我,知识会给你力量背景在实际业务,appH5页面使用的场景越来越多,在货拉拉app也存在大量的H5页面,比如金秋拉货节、余额、车型介绍页等,加载速度成为了困扰用户的一个痛点。为此我们决定引入离线方案,另外还需要解决传统离线方案不灵活,体积大,不易管理,不易降级等问题,我们设计和开发一套H5离线系统,经过几个sdk版本的迭代,目前货拉拉H5离线...
React-native 优化之离线H5存储(Web优化之离线
hzxOnlineOk的博客
08-13 824
1. 写在前面 现在混合开发的应用场景越来越多了.业内的解决方案也有很多,例:native + react-native的,支付宝或者微信的native + 小程序的.当然应用更多的还是native + webView这种场景. 使用native + webView的优点很多: 开发方便 方便快速迭代 ... 但是使用这套方案也有一个很致命的缺点:那就是很慢!,在native上点击了一个按钮触发一个打开webView的action操作,会经过以下几个过程: 初始化webview=>...
h5离线介绍以及h5离线构建目录修改
hzxOnlineOk的博客
08-13 562
以Umi.js框架为例: 离线构建就是要将绝对路径修改为相对路径,即: 路径从 /projectName/ 改为 ./ 即可 如下图: 离线介绍: https://help.aliyun.com/document_detail/59594.html#h2-u79BBu7EBFu5305u8FD0u884Cu6A21u5F0F2 ...
创建可以离线打包开发的uniapp H5项目
qq_27577113的博客
11-26 1620
创建可以离线打包开发的uniapp H5项目,离线环境下便捷发布
h5离线应用
目尽地平线
10-19 4185
在没有网络的情况下,网页能否像单机应用一样,依赖本地数据运行?h5提供了application cache,保存网页的离线数据,在断网的情况下,依然能运行。网页应用已经越来越像本地应用了
离线方案
qq_34084869的博客
08-25 1815
网易(资源离线/JsBridge通信/接口预请求) 网易新闻客户端H5秒开优化 H5优势: 跨平台, 实时更新, 便于传播等 劣势: 功能(硬件访问能力, 离线功能), 性能, 体验等 一. 资源离线 静态资源加载耗时, 资源离线到本地, 能很好解决. web页面把静态资源生成zip, 客户端在合适的时机拉去zip并解压到本地, 持久化存储. 用户访问的时候拦截WebView发出去的页面请求, 直接返回对应的本地文件. 前端: 生成zip -> 更新
性能优化系列之『HTML5 离线化:主流的技术实现方案有哪些?』
老__L的博客
01-07 813
性能优化系列之『HTML5 离线化:主流的技术实现方案有哪些?』
hbuildx 离线打包h5
08-08
hbuildx 是一款可以离线打包 H5 应用的工具。通过 hbuildx,我们可以将开发好的 H5 应用打包成适用于移动端的应用程序。 首先,我们需要将 H5 应用的代码和资源文件准备好,并确保能在浏览器正常运行。接下来,我们使用 hbuildx 工具来进行打包。 hbuildx 支持多种平台的打包括 Android、iOS 等。我们可以根据需要选择目标平台,然后通过命令行工具进行打包操作。 在进行打包之前,我们需要确保环境配置正确,例如安装了相应的开发工具和 SDK,并且将 H5 应用的代码放置在正确的目录下。 hbuildx 提供了丰富的配置选项,可以根据需求进行调整。我们可以指定应用的图标、启动页、权限等信息。同时,还可以对打包后的应用进行签名、加密等操作,以增加应用的安全性。 一旦配置完成,我们就可以运行 hbuildx 命令进行打包。hbuildx 会自动将 H5 应用的代码转化成目标平台的应用程序,并生成对应的安装文件。 最后,我们可以将生成的应用安装安装到手机上进行测试,或者发布到应用商店供用户下载和使用。 通过 hbuildx 的离线打包,我们可以方便地将开发好的 H5 应用转化为独立的移动应用程序,提供更好的用户体验和功能支持。
写文章

热门文章

  • vue3的tsx写法(v-show、v-if、v-for、v-bind、v-on),父子组件传值 13580
  • vue项目编译、运行过慢如何提升编译(编译包括运行编译与打包编译)速度 12815
  • vue3+ts的父子组件传参以及withDefaults、defineExpose用法介绍 8076
  • vue3的动态组件 7746
  • vue3的EventBus库(mitt)与mitt的使用方式 5532

分类专栏

  • http 2篇
  • vue3 4篇
  • vue 26篇
  • tsx 1篇
  • vue的事件总线 2篇
  • vue3发布订阅者模式 2篇
  • webpack 5篇
  • js 7篇
  • ts 3篇
  • 前端错误捕获 1篇
  • 前端异常捕获上报 1篇
  • jenkins 3篇
  • nginx 1篇
  • vue骨架屏 2篇
  • url输入浏览器 1篇
  • html打包多入口 2篇
  • react 1篇
  • 打包 1篇
  • vue+vw+postcss 1篇

最新评论

  • vueCli4使用vant+postcss(VW)后导致样式失效,requireModuleExtension的问题

    举案齐眉意难平: 这篇文章是最贴近我遇到问题的一篇,也是最让我看不懂的一篇。。。然后呢,

  • vue项目编译、运行过慢如何提升编译(编译包括运行编译与打包编译)速度

    qq_29940377: 文后提到了这两个不能一起使用,一起使用会出现啥问题嘛?

  • 混合开发中h5前端离线打包规范流程

    青团社-郝帅: 有遇到过vite+vue3+该插件打包后不是离线包么?打包后依然是原来的打包方式。

  • vue3的EventBus库(mitt)与mitt的使用方式

    Ustinian800: 我ts不怎么会,但是你这两句似乎和mitt没关系啊,是用于类型提示的吧,你后续使用mitt的时候你就不用再引入了啊,假设不用类型提示的话似乎挂载完以后就可以直接用mitt了

  • vue3的EventBus库(mitt)与mitt的使用方式

    zhang@h: 你单独引入的就只有一行代码, vue3没得this, 你放在全局与不放在全局,都要去手动引,所以放在全局的意义在哪里

最新文章

  • react中的redux的了解,三大核心理念以及三大原则
  • react组件内容补充
  • react中的setState到底是同步还是异步的
2023年7篇
2022年65篇
2021年1篇
2020年8篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家惠东玻璃钢园林雕塑舞阳玻璃钢雕塑价格宿迁玻璃钢仿铜雕塑价格玻璃钢造型雕塑有哪些平台承德仿木玻璃钢雕塑云南玻璃钢马雕塑设计与制作沈阳玻璃钢雕塑制作流程定制布玻璃钢雕塑厂家江西人物玻璃钢雕塑定制郑州玻璃钢人物城市雕塑定制厂家南阳公园景观玻璃钢彩绘雕塑银川卡通玻璃钢雕塑制作四川步行街玻璃钢雕塑生产厂家景观玻璃钢卡通雕塑工厂景观玻璃钢雕塑制作方法广东酒店艺术玻璃钢雕塑蘑菇玻璃钢卡通雕塑工厂江门玻璃钢雕塑尺寸郑州景观玻璃钢彩绘雕塑公司常州玻璃钢造型雕塑辽宁玻璃钢雕塑供应商德惠玻璃钢雕塑工程施工夏邑制作玻璃钢雕塑报价选哪家南昌玻璃钢雕塑摆件玻璃钢景观雕塑系列陕西商场节庆美陈雕塑定制阜阳小区玻璃钢雕塑生产厂家金华专业玻璃钢雕塑厂家人物玻璃钢动物雕塑推荐货源夺艺雕塑名人玻璃钢浮雕厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化