我正在尝试实施Require.js,虽然我正在尝试遵循这两个教程(here和here),但我还是不能让它工作。这就是我到目前为止所做的:
在我的索引文件:
中<script type="text/javascript" data-main="../js/main" src="../js/libs/require/require.js"></script>
在 main.js
内require.config({ baseUrl: "../js/",
paths: {
"jq-loader": "libs/jquery/jquery",
"jqm-loader": "libs/jquery-mobile/jquery-mobile",
"someplug": "libs/someplug/somplug",
}
});
// define app and dependencies??? - not sure what goes here? All plugins I'm using?
require(['app','order!libs/jquery/jquery', 'order!libs/jquery-mobile/jquery-mobile'],
function(App){
App.start();
});
在 jquery.js
内 define([ 'order!libs/jquery/jquery.min' ], function(){ return $; });
在 jquery.js 内部(取决于Jquery)
// ERROR here in "mobile" being undefined
define(['order!libs/jquery-mobile/jquery-mobile.min'], function(){ return mobile; });
app.js
define([ 'jq-loader', 'jqm-loader'], function($, mobile){
var start = function() {
$(document).ready(function() {
alert("Hello world!");
})
}
return {"start":start};
});
我很高兴我到目前为止已经做到了,但我真的很想看到所有的一切。现在,我在jquery-mobile.js文件中收到错误 mobile is not defined 。我想因为Jquery-Mobile并不真正属于它......
有人能说些什么吗?非常感谢!
修改
这是我sample setup
答案 0 :(得分:6)
在我看来,那时jqm对jquery一无所知。所以你得到一个错误。如果要使用这样的加载器,可能需要在一个require块中加载jquery。比回调加载jqm使用一个更多的要求。 但是你不需要这些包装器加载器来加载jqm的jquery。
在第一次加载jquery的主js中,比jqm。那就足够了。您也无需在app.js中定义它们。
Main.js应该类似于:
require.config({ baseUrl: "../js/",
paths: {
"app": "path to app",
"jquery": "path to jquery",
"jqm": "path to jqueryMobile",
"someplug": "libs/someplug/somplug",
}
});
require(['order!jquery', 'order!jqm', 'app'],
function(jquery, jqm, App){
App.start();
});
你的app.js:
define([], function(){
var start = function() {
$(document).ready(function() {
alert("Hello world!");
})
}
return {"start":start};
});
请告诉我它是否无效并在某处上传您的来源。 问候。