1.定义模块:
/* *c.js *本例创建了一个模块,它依赖于./a.js与./b.js。 */ define(['./a','./b'],function(a,b){ var c = function(){ var tmp = a.getName(); var tmp2 = b.getName(); return tmp != tmp2; } }); /* *c.js *本例创建了一个模块,无任何依赖 */ define(function(){ var c = function(){ var init = function(){ }; return init; } }); /* *c.js *本例创建了一个模块,并指定了模块名称 */ define('main/c',['./a','./b'],function(a,b){ var c = function(){ var tmp = a.getName(); var tmp2 = b.getName(); return tmp != tmp2; } });
其中第三种不常用。
第三种方法一般有优化工具生成。因为显示指定模块名称,会使得模块更不具备移植性—就是说若你将文件移动到其他目录下,你就得重命名。一般最好避免对模块硬编码,而是交给优化工具去生成。优化工具需要生成模块名以将多个模块打成一个包,加快到浏览器的载入速度。
目录如下:
–my
—-a.js
—-b.js
—-c.js
2.模块调用
//a.js define('a',['b','c'],function(){ return { name:'a', say:function(something){ console.log(something); } }; }); //d.js require(['a'],function(a){ console.log(a.name); });
从上面可以看出difine和require使用方法类似,两者区别是什么呢?
3.define与require区别
define(['./jquery'], function($) { console.log($); }); require(['./jquery'], function($) { console.log($); });
区别:
a.define用来定义,require用来加载。define定义的模块可以被其它模块调用,require不行。
b.虽然都能加载模块,但是define比require多一个接口的返回。
参考文章:
RequireJS进阶:模块的定义与加载
requirejs中define和require的定位以及使用区别?