介绍:js 模块加载器。这个开源项目应该是多年前的了,最新版本也是在 2014-03-06 的 2.2.0 版本了。所以,对于现在的浏览器,使用 script 标签的 type=”module” es6-in-depth-modules,便可以使用模块化了。
这篇起因是刷到了玉伯大佬离职的消息,了解到 seajs 这个模块加载器是他写的,所以就阅读了一手,如有冒犯,恳请原谅。
依旧延续上次的方法,我们先从使用方式开始。
1 2 3 4 5 6 7
| define(function (require, exports, module) { var $ = require("jquery"); var Spinning = require("./spinning");
exports.moduleParam = "param"; });
|
上面就是 Sea.js 推荐的 CMD 模块书写格式。如果你有使用过 Node.js,一切都很自然。
文件目录结构
内部使用了封装的 seatools npm 包,使用的是 Grunt 打包,使用了其中的 contact file 功能。其会进行文件合并操作,所以会见到源码的 intro.js 与 outro.js 那种不完整的写法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| concat: { dist: { src: [ 'src/intro.js', 'src/sea.js', 'src/util-lang.js', 'src/util-events.js', 'src/util-path.js', 'src/util-request.js', 'src/util-cs.js', 'src/util-deps.js', 'src/module.js', 'src/config.js', 'src/outro.js' ], dest: 'dist/sea-debug.js' }, ... }
|