我开始使用require.js
学习 main.jsrequire(['jquery', 'underscore', 'Module1'], function($, _, Module1) {
Module1.init();
$('#output').html('Hello World!');
});
module1.js
define('Module1', [], function(app) {
var init = function() {
alert('Hello World!') ;
}
return {
init: init
};
});
它正在运行,但我想知道我可以在 module1.js 中更改为define('MyApp', [] function(app){});
,并将我的 main.js 修改为
require(['jquery', 'underscore', 'MyApp'], function($, _, MyApp) {
MyApp.init();
$('#output').html('Hello World!');
});
请帮助,以便了解有关使用require.js的更多信息。
感谢。
在以下答案的帮助下,我已将我的编码修改为
module1.jsdefine('MyApp', [], function(app) {
var init = function() {
alert('Hello World!') ;
}
return {
init: init
};
});
main.js
require.config({
baseUrl: 'js',
paths: {
Module1: 'module1'
}
});
require(['jquery', 'underscore', 'Module1'], function($, _, MyApp) {
MyApp.init();
$('#output').html('Hello World!');
});
不幸的是我仍然无法正常工作,所以请给我更多建议。
答案 0 :(得分:1)
在定义部分中,您当前正在定义MyApp
模块的依赖关系,而不是模块本身的名称。搜索requirejs.config部分并更改模块的名称。
requirejs.config({
paths: {
'Module1': '../somepath/module1.js', // change Module1 to MyApp
...
}
});
当您更改了模块的名称后,您可以使用以下命令初始化模块:
require(['MyApp'], function(MyApp) {
MyApp.init();
});
修改强>
您还需要定义其他模块/插件。
main.js
require.config({
baseUrl: 'js',
paths: {
'myApp': 'module1',
'jquery': 'jquery.min',
'underscore': 'underscore.min'
}
});
require(['jquery', 'underscore', 'myApp'], function($, _, MyApp) {
MyApp.init();
$('#output').html('Hello World!');
});
module1.js
define(function() {
var init = function() {
alert('Hello World!');
};
return {
init: init
};
});
您也可以在模块中定义模块的名称,但是我 我不建议。来自require.js doc:
您可能会遇到一些define()调用,其中包含模块的名称作为第一个 define()[...]的参数这些通常是由 优化工具。您可以自己明确命名模块,但它 使模块不那么便携 - 如果你将文件移动到另一个 您需要更改名称的目录。通常最好 避免编码模块的名称,只是让优化 工具在模块名称中刻录。优化工具需要添加 名称,以便允许多个模块捆绑在一个文件中 在浏览器中加快加载速度。
答案 1 :(得分:1)
在定义部分中,第一个参数是模块名称,第二个参数 - 依赖项(字符串数组),第三个参数 - 是在满足所有依赖项后运行的结构函数。 在require部分中,您将依赖项用作第一个参数,将结构函数用作第二个参数。 因此,在您的示例中,您将依赖项的名称更改为MyApp,并且要求部分不知道什么是依赖项Module1,因为您更改了此依赖项的名称。
答案 2 :(得分:1)
如果您要定义一个名称与其所在文件不同的模块,那么您应该使用bundle config。
require.config({
bundles: {
module1: ["MyApp"]
}
});
您可以将在同一文件中定义的其他模块添加到阵列中。
如果文件中只有一个模块,那么您应该在没有名称的情况下定义它,并使用路径将模块名称指向文件,如enyce12&#39的答案节目。