节点JS需要没有变量

Node JS require without var

本文关键字:变量 JS 节点      更新时间:2023-11-03

{这与Twitter无关}

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

目前我使用

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

如果我能在Bootstrap index.js 中做这样的事情,什么时候才是真正伟大的

module.exports.Bootstrap = My_Bootstrap;

随意地称之为

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

在不必向我的空间声明另一个变量的情况下,有没有办法做到这一点,或者我盯着屏幕想,做梦,迷路,回来浪费时间?

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

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

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

global.Bootstrap = My_Bootstrap

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

不,您必须声明变量。不过,您可以进入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);

例如,您可以使用节点验证器库。

你打算像这样使用它:

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