1. mootools模块
1.1. 模块结构
/Source |--Browser |--Browser.js |--Class |--Class.js |--Class.Extras.js |--Core |--Core.js |--Element |--Element.js |--Element.Style.js |--Element.Dimensions.js |--Element.Event.js |--Element.Delegation.js |--Fx |--Fx.js |--Fx.CSS.js |--Fx.Morph.js |--Fx.Transitions.js |--Fx.Tween.js |--Request |--Request.js |--Request.HTML.js |--Request.JSON.js |--Slick |--Slick.Finder.js |--Slick.Parser.js |--Types |--Array.js |--DOMEvent.js |--Function.js |--Number.js |--Object.js |--String.js |--Utilities |--Cookie.js |--DOMReady.js |--JSON.js
1.2. 模块功能
- Core:MooTools框架中一些通用的函数,另外在这个模块内,会对原生的Javascript对象,比如Function等做一些拓展。常用的一些拓展框架对象的方法比如:overloadSetter,overloadGetter,implement,extend等都是在这个模块里定义的。
- Types: 拓展Javascript原生对象:Function Array String Event Number。
- Browser: 浏览器UA嗅探以及操作系统平台监测
- Class: 定义了Class构造函数,实现了Javascript的类型系统,是MooTools框架的基础。
- Slick: CSS选择器引擎。
- Element: 拓展原生的DOM基类:Element,添加了许多新的api。
- Fx: Javascript animation的实现。
- Request: AJAX实现。
- Utilities: 实现一些通用的工具类,比如Cookie,提供了cookie读写功能。
2. mootools编译
MooTools选择使用grunt作为项目构建工具,其所有的grunt配置均放在了Tests\gruntfile-options.js。
Javascript模块之间必然会有依赖的关系,mootools通过使用了YAML格式的包配置文件来搞定这个问题,我们可以在根目录下的package.yml发现这些依赖关系:
sources: - "Source/Core/Core.js" - "Source/Types/Array.js" - "Source/Types/String.js" - "Source/Types/Number.js" - "Source/Types/Function.js" - "Source/Types/Object.js" - "Source/Types/DOMEvent.js" - "Source/Browser/Browser.js" - "Source/Class/Class.js" - "Source/Class/Class.Extras.js" - "Source/Slick/Slick.Parser.js" - "Source/Slick/Slick.Finder.js" - "Source/Element/Element.js" - "Source/Element/Element.Style.js" - "Source/Element/Element.Event.js" - "Source/Element/Element.Delegation.js" - "Source/Element/Element.Dimensions.js" - "Source/Fx/Fx.js" - "Source/Fx/Fx.CSS.js" - "Source/Fx/Fx.Tween.js" - "Source/Fx/Fx.Morph.js" - "Source/Fx/Fx.Transitions.js" - "Source/Request/Request.js" - "Source/Request/Request.HTML.js" - "Source/Request/Request.JSON.js" - "Source/Utilities/Cookie.js" - "Source/Utilities/JSON.js" - "Source/Utilities/DOMReady.js"
默认情况下,grunt会打包所有的Javascript源代码,并且运行单元测试,如果你只想要打包和压缩Javascript,那么你需要在Gruntfile.js里自定义任务: