跨浏览器扩展开发框架的设计与实现.pptx_第1页
跨浏览器扩展开发框架的设计与实现.pptx_第2页
跨浏览器扩展开发框架的设计与实现.pptx_第3页
跨浏览器扩展开发框架的设计与实现.pptx_第4页
跨浏览器扩展开发框架的设计与实现.pptx_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论