NodeJS模块导入导出完全指南:掌握ES6与CommonJS规范

在我之前的文章中,我们讨论了”如何安装Enide Studio 2014 IDE”和”如何创建Node.js应用程序”。在讨论”如何创建新的Node.js模块并在其他Node.js模块中重用它们”之前,我们首先需要对如何导出和导入Node.js模块有一些基本的了解。在本文中,我们将从理论上讨论以下两个重要的Node.js概念。

  • 如何导出Node.js模块
  • 如何导入Node.js模块

我们将会在下一篇文章中特别运用这些知识,同时在我所有未来的文章示例中也会用到。

导出一个Node.js模块

首先,我们需要了解为什么需要导出一个Node.js模块。Node.js已经提供了几乎所有所需的模块(我们可以在它的官方网站https://www.npmjs.com/上查看更新。它也被称为Node.js模块库)。但在一些实际应用中,我们可能会有一些应用功能,在该应用的许多地方都使用到,但在Node.js模块库中找不到。在这种情况下,为了获得可重用性的好处,我们需要创建自己的新的Node.js模块。仅仅创建新模块还不足以在系统的其他模块中使用它。我们需要导出这个模块,以便其他模块可以重用它。如果您是UI或Java开发人员,那么这对您来说是很熟悉的。如果我们在基于Java的应用程序中有任何常见或可重用的组件,那么我们会将其开发为一个独立的项目,创建一个Jar文件,并将其添加到所需的项目类路径中。现在不要太担心如何创建一个Node.js模块。我们将在以后的文章中讨论如何创建我们自己的新Node.js模块。Node.js平台提供了一种技术来导出以下内容,以便其他模块可以在不重新定义的情况下重用它们。

  • 变量
  • 函数
  • 模块

要导出这三项内容,我们必须使用相同的技术。Node.js已经提供了一个对象”exports”来完成这一操作。语法:我们现在将逐个例子来看。这里我们只是从理论上讨论它们。在我下一篇文章中,我们将举一个实际场景并实现一个Node.js应用程序。

如何导出JavaScript变量

我们使用Node.js的”exports”对象来导出一个Node.js模块的变量,以便其他模块可以重用它。在实际情况下,我们不仅仅是导出一个变量。但是出于练习的目的,为了让初学者更清楚,我们将单独讨论它。

语法:

exports.变量名 = 变量值;

例子:假设我们已经创建了一个简单的Node.js项目,其中包含一个JavaScript文件:pi.js文件,其内容如下。

var PI = 3.1416;
exports.PI = PI;

这里我们将PI变量导出为exports.PI,并将其命名为PI。这意味着其他的Node.js项目可以很容易地通过使用PI名称来使用这个变量。

如何导出一个JavaScript函数

我们使用Node.js相同的”exports”对象来导出一个Node.js模块的JavaScript函数,以便其他模块可以重用它。在实际环境中,我们可能会这样做,但不建议始终使用。

语法:

exports.函数名 = 函数名;

例子:让我们假设我们创建了一个简单的Node.js项目,其中包含一个名为arithmetic.js的JavaScript文件,其内容如下。

function add(a, b) {
    return a + b;
}

function sub(a, b) {
    return a - b;
}

function mul(a, b) {
    return a * b;
}

function div(a, b) {
    return a / b;
}

exports.add = add;
exports.sub = sub;
exports.mul = mul;
exports.div = div;

在这里,我们将4个JavaScript函数分别导出。这意味着其他Node.js项目可以直接重用它们。这是一个简单的算术应用程序。然而,如果我们使用一些实际的Node.js应用程序,我们会发现有很多JavaScript文件,每个文件可能包含很多函数。在这种情况下,逐个导出每个函数是非常繁琐的过程。为了解决这个问题,我们需要使用导出Node.js模块的技术,如下所述。

如何导出一个Node.js模块

我们使用Node.js相同的”exports”对象来导出一个Node.js模块,以便其他模块可以重用它。在实际环境中,这是推荐的。

语法:

exports.模块名 = {
    // 变量和函数定义
};

示例:假设我们创建了一个简单的Node.js项目,其中包含一个JavaScript文件:arithmetic.js文件,其内容如下。

exports.arithmetic = {
    PI: 3.1416,
    
    add: function(a, b) {
        return a + b;
    },
    
    sub: function(a, b) {
        return a - b;
    },
    
    mul: function(a, b) {
        return a * b;
    },
    
    div: function(a, b) {
        return a / b;
    }
};

在这里,我们只使用一个exports语句就导出了所有4个JavaScript函数和PI变量。这意味着其他的Node.js项目可以非常轻松地重用所有函数和PI变量。

导入一个Node.js模块

如果我们观察一个Node.js应用程序或模块,它可能依赖于其他现有的Node.js模块或我们自己的模块。模块化的主要优势是可重用性。我们不需要重新开发相同的现有功能。我们可以导入一个模块并很容易地重用该模块的功能。

如何导入一个Node.js模块

我们使用相同的技术来导入我们自己的模块或现有的Node.js模块。Node.js平台提供了一个函数调用”require()”来将一个模块导入到另一个模块中。

语法:

var 模块引用名 = require("模块名");

这里的”模块名”是我们所需的Node.js模块名。”模块引用名”是对该模块的引用名称。这个require()调用导入指定的模块并缓存在应用程序中,这样我们就不需要再次导入它。

例子:

  • 导入我们自己的Node.js模块:
    var arithmetic = require("./arithmetic");
  • 导入现有的Node.js模块:
    导入Node.js”express”模块:
    var express = require("express");

    导入Node.js”mongoose”模块:

    var mongoose = require("mongoose");

这个require()调用与Java中的”import”语句类似。我们使用import语句将一个包、类、接口等导入到另一个类或接口中。现在我们已经了解了如何导出和导入Node.js模块的知识。我们将在下一篇文章中利用这些知识来创建自己的Node.js模块。

bannerAds