define / require 都处理依赖关系, 都会立即执行函数体内的代码, 比如函数中内 require(['someModule],fucntion(){
这个 module 直接写在 define 的依赖数组里也可以的, 那有什么地方是必须用 require
方法的?
没有什么地方必须用require,但是两者的意义是不一样的。 定义模块需要用define,而不是require。 如果是requirejs的程序入口,则是用require更合适。 当然你把define当做require来用也没什么,但感觉那样就不make sense了
我的问题是define和require的具体使用方法的区别和适用场合, 我试了一下define只能加载debine包装起来的库 ,非规范的只能用require来用,require可以加载包装和非包装的库,兼容性更好 只要是全是规范的模块,全部用define就可以搞定,入口用define一样立即执行 简单总结一下define用在符合规范的地方,require用来处理兼容, 另外还有一个注意的地方是require是异步,相当于程序中的过程,require不能用在接受结果的地方,举个例子
modA.js
---------------------
define([], function( template) {
var modA = {
html:'',
render: function() {
var T=this;
require(['handlebars'],function(){
var tpl=' hello {{ title }} ';
var data = {"title": "Story"};
var compiledTemplate = Handlebars.compile(tpl);
T.html = compiledTemplate(data);
console.log(' inside require'+ T.html );
return T.html;
//return html;
});
}
};
return modA;
});
load-page.js
-----------------------
define(['modA'],function (t)
{
var out=t.render();
console.log(out);
console.log(t.html);
setTimeout(function name()
{
console.log(t.html);
},3000);
});
模板在require里面有值,但是因为异步的关系,主页面执行取不到返回的值,还有require里面的this也要小心,总之处理兼容就要小心各种坑
我去,是我肤浅了。原来require还可以这么用。。。
PS:虽然说可以这么用,使用场景还是很有限,至少对于我来说。 考虑到最后会用uglifyJS打包,这种require的使用方式应该不会被打包进去吧(这里不太清楚。。O.O)