




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
跨浏览器扩展开发框架的设计与实现,王 军,关于我, “name“: “王军“, “company“: “阿里巴巴 一淘及搜索事业部“, “description“: “F2E, JavaScript developer“, “weibo“: “_Meteora_“ ,提纲,首先,讨论对象限于提供了成熟的扩展机制的浏览器,例如:Chrome,Firefox,Opera,Safari 等 浏览器 扩展(extension),而非 插件(plugin),扩展开发基本概念 文件构成,扩展配置信息文件 HTML, CSS, JavaScript 图片,资源文件 anything you need,扩展开发基本概念 配置信息文件,基本信息 扩展名称 版本号 功能定义 工具栏 Popup 后台脚本等 权限声明 扩展功能使用声明 URL 访问,扩展开发基本概念 两类脚本,background script (server) 独立进程,跟随浏览器生命周期 存储持久化数据,发送跨域 XHR 请求 实现扩展主逻辑,完全的 API 访问权限 content scripts (client) 存活于插入页面进程,与页面脚本环境隔离 可操作插入页面的 DOM Tree 有限的扩展 API 访问,扩展开发基本概念 可用 API,ECMAScript 5 API 浏览器扩展 API tabs windows bookmarks browserAction DOM API / BOM API HTML5 / CSS3,扩展开发基本概念 总结,浏览器扩展是为了增强浏览器的功能,使用 Web 前端技术,结合扩展 API 开发的:,Web App,现有扩展开发框架 功能,实现 WORA(write once, run anywhere) 的半自动化 builder Usage build chrome build dist firefox,现有扩展开发框架 实现原理,基于 Perl 开发 封装各浏览器扩展 API,暴露统一接口 定制的 build 语法 根据语法剪裁,合并,复制和打包文件,include FILE if BROWSER1, BROWSER / code for BROWSER1, else / code for other browsers endif,现有扩展开发框架 现状,与业务代码耦合较大,限制较多,不易拿出来单独使用 手动管理文件依赖,模糊的模块依赖关系 结构上不易扩展更多浏览器支持和 API 支持,新的扩展开发框架 ExtSync,WORA 解决上述所有问题 尽量少的开发约定,可定制的 build 配置 提供类似 NodeJS 的模块机制 结构上易扩展 builder 实现基于 NodeJS 易上手,减少学习成本 提供比浏览器原生扩展更强大的 API,ExtSync Getting Start,manifest.json (required) 扩展基本信息 background, content_scripts, etc. 权限声明等 like chrome build_config.json (optional) 指定图片等资源目录(默认 assets) 格式化 JavaScript 选项 JS脚本,HTML,CSS,图片,etc.,ExtSync API,基于 require() 和 module.exports 的模块组织方式 对于 content script 只暴露 extsync 一个全局对象用于消息通信: extsync.sendMessage() extsync.onMessage() 后台脚本强制使用 require() 引用 ExtSync 模块和自定义模块 extension , tabs, etc.,ExtSync - Build,extsync chrome extsync firefox dist output D:/output,ExtSync - 结构,ExtSync build 流程,ExtSync 模块化实现,虚拟的模块化实现 实质:实现 require() 方法,注册模块,包装作用域,查找依赖关系合并文件,ExtSync 代码检查和替换,UglifyJS TreeTransformer AST(Abstract Syntax Tree) code - AST - code 节点类型: AST_Call, AST_Assign, AST_Seq, AST_ SimpleStatement, etc. 原理:查找指定类型节点,并在 transformer 中返回新节点,ExtSync if else 实现,var ifConditionPattern = / t*if (?:chrome|firefox|opera|safari)(?: t*, t*(?:chrome|firefox|opera|safari)*) t*nr+(sS+?)nr+/ t*endif t*/g var ifElseConditionPattern = / t*if (?:chrome|firefox|opera|safari)(?: t*, t*(?:chrome|firefox|opera|safari)*) t*nr+(sS+?)nr+/ t*else t*nr+(sS+?)nr+/ t*endif t*/g,ExtSync 扩展的扩展,扩展浏览器支持,扩展 API /config.json 定义了支持哪些浏览器 base/ 下面定义了 API 实现接口 browsers/ 下定义浏览器文件夹,bui
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中英语自然拼读法在英语戏剧表演比赛中的实践与探索论文
- 中国医药行业市场分析报告
- 节假曰车辆管理制度
- 苯板房安全管理制度
- 茶艺师销售管理制度
- 《小公鸡和小鸭子》课件
- 财务预算管理与财务知识分析
- 高尔夫移动卡项目商业计划书
- 管理学案例分析闲可钓鱼与无暇吃鱼
- 见证取样手册(四川省质安站)
- 环卫车辆交通安全知识讲座
- 学生顶岗实习成绩考核表
- NB-T 47013.15-2021 承压设备无损检测 第15部分:相控阵超声检测
- 2023年黄冈市团风县社区工作者招聘考试真题
- 被迫离职通知书
- 中学化学实验员培训材料
- 30题投资管理类岗位常见面试问题含HR问题考察点及参考回答
- 校园网络运维服务需求
- 2023调度自动化系统主站信息自动联调技术规范
- 物流公司运输安全管理制度
- 三个合伙人分配合同范本
评论
0/150
提交评论