我非常困扰ATM与Requirejs。我无法访问我所需的文件。
我告诉你我的代码,你会看到问题:
的index.html :
<script src="libs/jquery/requirejs.js"></script>
<script src="js/boot.js"></script>
<script src="home/init.js"></script>
boot.js :
require.config({
paths: {
jquery: 'libs/jquery/jquery',
home: 'home/home'
}
});
// my main module
define('common', [
'jquery'
], function($){
$('body').append('boot loaded ');
return { }
});
// require the main module
require(['common']);
在这里,没关系。
home.js :
// simple object
var home = {
syl: 88
}
init.js :
// home module
define('init_home', [
'jquery',
'home'
], function($, home){
$('body').append('init loaded');
return home;
});
require(['init_home'], function(home) {
console.log(home.syl); // Uncaught TypeError: Cannot read property 'syl' of undefined
});
检查错误。
如何访问我的home.js?请问是什么语法?
任何提示都表示赞赏。
谢谢,问候。
答案 0 :(得分:0)
从我看到的,你还没有设置基本URL。 Requirejs加载相对于基本URL的所有文件。
我建议您重新构建代码路径,以便所有JS文件都驻留在公共文件夹中,例如:
<script src="scripts/libs/requirejs.js"></script>
<script src="scripts/boot.js"></script>
<script src="scripts/home/init.js"></script>
如您所见,现在基本URL是“scripts”文件夹。将属性添加到“requirejs.config”:
require.config({
baseUrl: "scripts",
.....
.....
});
现在requirejs知道必须从相对于脚本文件夹的路径加载代码。
阅读此documentation以获得进一步说明。
此外,您只需定义:
即可返回对象define("module_name", {
name: "value"
});