【问题标题】:NodeJS: How can I include some javascript code snippet without using require?NodeJS:如何在不使用 require 的情况下包含一些 javascript 代码片段?
【发布时间】:2016-10-20 07:02:01
【问题描述】:

我想在不使用 require 的情况下包含一些 js 文件,因为它会将它链接到一个变量,并且我有一些我想直接调用的函数。我该怎么做 ?这是不好的做法吗?

我要避免的是: 假设我有 tool.js 如下:

function foo() {
    log.debug("foo");
}    
exports.foo = foo;

在 app.js 中

var tool= require('tools.js');

tool.foo();

我希望能够在不为其创建模块的情况下调用 foo,就好像它是在 app.js 中定义的一样;像这样

foo();

【问题讨论】:

  • 你可以在这里找到答案(请查看第三个答案):stackoverflow.com/questions/5797852/…
  • 你的链接正是我想要避免的内容
  • 是的,第三个答案是对的!抱歉,我只是先检查了 2。谢谢!

标签: javascript node.js include require code-snippets


【解决方案1】:

你需要像这样使用全局,

======= app.js ======

global.foo= require('tools.js'); // declare as global
foo(); // can be called from all files

【讨论】:

    【解决方案2】:

    您可以使用全局对象获取文件并使用其功能,而无需将其分配给变量。

    file1.js

    function logger(){
        console.log(arguments);
    }
    
    global.logger = logger;
    

    file2.js

    require('./file1');
    
    logger('ABC');
    

    这种方法将摆脱变量范围,并会污染全局命名空间,可能导致与变量命名发生冲突。

    【讨论】:

    • 如果 file1.js 中缺少 global.logger = logger; 会起作用吗?因为我看到有人在教程中这样做,但它对我不起作用,谢谢你的警告
    • 不行,先测试了一下,功能不可用@Xsmael
    • 这很奇怪!现在它也适用于我,我不知道为什么-_-
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 2020-11-28
    • 2015-02-14
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多