JET(Javascript Extension Tools - Javascript 扩展工具包)
站在巨人的肩上 Standing on shoulders of giants
JET 适用于 Web Page 和 Web App 的开发
据说是腾讯内部开发的!
JET 下载地址:http://code.google.com/p/j-et/downloads/list
特性
-
微内核设计
- 自由拼装各个模块
- 命名空间、原生对象零污染
-
无缝集成各种js框架
- 与jQuery, YUI, Mootools, Prototype.js 等框架无缝集成
- 与多种局部框架无缝集成,如:Mini, Sizzle, cssQuery, xpath, JSON 等等
-
多版本共存
- 如采用的JET版本过旧,旧有的Javascript代码不能与新版本JET兼容,则可以采用多版本共存的方式保持程序的可延续性
-
分层设计
- Javascript核心层,与Javascript解释引擎无关的封装和扩展
- 浏览器端Javascript层,对浏览器中的Javascript引擎部分的封装和扩展
代码示范
var J = new Jet();
J.out(J.version);
Jet().$package(function(J){
J.out(J.version);
});
JET设计理念
不要重复自己(Don’t Repeat Yourself)
//=================================================================
感谢 David Flanagan, John Resig, 以及 MooTools, YUI, Prototype, Dojo, ExtJs 的作者们!
//=================================================================
JET 下载:http://code.google.com/p/j-et/downloads/list
命名含义
- JET 是 Javascript Extension Tools 的缩写,即 Javascript 扩展工具套件的意思。
- jet 本意是喷气式飞机,所以同时借喻轻巧、快速的寓意。
设计理念
- 保持最优的执行效率
- 保持 Javascript 原有的代码风格,降低学习难度
- 更好的组织工业级 Javascript 应用程序
其他
- 探索在前端使用 MVP、MVC 模式来构建大型 WebApp (Build Web App with MVP)
- 探索工业级 Javascript 的开发技术
发展规划
-
核心底层 - 纯Js底层功能封装/代码组织/无缝接入其它js库 - [完成]
-
基础扩展 - 跨浏览器封装/工具函数/设计模式相关 - [完成]
-
UI 基础控件 - 按钮/面板/窗口/树形列表/Tab/lightbox/widgets...
-
实时动画系统 - 实时定时器/关键帧动画/加速度公式/物理引擎/声音控制器...
-
游戏引擎 - 角色控制/地图系统/游戏异步通讯系统/寻路算法/键盘控制/人工智能/...
结构图
第一层 |
Core Javascript 扩展模块 |
代码组织模块(轻松组织大型应用,无缝接入其它js库) |
第二层 |
Browser Javasccript 扩展模块(跨浏览器,基础封装) |
可选模块(设计模式相关模块,选择器模块...) |
|
腾讯内部使用的js库也开源了— JET(Javascript Extension Tools – Javascript 扩展工具包),很难得的一件事情,赶紧下了Jet 1.1.1版本的整个源码,包括说明文档来看看源码,看看腾讯强大的前端技术的后面会有一个怎样的js库来支撑的。http://code.google.com/p/j-et/wiki/JET
查看了Jet的使用方式之后,首先不禁冒出了一个词“复制”。是的,Jet复制了YUI3的编写方式,提供了“包”的概念package:
Jet().$package(function(J){
};
采用的也是颗粒化的方式,将负责不同功能的代码整理到独立的js文件里,比如:DOM、string、Event、http、fx、ui等等,不过Jet方法里并不能像YUI3那样直接导入该包的js文件,查看它的DEMO,需要自由组合几个js文件来实现想要的功能,做到了无缝的插入包,这个就得益于Jet中的微内核—jet.core.js。
上面是第一个“复制”,在查看jet.base.js这个文件源码的时候,看到了很多熟悉的函数呀:$try、clone、timedChunk、bind、random等等,这些都还是似乎直接复制。这个base文件包含了微内核、dom、browser、event、date、Class(用于继承和扩展的相关方法和属性)。但是,感觉看Jet的源码很爽,读起来很顺畅,整体来看Jet的各个文件的组织是:微内核来提供包以及仿照YUI3的这种操作方式,而其他的dom、event、browser等则是作为工具代码包的概念组织起来的。这就更像是一种函数功能集合,在各个包里对提供的各种接口API,也是过程函数的编写方式,增加、删除、修改都非常的容易,颗粒化的程度较高,这点非常赞~。核心逻辑简单了,代码组合的方式也就简单的多了。
Jet中Class的继承方式还是比较简单的,并且只提供原型的继承,对于父类中的使用this声明的方法和属性则不继承。这点不知道开发人员是怎么考虑的。
还有一个非常赞的地方,是event包中addEventListener、removeEventListener在IE下的处理方式。在IE下使用一个包装函数来对事件event对象做属性扩展,来使得跟W3C的事件的属性接口达成统一。同时通过一个事件储存容器,来储存每一个事件,在window设置了unload的情况下,删除全部已注册的事件。onDomReady原理跟我之前所写的类似,通过定时器来检测document、document.body、document.getElementById、document.getElementsByTagName是否可用来实现。
在代码的编写方式上也有值得借鉴的地方:在包的开头将全部的功能函数用变量声明了,之后实现每一个功能函数,最后把功能函数注册到包的命名空间下面。这样组织代码,看起来比较清晰,对实现代码的颗粒化也是有很大帮助。
不过在代码的细节上,还是有很多可以优化的地方:包括减少属性查询、执行语句,字符串的处理,以及在一些功能的实现上等等也都可以使用比较优雅的方式来实现的。但整体上来说是:简洁、代码组织有序、在兼容性方面做的也不错……
分享到:
相关推荐
根据提供的文件信息,以下是与三菱电机AC伺服系统MR-JET-G用户手册参数篇相关的内容知识点: 1. 安全注意事项:在使用MR-JET-G系列伺服放大器和伺服电机前,用户必须仔细阅读和了解所有的使用说明书、附带资料及...
Oraclejet是一款Oracle的JavaScript扩展工具包。关于 Oracle JETOracle JET主要针对于工作在客户端应用的中级到高级JavaScript开发人员。这是一套Oracle贡献的JavaScript库的开源JavaScript库的集合,它能更简单和...
Oraclejet是一款Oracle的JavaScript扩展工具包。 关于 Oracle JET Oracle JET主要针对于工作在客户端应用的中级到高级JavaScript开发人员。这是一套Oracle贡献的JavaScript库的开源JavaScript库的集合,它能更简单和...
根据所提供的文件信息,以下是关于“MR-JET-G实现CC-LINK IE Field Basic通信”的相关知识点总结: 1. 接线要点: - 驱动器上CN3控制接头的型号是MR-CCN1,为20针脚接头。 - 常用的接线包括前后极限、DOG点、紧急...
本手册主要针对三菱电机AC伺服系统的MR-JET系列的伺服放大器,特别针对JET-G和JET-G-N1型号,提供故障排查相关内容。手册详细列出了伺服放大器可能出现的故障,并给出了相应的报警编号与警告编号一览,以及详细的...
MR-JET-G 用户手册 (导入篇) MR-JET 用户手册 (硬件篇) MR-JET 合作商编码器用户手册 MR-JET 用户手册 (功能篇) MR-JET-G 用户手册 (通信功能篇) MR-JET 用户手册 (调整篇) MR-JET 用户手册 (故障排除篇) MR-JET-G ...
**JavaScript操作ACCESS——邮编查询系统v1.0** 在Web开发中,有时我们需要与数据库进行交互,提供数据查询服务。在本项目“邮编查询系统v1.0”中,我们将探讨如何利用JavaScript与Microsoft Access数据库进行通信...
总的来说,《Delta Wing Jet-Operation Manual-131023印刷版本.doc》不仅提供了全面的技术规格,还为用户提供了详细的实践指导,确保用户能够充分了解和熟练操作这款高科技模型飞机。通过遵循手册中的步骤和建议,...
直接在浏览器中创建Jeton卡。 Jeton卡是最快,最安全的在线支付方式。 Jeton卡直接在您的浏览器中运行。 只需选择您的金额并在几分钟内获得您的Jeton卡,无需支付任何佣金。 在全球范围内使用您的Jeton卡可以快速,...
javaweb常用jar包,javaee框架常用jar包,亲测可用,若需其他版本可给我留言
javaweb常用jar包,javaee框架常用jar包,亲测可用,若需其他版本可给我留言
javaweb常用jar包,javaee框架常用jar包,亲测可用,若需其他版本可给我留言
标题中的"PyPI 官网下载 | jet-0.1.7-py2-none-any.whl"揭示了这个文件是通过Python的包索引(Python Package Index,简称PyPI)官方渠道获取的,且它是Jet库的一个版本,具体版本号为0.1.7。PyPI是Python开发者发布...
"jet-google-maps"是一个基于JavaScript的库,用于在网页中集成和操作谷歌地图。它提供了更方便的方式来创建、定制和交互与Google Maps API。这个库可能是为了简化开发者的工作流程,减少与Google Maps API直接交互...
如果你打算深入研究或扩展这个工具,可以从这个源码包着手。通过阅读和理解源码,你可以了解如何添加新的模板、如何处理用户输入、以及如何自动化生成项目结构等细节。 总的来说,Jet的脚手架工具是JavaScript开发...
javaweb常用jar包,javaee框架常用jar包,亲测可用,若需其他版本可给我留言
javaweb常用jar包,javaee框架常用jar包,亲测可用,若需其他版本可给我留言
javaweb常用jar包,javaee框架常用jar包,亲测可用,若需其他版本可给我留言
在Python的生态系统中,PyPI(Python Package Index)是官方的第三方软件包仓库,它为开发者提供了上传和分享自己创建的Python模块、库或者工具的平台。标题中的"PyPI 官网下载 | jet_bridge-0.4.4-py3-none-any.whl...
python库。 资源全名:jet_bridge-0.6.4-py3-none-any.whl