基于Require.js使用方法(总结)(2)
• 如果某个模块在另一台主机上,也可以直接指定它的网址,比如
require.config({ paths: { "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min" } });
五、AMD模块的写法
require.js加载的模块,采用AMD规范。也就是说,模块必须按照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()函数加载上面这个模块的时候,就会先加载myLib.js文件。
六、加载非规范的模块(shim的使用方式)
// app.js function sayHello(name){ alert('Hi '+name); }
// main.js require.config({ shim: { 'app': { //这个键名为要载入的目标文件的文件名,不能随便命名。 exports: 'sayHello' //exports的值为my.js提供的 对外接口的名称 } } }); require(['app'], function(sayHello) { alert(sayHello()) })
导出一个函数,意味着我们得到了一个javaScript类
但是如果在my.js中写了很多function,整合成一个function有点麻烦,想直接导出?方法如下:
// app.js function sayHi(name){ alert('Hi '+name); } function sayHello(name){ alert('Hiello '+name); }
// main.js require.config({ shim: { app: { init: function() { //这里使用init将2个接口返回 return { sayHi: sayHi, sayHello: sayHello } } } } }); require(['app'], function(a) { a.sayHi('zhangsan'); a.sayHello('lisi'); });
内容版权声明:除非注明,否则皆为本站原创文章。