我刚开始使用RequireJS。我尝试了一个简单的代码,但有一种方法有效,但另一种方法没有。
文件夹"脚本"有" main.js"," module.js"," require.js"
<script data-main="script/main.js" src="script/require.js"></script>
requirejs( ['module'], function( mod ) {
mod.sayHello();
} );
在module.js中:
define( {
name : "value",
sayHello : function() {
alert( "Hello" );
},
sayBye : function() {
alert( "Bye" );
}
} );
我希望baseUrl成为&#34;脚本&#34;正如这里提到的那样:
http://requirejs.org/docs/api.html#jsfiles
baseUrl通常设置为与要为页面加载的顶级脚本的data-main属性中使用的脚本相同的目录。
所以,我认为没有问题,但不是mod.sayHello(),也不是sayBye()和console.log(mod.name)= undefined。
我尝试了console.log( mod )
并打印出类似这样的内容:
Object {id: "_@r6", uri: "script/_@r6.js", exports: Object}
当我使用[&#34; script / module.js&#34;]而不是[&#34; module&#34;]时,console.log( mod )
打印如下:
Object {name: "value"}
name: "value"
sayBye: ()
sayHello: ()
__proto__: Object
和mod.sayHello(),mod.sayBye(),mod.name都可以。
包括main.js开头的以下内容是相同的:
requirejs.config( {
baseUrl: "script"
} );
我做错了什么......请帮忙。
答案 0 :(得分:1)
为您的模块使用与module
不同的名称。首先,它是一个非常无法提供信息的名称,但名为module
的模块是RequireJS的特殊模块。它是一个模块,提供有关您当前所在模块的信息。例如,如果foo.js
包含此代码:
define(['module'], function (module) {
console.log(module.id);
});
当您请求名为foo
的模块时,会加载此文件,然后console.log
将在控制台上显示"foo"
。
文档没有强调module
的存在,但在解释配置选项config
的作用时,它会讨论它。因为您可以通过module.config()
访问模块的配置。
要求"script/module.js"
有效的原因是,当您执行此操作时,您需要一个名为script/module.js
而非module
的模块。
答案 1 :(得分:0)
我继续阅读文档:
http://requirejs.org/docs/api.html
它导致github有关于此的信息:
事实证明&#34;模块&#34;是一种神奇的模块&#34;沿着&#34;要求&#34;,&#34;导出&#34;。
和&#34;模块&#34; ......:
为您提供有关模块ID和当前模块位置的信息