📜  Node.js 中的导入和导出

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

Node.js 中的导入和导出

导入和导出文件是任何编程语言的重要部分。导入函数或模块增强了代码的可重用性。当应用程序变大时,维护一个包含所有功能和逻辑的文件变得很困难。它也阻碍了调试的过程。因此,最好为特定功能创建单独的文件,然后根据需要导入它们。

Node.js 还允许导入和导出函数和模块。一个模块中的函数可以在其他模块中导入和调用,从而节省了将函数定义复制到其他文件中的工作量。该模块可以单独编辑或调试,从而更容易添加或删除功能。

包含其他文件中的函数的步骤:

  1. 创建模块:在 Node.js 中创建的模块是 JavaScript 文件。每次创建扩展名为.js的新文件时,它都会成为一个模块。
  2. 导出模块:文件名:func.js
    function add(x, y) {
       return x + y;
    }
      
    function subtract(x, y) {
       return x - y;
    }
      
    // Adding the code below to allow importing
    // the functions in other files
    module.exports = { add }
    
  3. 导入模块:我们需要导入模块以在另一个文件中使用导入模块中定义的功能。 require() 返回的结果存储在一个变量中,该变量用于使用点表示法调用函数。
    文件名:main.js
    // Importing the func.js module
      
    // The ./ says that the func module
    // is in the same directory as 
    // the main.js file
    const f = require('./func');
      
    // Require returns an object with add()
    // and stores it in the f variable 
    // which is used to invoke the required 
      
    const result = f.add(10, 5);
      
    console.log('The result is:', result);
    

    输出:

    The result is: 15

从本地文件导入多个函数:文件名:func.js

function add(x, y) {
  return x + y;
}
  
function subtract(x, y) {
  return x - y;
}
  
module.exports = { add, subtract};

文件名:main.js

const f = require('./func');
  
console.log(f.add(4, 4));
console.log(f.subtract(8, 4));

我们还可以使用解构语法来解包 require()函数返回的对象的属性,并将它们存储在相应的变量中。

const { add, subtract} = require('./func');
console.log(add(4, 4)); 
console.log(subtract(8, 4)); 

输出:

8
4

导出模块的其他方法

  • 在 module.exports 对象中定义函数。
    module.exports = {
      add: function (x, y) {
        return x + y;
      },
      
      subtract: function (x, y) {
        return x - y;
      },
    };
    
  • 将每个函数独立定义为 module.exports 的方法
    module.exports.add = function (x, y) {
       return x + y;
    };
      
    module.exports.subtract = function (x, y) {
       return x - y;
    };
    

从目录导入模块:在目录中导入 lib.js 文件,方法是在 lib.js 前加上目录名称。

const lib = require('./mod/lib');
  
console.log(lib.add(6, 4));
console.log(lib.subtract(12, 4));

Node.js 中有三种类型的模块

  1. 从本地模块导入:这些模块由用户创建,可以导入为:
    const var = require('./filename.js'); // OR
    const var = require('./path/filename.js');
    
  2. 从核心模块导入:这些模块内置在 Node.js 中,可以导入为:
    const var = require('fs');
  3. 从第三方模块导入:这些模块使用包管理器(例如 npm)安装。第三方模块的示例有 express、 mongoose、nodemon 等。这些模块被导入为:
    const express = require('express');

因此,上面是几个从 Node.js 中的不同文件导入和导出函数的示例。