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/