📜  如何更改 Node.js 模块包装器?

📅  最后修改于: 2022-05-13 01:56:48.310000             🧑  作者: Mango

如何更改 Node.js 模块包装器?

模块包装函数:在底层,NodeJS 并不直接运行我们的代码,它在执行之前将整个代码包装在一个函数中。这个函数被称为 Module Wrapper 函数。有关官方文档,请参阅 https://nodejs.org/api/modules.html#modules_the_module_wrapper。

在执行模块的代码之前,NodeJS 使用具有以下结构的函数包装器来包装它:

(function (exports, require, module, __filename, __dirname) {
  //module code
});

NodeJS中模块包装函数的使用:

  1. varconstlet声明的顶级变量的作用域是模块而不是全局对象。
  2. 它提供了一些特定于模块的全局变量,例如:
    • 可用于从模块中导出值的模块导出对象。
    • __filename__dirname这样的变量告诉我们模块的绝对文件名和它的目录路径。

修改模块包装函数:考虑我们有两个文件, main.jsmodule.js 。在 main.js 中,我们覆盖Module.wrap函数以便 console.log('modifedMWF');每次需要一个模块。现在,如果我们需要module.js,它会包含一条消息来确认我们的修改是否成功。

  1. 这是将调用第二个的第一个文件。
    main.js
    var Module = require("module");
      
    (function (moduleWrapCopy) {
      Module.wrap = function (script) {
        script = "console.log('modifiedMWF');" + script;
      
        return moduleWrapCopy(script);
      };
    })(Module.wrap);
      
    require("./module.js");


    module.js
    console.log("Hello Geeks from module.js!");


  2. 这是第二个文件。

    模块.js

    console.log("Hello Geeks from module.js!");
    

输出:运行main.js,我们得到以下输出,证实了我们对Module Wrapper 函数的成功更改。

node main.js
输出窗口

运行 main.js 时的输出窗口