为了解决的问题
1 | <script src="file1.js"></script> |
异步模块定义 (Asynchronous Module Definition as AMD)
dom/events.js
定义模块
1 | define({ |
main.js
使用 RequireJS 加载模块,模块不需要后缀
1 | require(["dom/events"], function (event) { |
在 main.js
使用模块
1 | require(["dom/events"], function (events) { |
index.html
1 |
|
让模块稍微复杂点 dom/events.js
1 | define(function () { |
再写个 Array.prototype.forEach 兼容方法 utils/array.js
1 | define(function () { |
同样使这个模块稍微复杂点
1 | define(["utils/array"], function (array) { |
在 dom/events.js
中使用 utils/array.js
,添加依赖关系
1 | define(["utils/array"], function (array) { |
在 main.js
使用添加了 utils/array.js
依赖的 dom/events.js
1 | event.click(elem, function () { |
模块的名字不指定则为模块默认名
1 | require(["utils/array"], function () { |
main.js
完整配置
1 | requirejs.config({ |
RequireJS 插件
以 text plugin 为例
把 text.js 放在 main.js
同级目录,在 main.js
请求
1 | require(["text!templates/list.html", "libs/underscore"], function (listTpl) { |
templates/list.html
模板用的是 Rails html
模板语法,因为 underscorejs 的 _.template() 默认这种写法
1 | <ul> |
优化工具
app.build.js
1 | ({ |
r.js
默认优化配置,可以选择性改变
1 | buildBaseConfig = { |
开始 build 优化
1 | node /path/to/r.js -o app.build.js |
输出
1 | Optimizing (standard) CSS file: /Users/andrew/Sites/sample-build/css/custom.css |