Hybird-离线资源生成工具

目录

  • 背景
  • 离线资源生成工具
  • 前端协助

背景

由于线上乐刻客户端 App 第一次打开平台 H5 需要几秒的加载时间,这个体验对用户来说并不友好,为了让用户跳转 H5 和跳转到原生一样的用户体验,就需要把 H5 相关的离线资源包下发给客户端,客户端就可以使用离线资源来代替实际网络请求,节省用户等待时间和流量消耗。为了满足以上需求,就需要制作打包脚本和工具,来满足正常的运维。

离线资源生成工具

离线资源的生成,我们提供了一个工具可以打包出增量和全量升级包。原理是根据 git diff 去比较两次 commit,然后只关注 offlineResource (与 dist 目录平级,发布包需要把 dist 目录内容拷贝到 offlineResource) 目录下的两次提交的文件差别,从而打出增量包。全量包就是整个 offlineResource 目录。

offlineh5 安装方法:

npm install -g offlineh5

使用方式:

offlineh5 -o package -r  http://github.com/xxx.git -f e24b8f0bb9a85c93c6965a906c1ea0448342821a -u gitusername -p gitpassword -z activity

参数说明:

-o 资源包输出路径
-r 仓库地址
-u git 用户名
-p git 用户密码
-f 从哪个 commit 导出增量包
-z 打出来的资源包前缀

打出来的离线资源包需要放到七牛 cdn 存储:

http://oq78hrbgk.bkl.clouddn.com/upgrade/activity/activity.full_0.1.1.zip

前端协助

遇到的问题

之前前端打包只把 html, js, css 导出到 offlineResource 目录下,没有图片,因为图片都放在 cdn 上,本地就没有任何的原始图片,这样导致三个问题:

  1. node 脚本打出来的离线资源包并不包含图片。
  2. 即使找到了原始图片,并不能保证原始图片的本地路径和cdn上的是一致的。
  3. 线上现有 cdn一级路径比较混乱。

线上现有路径。

http://cdn.leoao.com/le-activity/528/528-01.png
http://cdn.leoao.com/activity/528/app.min.css
http://cdn.leoao.com/activity/528/app.min.js

前端调整

  1. 使用 qtool 脚本获取 cdn 上的所有图片,存放到本地作为原始图片,根据模块规范原始图片的路径。比如 le-activityactivity 需要统一成 activity
  2. 前端打包不仅输出 html, js, css,同时每次打包需要把原始图片拷贝到 dist 目录下。同时发布流程需要把 dist 目录内容拷贝到 offlineResource目录下。
  3. 根据 offlineResource 目录,使用 qtool 脚本使用该目录下的所有资源路径作为 cdn key,然后把所有资源上传到 cdn 上。以后前端在打包之前开发的时候,完全可以使用本地的路劲作为相对路径提前配置路径,而不用考虑 cdn 的上传路径问题。

调整后,offlineh5 打包脚本可以根据 offlineResource 目录下的不同的 commitdiff 出两个版本之间差别,从而打出增量包和全量包。

使用 qtool

qtool 安装方法:

npm install -g qtool

上传资源:

qtool upload  -f uploadfolder -a RSxpQIxNIS2vo0vuQR3HX701ddS9fdlUnQ5jV8ul -s xCLWczC5V5kyy7H85MNKNYcXT4wx9k5OzT7YDVFk -b mybucket -k activity -h olf3t4olk.bkt.clouddn.com

下载资源:

qtool download  -f downloadfolder -a RSxpQIxNIS2vo0vuQR3HX701ddS9fdlUnQ5jV8ul -s xCLWczC5V5kyy7H85MNKNYcXT4wx9k5OzT7YDVFk -b mybucket -k activity -h olf3t4olk.bkt.clouddn.com

参数说明:

-f, --folder <string> 
    上传和下载目录
    
-k, --keypreffix <string> 
    上传的时候,前缀会插入到 key 的前面。
    下载的时候,前缀会被用于过滤七牛的cdn url。
    
-a, --accessKey <string>
    access Key 七牛官网获取
    
-s, --secretKey <string> 
    Secret Key 七牛官网获取
      
-b, --bucket <string>
    上传和下载对象空间
    
-h, --hostUrl <string>
    七牛 host url,比如:http://cdn.xxx.com    
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,633评论 25 709
  • 写在开头 先说说为什么要写这篇文章, 最初的原因是组里的小朋友们看了webpack文档后, 表情都是这样的: (摘...
    Lefter阅读 10,687评论 4 31
  • 天猫双11前端分享系列(一):活动页面的性能优化 天猫双11前端分享系列(二):天猫双11页面服务容灾方案大揭秘 ...
    wokeman阅读 10,456评论 0 2
  • "她写命运、命运写她" 张爱玲身世显赫,祖父张佩纶是清代名臣,祖母李菊耦是朝廷重臣李鸿章的长女。如此的环境下,造就...
    我一个二十几岁女青年阅读 1,651评论 0 2
  • 等下儿子出来玩了,心里应该感到开心才对!儿子不在身边真的有点不习惯! 我希望儿子每天都是开开心心的!宇宙妈妈我要的...
    樱木兰阅读 1,098评论 0 0