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    
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 120,339评论 1 242
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 52,591评论 1 203
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 75,637评论 0 169
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 36,815评论 0 128
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 43,671评论 1 208
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 36,195评论 1 128
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 28,150评论 2 210
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 27,266评论 0 120
  • 想象着我的养父在大火中拼命挣扎,窒息,最后皮肤化为焦炭。我心中就已经是抑制不住地欢快,这就叫做以其人之道,还治其人...
    爱写小说的胖达阅读 26,229评论 5 175
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 30,356评论 0 179
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 27,528评论 1 170
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 28,783评论 1 179
  • 白月光回国,霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前, 不然我有一百种方法让你生不如死。]我...
    爱写小说的胖达阅读 23,058评论 0 25
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 25,692评论 2 166
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 29,581评论 3 175
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 24,550评论 0 4
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 24,522评论 0 114
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 30,828评论 2 192
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 31,191评论 2 188

推荐阅读更多精彩内容

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