jQuery在编写中采用了AMD模块的方式,使用的是requirejs框架。

模块开发带来的益处很多,特别对于我们来说源码的阅读更加方便明了。

Jquery主页结构

1
2
3
4
5
6
7
8
9
jquery/ -- 项目主目录
├── bower_components/ -- bower依赖目录
├── build/ -- 自定义任务目录
├── dist/ -- 发布目录
├── node_modules/ -- grunt 插件 录
├── src/ -- 源码目录
├── test/ -- 单元测试目录
├── speed/ -- 速度测试目录
└── Gruntfile.coffee -- grunt配置文件

AMD中自定义结构

src文件中比较特殊的是三个文件与1个文件夹,它分别是:

  • intro.js:包裹函数头部模块。
  • outro.js:包裹函数尾部模块。
  • jquery.js:依赖的主要入口。
  • var/:这个文件夹下定义的都是变量,它在amd编译中会被替换成var arr=[];的格式。

    我在研究代码中,我并没有沿用jQuery的配置方式,在AMD打包这一块我采用了grunt-contrib-requirejs减少配置的工作量。

AMD的好处

AMD方式不仅对开发带来了便利,测试和打包也带来了便利。

基于AMD模式的编写方式对于单元测试来说,更加简单明了。一个模块直接声明依赖进行单元测试,结构清晰。

打包方便增加或者删除模块。不同于传统的配置。申明删除模块,它之下的附属模块将一并删除,却掉了不必要的冗余。

产考文档