eko*_*lis 6 javascript requirejs
我正在尝试使用require.js加载模块,我的app.js中有以下内容:
require.config({
baseUrl: "js"
});
alert("hello world"); // for debugging
require(['eh2'], function(eh2) {
alert("nothing here"); // for debugging
});
Run Code Online (Sandbox Code Playgroud)
但是,当我运行我的应用程序时,尽管app.js正在加载,但我要求的模块从未加载 - "hello world"执行,但"此处没有"不会!
我在HTML页面中的脚本标记如下所示:
<script type="text/javascript" src="js/lib/require.js" data-main="app"></script>
Run Code Online (Sandbox Code Playgroud)
eh2.js位于js文件夹中,它包含在一个define语句中:
define(["./screens/Screens"], function(screens) {
return {
// code here
};
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?require.js是否默默无法在screens.js下加载一些子模块,也许?
以下是Screens模块的代码:
define([ "screens/TitleScreen", "screens/GameScreen" ], function(titleScreen, gameScreen) {
return {
screenFuncs: {
"TitleScreen" : titleScreen.TitleScreen,
"GameScreen" : gameScreen.GameScreen,
},
buildScreen: function(data) {
var func = screenFuncs[data.type];
var screen = new func(data.params);
return screen;
},
};
});
Run Code Online (Sandbox Code Playgroud)
定义调用中的路径是否需要相对于我所在的js文件的当前位置,或者相对于app.js中定义的根?
替换这个:
define(["./screens/Screens"], function(screens) {
....
});
Run Code Online (Sandbox Code Playgroud)
要么是absolut路径变体:
define(["screens/Screens"], function(screens) {
....
});
Run Code Online (Sandbox Code Playgroud)
或使用:
define(function(require) {
var screens = require("./screens/Screens");
....
});
Run Code Online (Sandbox Code Playgroud)
来自文档:
define()中的相对模块名称:
对于可能在define()函数调用中发生的require("./ relative/name")调用,请务必请求"require"作为依赖项,以便正确解析相对名称:
define(["require", "./relative/name"], function(require) {
var mod = require("./relative/name");
});
Run Code Online (Sandbox Code Playgroud)
或者更好的是,使用可用于翻译CommonJS模块的缩短语法:
define(function(require) {
var mod = require("./relative/name");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8524 次 |
| 最近记录: |