分享

主模块(main.js)的内容

 昵称33008491 2016-05-04
在index.html页面里加入<script src="Scripts/require.js" data-main="Scripts/main"></script>后便可在主模块main.js里写内容了。

1. 不需要依赖其他模块时,我们可以直接写入JavaScript代码,如:

alert("加载主模块成功"); //不依赖其他模块,也就不必用require.js加载了

2.  需要依赖其他模块时,就要使用AMD规范定义的的require()函数:

require(['test1', 'test2'], function (){ 
//这里可以调用test1.js、test2.js里定的js方法
});

require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,上例就是['test1', 'test2'],即主模块依赖这两个模块;

第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数(testa,testb)形式传入该函数,从而在回调函数内部就可以使用这些模块。

require()异步加载test1,test2,浏览器不会失去响应;它指定的回调函数,只有前面的模块都加载成功后,才会运行。

test1.js与test2.js都与main.js在同一目录(文件夹)中,加载完成后,相当于test1.js与test2.js的所有代码都放在main.js里了。

3. 使用require.config()自定义模块加载:

require.config()须写在main.js的顶部,里面的参数是一个json对象。先举个例子吧:
require.config({
   baseUrl: "",
paths:{
"t1" : "test1", //此时test1.js与main.js在同一目录中
"t2" : "test2"//冒号前面是别名,后面是js文件所在路径,如果在其他主机上,可写入网址
}
});

如果test1.js不在main.js同一目录,有两种写法:
require.config({
baseUrl: "js",
paths:{
"t1" : "test1", //此时test1.js在js目录中
"t2" : "test2"
}
});
require.config({
paths:{
"t1" : "js/test1", //此时test1.js在js目录中
"t2" : "js/test2"
}
});

然后就可以加载模块了:
require(['t1', 't2'], function (){ 
//这里可以调用test1.js、test2.js里定义的js方法
});

4. require.config()里的对象还有shim属性,用于加载非规范的模块(即不按照AMD规范也不用define函数定义模块的js文件)
require.config({ baseUrl: 'Scripts', paths: {
't1': 'test1', 't2': 'test2',
'angular':'angular.min' }, shim: { //deps数组表明t1模块要依赖的其他模块,这里需要依赖paths里配置的angular模块。
//exports的属性值是名为t的全局变量,在t1模块外部调用该模块时,就用该名字。
 //也可以't1':['angular']这种方式配置,直接给出依赖模块,外部调用名字就用t1
't1' : {
deps:['angular'],
exports: 't'
}
} });

                                                                                                                                                             


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多