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