7

{这与 Twitter 无关}

一个有趣的问题,有趣的是它可能很愚蠢,你可以笑,但我至少会对这个该死的痒有一个答案。

目前我使用

var Bootstrap = require('library/Bootstrap');
Bootstrap.run();

如果我可以在 Bootstrap index.js 中做这样的事情,那真的很棒

module.exports.Bootstrap = My_Bootstrap;

并称它为willy nilly 像这样

require('library/Bootstrap');
Bootstrap.run();

无需向我的空间声明另一个变量,有没有办法做到这一点,或者我盯着屏幕想知道、做梦、迷路、回来并浪费时间?

编辑 所以这就是我最后所做的:

我创建了一个全局对象,并且只向其中添加了重要的模块,以便可以访问和实例化它们。事实证明这是一个了不起的答案和解决方案,非常方便

4

3 回答 3

7

那么你可以只修改global对象。这类似于浏览器上的窗口对象。因此,您可以为您的模块编写一个包装器,如下所示:

global.Bootstrap = My_Bootstrap

全局对象在模块之间共享。然后,无论您身在何处,都可以使用Bootstrap

于 2012-07-16T15:08:55.557 回答
1

你不能按照你说的那样做,这意味着一个全球性的,这几乎肯定不是你想要的。

但是你可以做的是:

require('your_library').call(this,arg1,arg2);

例如,您可能正在使用节点验证器库。

您打算像这样使用它:

sanitize = require('validator').sanitize
var str = sanitize('aaaaaaaaab').ltrim('a');

但是你可以跳过所有这些并做

var str = require('validator').sanitize('aaaaaaaaab').ltrim('a')

据我了解,在内存/速度方面这样做没有缺点。

在你的具体情况下,你知道你可以跳过一点......

文件:MyBootStrap.js

Module.exports = MyBootstrap

文件:index.js(或其他)

require('library/Bootstrap.js')()
于 2013-04-05T21:27:47.983 回答
1

不,您必须声明变量。不过,你可以进入require函数内部,让它为你工作。我对 Bootstrap 的内部架构并不太熟悉,但看起来像这样的东西应该可以解决问题:

// put this in some out-of-the-way cubbyhole somewhere
var oldRequire = require;
function require(path) {
    Bootstrap = oldRequire(path);
}

// and this would go in your main file
require("library/Bootstrap");
Bootstrap.run();
于 2012-07-16T15:05:02.000 回答