JavaScript:Node.js模块

        本节主要了解模块化的好处以及如何在Node.js中使用模块。

模块化的好处

        模块化背后的总体思想非常简单,类似于函数背后的思想。与其将所有代码都写在一个地方,从而创建一个单一的应用程序,不如将功能拆分成更小的、松散耦合的部分。每个部分都应该专注于特定的任务,使其容易理解和重用。通用应用程序的行为来自这些构建块之间的交互。

        这些较小的部分有时在其他环境中被称为组件。在Node中,它们被称为 模块,可以有不同的形式。根据模块的一般定义,它是可以使用 Node的require()函数加载的任何东西。Node.js平台遵循CommonJS模块格式。

创建模块

        模块最简单的形式是单个JavaScript文件,其中包含用于导出特定代码段的特殊命令。其余代码是模块私有的,在模块之外是不可见的。

例如, 一个 greetings.js模块可能包含以下代码。

// Create three functions
const sayHello = name => `Hello, ${name}`;
const flatter = () => `Look how gorgeous you are today!`;
const sayGoodbye = name => `Goodbye, ${name}`;

// Export two of them
module.exports.sayHello = sayHello;
module.exports.flatter = flatter;

        在Node中,可以通过在特殊模块 module.exports 对象上指定附加属性来导出(使其可在外部访问)函数。在这里,导出了两个名为 sayHello 和 flatter 的函数。第三个没有被导出。通过直接将函数定义为模块的属性,这个模块可以用更简洁的方式编写module.exports 对象。

// Create and export two functions
module.exports.sayHello = name => `Hello, ${name}`;
module.exports.flatter = () => `Look how gorgeous you are today!`;

// Create a non-exported function
const sayGoodbye = name => `Goodbye, ${name}`;

加载模块

假设这两个文件位于同一目录中,则另一个 JavaScript 文件可以使用Node.js 提供的函数require()加载先前创建的模块。

// Load the module "greetings.js"
const greetings = require("./greetings.js");

// Use exported functions
console.log(greetings.sayHello("Baptiste")); // "Hello, Baptiste"
console.log(greetings.flatter()); // "Look how gorgeous you are today!"
console.log(greetings.sayGoodbye("Baptiste")); // Error: sayGoodbye doesn't exist

         传递给 require()函数的参数标识要加载的模块。这里,"./"开头的子字符串标识相对路径:应该在于加载它的文件相同的目录中搜索模块。require()调用的结果是一个对象,在这里命名为greetings。该对象引用 module.exports模块内地经验的对象的值。因此,greetings对象有两个功能:sayHello 和 flatter作为属性。尝试访问其不存在的 sayGoodbye属性会在执行期间触发错误。

将调用产生的对象赋予 require(0加载的模块名称相同的名称,虽然不是强制性的,但这是一种常见的做法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值