节点JS需要没有变种

{这与Twitter无关}

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

目前我使用

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

如果我能在Bootstrap index.js中做这样的事情,那真是太棒了

 module.exports.Bootstrap = My_Bootstrap; 

并且像这样称呼它

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

不需要在我的空间中声明另一个variables,是否有办法做到这一点,或者我正在盯着屏幕想知道,做梦,迷路,回来,浪费时间?

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

我创build了一个单一的全局对象,只添加了重要的模块,以便它们可以被访问和实例化。 这原来是一个了不起的答案和解决scheme,真的很方便

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

 global.Bootstrap = My_Bootstrap 

全局对象在模块之间共享。 那么你可以使用Bootstrap无论你在哪里。

不,你必须声明variables。 但是,你可以进入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(); 

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

然而,你可以做的是这样的:

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

例如你可以使用节点validation器库。

你打算使用它像:

 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')()