requirejs 实现了规范
语法: require([module], callback);
解释: 是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义
//翻译字段
{ { if status==4 }} hello{ {/if}}
通行的Javascript模块规范共有两种:和
加入有一个main.js 进行比较
var math = require('math'); math.add(2,3); // 5
require(['math'], function (math) { math.add(2, 3); });
优点:异步加载 更适合于浏览器编程
在main.js为各个模块配置路径
require.config({ baseUrl: "js/lib", paths: { "jquery": "jquery.min", "underscore": "underscore.min", "backbone": "backbone.min" } });
AMD模块的写法
require.js加载的模块,采用AMD规范 :模块必须采用特定的define()函数来定义
如果一个模块不依赖其他模块,那么可以直接定义在define()函数之中
// math.js define(function (){ var add = function (x,y){ return x+y; }; return { add: add }; }););
使用:
// main.js require(['math'], function (math){ alert(math.add(1,1)); });
如果这个模块还依赖其他模块,那么define()函数的第一个参数,必须是一个数组,指明该模块的依赖性。
define(['myLib'], function(myLib){ function foo(){ myLib.doSomething(); } return { foo : foo }; });
加载非规范的模块
require.config()接受一个配置对象,这个对象除了有前面说过的paths属性之外,还有一个shim属性,专门用来配置不兼容的模块。具体来说,每个模块要定义(1)exports值(输出的变量名),表明这个模块外部调用时的名称;(2)deps数组,表明该模块的依赖性。
shim: { 'jquery.scroll': { deps: ['jquery'], exports: 'jQuery.fn.scroll' } }
参考资料:http://www.ruanyifeng.com/blog/2012/11/require_js.html