Javascript 杜兰达尔';s使用不带参数的require.js定义块

Javascript 杜兰达尔';s使用不带参数的require.js定义块,javascript,parameters,requirejs,durandal,Javascript,Parameters,Requirejs,Durandal,我需要在javascript文件中为我的一个页面使用一个库。我发现我可以使用: define(["plugins/http", "someLibrary"], function (http, foo) { /* code: never using "foo", but using methods from someLibrary */ } 最初,我希望foo有一个值,因为所有其他示例(如http)都有参数值,但someLibrary显然不是这样工作的。将foo作为参数似乎毫无用处,所以

我需要在javascript文件中为我的一个页面使用一个库。我发现我可以使用:

define(["plugins/http", "someLibrary"], function (http, foo) {
    /* code: never using "foo", but using methods from someLibrary */
}
最初,我希望foo有一个值,因为所有其他示例(如http)都有参数值,但someLibrary显然不是这样工作的。将foo作为参数似乎毫无用处,所以我删除了它,看看它是否仍然有效,它确实有效


关闭参数可以吗?在这种情况下,Durandal/Require.js最佳实践的总体共识是什么?这两种选择似乎都不是特别优雅。有没有更好的方法来实现同样的目标?

是的。有各种库可以设置行为,比如引导,它们可以包含在require语句中,但不包含函数参数。您还可以编写以下require.js速记:

var http = require('plugins/http');
require('somelibrary');

function viewModel() {
    ...
}

如果插件返回引用(如
plugins\http
case),则只需要指定一个变量

某些插件将自身附加到其他对象或插件,向其他对象添加函数或属性,因此它不会返回任何引用(如示例中的
someLibrary
)。所以你不需要一个变量


我个人的做法是,根据是否需要指定变量,对
define(…)
中插件的顺序进行排序,不需要变量的插件将在之后定义,需要变量的插件将在之前定义。这是为了与javascript的
函数定义方式保持一致,您总是将可选参数放在右边。

如果这个答案对您有帮助,请不要忘记向上投票并接受