node的模块化结构(入门进阶二)

本文深入探讨了Node.js的模块化结构,遵循CommonJS规范。模块与文件一一对应,通过require命令加载,且加载后的模块会被缓存。模块分为内置模块、第三方模块和自定义模块。内置模块直接可用,源码位于lib子目录;第三方模块需先下载;自定义模块则由开发者创建。模块可通过exports属性设置对外接口,可输出函数或对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Node.js采用模块化结构,按照CommonJS规范定义和使用模块。模块与文件是一一对应关系,即加载一个模块,实际上就是加载对应的一个模块文件。

1、概述

1>  require命令用于指定加载模块,加载时可以省略脚本文件的后缀名。

//自定义模块
var circle = require('./circle.js');

// node的内置模块/第三方模块
var circle = require('./circle');//这时node会到模块的安装目录,去寻找已安装的模块

2>  有时候,一个模块本身就是一个目录,目录中包含多个文件。Node会在package.json文件中,寻找main属性所指明的模块入口文件。

//package.json
{
  "name" : "bar",
  "main" : "./lib/bar.js"
}
//模块的启动文件为lib子目录下的bar.js。当使用require('bar')命令加载该模块时,实际上加载的是./node_modules/bar/lib/bar.js文件
//如果模块目录中没有package.json文件,node.js会尝试在模块目录中寻找index.js或index.node文件进行加载。
var bar = require('bar/lib/bar.js')
//与上面写法效果同

模块一旦被加载以后,就会被系统缓存。如果第二次还加载该模块,则会返回缓存中的版本,这意味着模块实际上只会执行一次。如果希望模块执行多次,则可以让模块返回一个函数,然后多次调用该函数。

2、node的模块分为三类 : 内置模块、第三方模块、自定义模块。

1> 自定义模块

var circle = require('./circle');

2> 内置模块(node本身还提供了一系列功能模块,不用下载就可以使用,可与操作系统互动,加载时最优先加载)

http提供HTTP服务器功能
url解析URL
fs与文件系统交互
querystring解析URL的查询字符串
child_process新建子进程
util提供一系列实用小工具
path处理文件路径
crypto提供加密和解密功能,基本上是对OpenSSL的包装

内置模块的源码都在Node的lib子目录中。为了提高运行速度,它们安装时都会被编译成二进制文件。

3> 第三方模块(需要先下载才能使用)

// foo.js
module.exports = function(x) {
    console.log(x);
};
// index.js
var m = require('./foo');
m("这是自定义模块");
$ node index
这是自定义模块

module是整个模块文件的顶层变量,它的exports属性就是模块向外输出的接口。如果直接输出一个函数,那么调用模块就是调用一个函数。但是模块也可以输出一个对象。

// foo.js
var out = new Object();
out.print = (a)=>{
  console.log(a);
};
module.exports = out;
// index.js
var m = require('./foo');
m.print("这是自定义模块");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值