📜  如何更改 NodeJS 模块包装器?

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

如何更改 NodeJS 模块包装器?

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

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

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

NodeJS中Module Wrapper函数的使用:

  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 的输出窗口