一、加载underscore、backbone
理论上,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。,require.js是否能够加载非规范的模块呢?回答是可以的。这样的模块在用require()加载之前,要先用require.config()方法,定义它们的一些特征。举例来说,underscore和backbone这两个库,都没有采用AMD规范编写。如果要加载它们的话,必须先定义它们的特征。shim属性,专门用来配置不兼容的模块。
require.config({
shim: {
'underscore':{
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
二、加载自定义模块
/* main.js */
define(["myCustomMod"], function(myCustomMod) {
console.log(myCustomMod.max(1, 2, 3));
})
/* myCustomMod.js */
var myCustomMod = {}; // 很重要,和shim中exports值必须一致
myCustomMod.add = function(num1, num2) {
return num1 + num2;
};
myCustomMod.max = function() {
return Math.max.apply(Math, [].slice.call(arguments));
}
注意:require.config配置shim中exports的值,一定要与相关文件中暴露出全局变量名称一致。如果暴露出多个全局变量,那么exports可以指定其中任何一个,作为模块的返回结果。建议只使用一个全局变量,已减少冲突的可能性。
/* require.config.js */
require.config({
waitSeconds: 0,
baseUrl: '/',
paths: {
myCustomMod: "myCustomMod"
},
shim: {
"myCustomMod": {
deps: [],
exports: "myCustomMod"
}
}
})
/* text.html */
Test Require Shim
控制台中会打出结果
注意,在本地运行需要一个静态服务器(下述为简单的Node静态服务器)
/* node-static-server.js */
var http = require("http");
var express = require("express");
var serveStatic = require('serve-static');
var app = new express();
app.use(serveStatic(__dirname + '/'));
app.get("/", function(req, res) {
res.sendFile(__dirname + "/test.html");
})
app.listen(1337, "localhost");
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net