RequireJS 介绍说一个JS文件里只能放一个Define,这个众所周知,不提。
关于Define,它需要有一个返回值/对象,且只能有一个返回值/对象,这一点却是好多帖子没有提到的,但又非常重要的,一不留神就会报错。
别的不说了,上代码:
1. require.htm代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript" data-main="main" src="require.js"></script>
</head>
<body>
<input type="text" id="tid" value="123" />
</body>
</html>
2. main.js代码如下:
require.config({
paths: {
jquery: 'jquery-1.7.2'
}
}); require(["lzd"], function (returnValue) {
returnValue.lzd123("asdf");
alert(returnValue.userName);
});
3. lzd.js代码如下:
define(function () { function lzd123(msg) {
alert("lzd1" + msg); }; function lzd456(msg) {
alert("lzd1sdfasdfasdf" + msg);
}; var returnVar = {
userName: "111",
lzd456: lzd456,
lzd123: lzd123
} return returnVar; });
要想在main.js里能随意调用lzd.js中的lzd123或lzd456方法,就需要把他们糅合到一个对象里给返回去,细想一下,返回的对象里有方法,有属性可以使用,这就是所谓的模块化吧!
参考帖子:http://www.jaceju.net/blog/archives/beginning-requirejs/