Javascript模块化编程require.js的用法

时间:2022-04-15 10:22:35

JS模块化工具requirejs教程(一):初识requirejs

http://www.runoob.com/w3cnote/requirejs-tutorial-1.html

JS模块化工具requirejs教程(二):基本知识

http://www.runoob.com/w3cnote/requirejs-tutorial-2.html

Javascript模块化编程(三):require.js的用法

http://www.ruanyifeng.com/blog/2012/11/require_js.html

require js define 函数

http://blog.csdn.net/u010130282/article/details/52329953

5. 完整定义

define('sample3' ,['sample','sample1'],function (sample,sample1) {
var sample4 = require('sample4');
return function(){
alert(sample.name+':'+sample.sayhell());
}
});

这就是完整定义,有名称,有依赖,有回调,内部还有common的形式引入依赖对象!

关于define函数的name和require函数的依赖名称之间的关系

  • define(name,[] , callback); 这个name可以省掉,默认是文件名称;当然也可以自定义,一旦我们定义了name,根据源代码我们可以发现define函数内部其实就是把这个name以及依赖模块、回调函数作为一个对象存储在全局的数组当中,也就是 defQueue.push([name,deps,callback]);那么这个name就是这个组件注册的的ID!

  • require([name , name2],callback); 系统首先会在全文检索path中是否对应的路径,如果没有自然把他作为路径拼接在baseUrl上去异步加载这个js文件,加载时从源代码中可以看到 ,var data = getScriptData(evt);返回的 data.id 其实就是name,然后执行contex.completeLoad(node.id),其内部就很清楚了,把define中注册的name和这里得到的name进行比较如果相等就执行。所以道理就是:require 和 define 的 name 必须保证一致!