解决大中型浏览器 (Chrome) 插件开发痛点:自定义热更新方案——1. 原理分析及构建部署实现
Chrome扩展程序序列文章:
背景
chrome扩展程序是个以crx为后缀的文件,安装在chrome内核的浏览器,运行在独立的进程。它可以操作浏览器的外观,与浏览器交互、具备扩展实现能力。
扩展程序的发布更新,需要走chrome应用市场审核。当推送更新时,Google会自动更新用户的扩展程序,但是会有时滞(几个小时),前提是国内用户需科学上网。否则,只能自己去找包下载更新。
认知的渠道里没有找到相关chrome扩展程序脚手架。
作为一款版本快速更新迭代的扩展程序,立刻解决重大bug、功能发布,频繁发版影响用户体验,并且,用户无科学上网没法自动更新程序。基于此背景,设计了套基于webpack构建,IndexedDB缓存的热更新方案,支持"一键"部署,解决线上问题,同时大大提升开发效率。
一、模块热更新原理
这是整个热更新方案的原理,对整个对象进行替换执行。
接下去介绍下基于此的实现方案,更确切的说是一种规范,例子仅介绍Content-Scripts脚本的热更新,涉及扩展程序的Popup页,background.js以及可能需要注入js资源文件的实现不做介绍,仅提供思路。
Chrome扩展程序开发文档可参考:http://chrome.cenchy.com/
二、设计项目结构规范和模板代码
项目代码结构
这么设计代码结构是方便webpack打hotfix代码文件。
功能模块模板代码
三、设计Webpack构建hotfix文件
编写webpack.hotfix.js配置文件,用于读取需热更新的模块对象,并构建输出到hotfix目录。
package.json文件配置执行命令
自此完成模块热更新构建指令,支持可选参数配置模块名:
执行命令,生产hotfix/文件夹,存放各热修复模块文件。
四、设计热更新代码自动部署
前后端定义协议报文
后端接口实现
接口收到数据,依次创建version/type/name.js文件,并写入content。
node上传hotfix文件实现,直接贴代码
package.json新增执行指令
执行npm run deploy,完成hotfix文件上传服务器
五、总结
自此便实现了Chrome扩展程序的热更新打包部署。
--END--
作者:梁龙先森 WX:newBlob
原创作品,抄袭必究
版权声明: 本文为 InfoQ 作者【梁龙先森】的原创文章。
原文链接:【http://xie.infoq.cn/article/bb39fa0b70cd3b6b6da33ab8d】。文章转载请联系作者。
评论