Durandal使用require.js定义块,没有参数

时间:2015-04-10 04:53:27

标签: javascript parameters requirejs durandal

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

define(["plugins/http", "someLibrary"], function (http, foo) {
    /* code: never using "foo", but using methods from someLibrary */
}

最初,我期望foo的值,因为所有其他示例(如http)都有参数值,但显然不是某些图书馆的工作方式。将foo作为参数似乎没用,所以我删除它以查看它是否仍然有效,并且确实有效。

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

2 个答案:

答案 0 :(得分:1)

是。有各种各样的库可以设置行为,比如bootstrap,这些库可以包含在require语句中但不包含在函数参数中。您还可以写下以下require.js的简写:

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

function viewModel() {
    ...
}

答案 1 :(得分:1)

如果插件返回引用(如plugins\http情况),则只需要指定的变量。

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

我的个人实践是根据define(...)中插件的顺序来命令,根据他们是否需要指定的变量,不需要变量的插件,将定义稍后需要变量的那些将被定义为第一个。这是为了与javascript的function定义方式保持一致,你总是将可选参数放在右边。