nodejs入门--commonjs规范

本文介绍了CommonJS规范,它弥补了JavaScript无标准的缺陷,用于规范服务器端JS脚本。还讲述了模块发展史,以及Node.js常见模块,包括核心模块、用户模块(自定义和第三方)的加载方式,如使用require函数,不同类型模块加载方式和原理有别。

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

commonjs规范

为什么要学习commonjs规范

因为commonjs规范被nodejs所使用,所以我们在学习nodejs之前,必须要对commonjs有一个清楚的了解
弥补JavaScript没有标准的缺陷,已达到像Python和Java那样具备开发大型应用的基础能力,而不是停留在开发浏览器端小脚本程序的阶段

什么是commonjs

commonJS就是为JS的模块来制定规范,因为js没有模块的功能所以CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器中。
commonjs用来规范服务器端的js脚本

模块发展史

萌芽时代,使用的编程技巧 自执行函数
09年Node.js在出现,实现了commonjs规范
三大派系之保守派,遵循了commonjs规范,提出了browserify工具
三大派系之革新派,提出了AMD规范,推出了require.js
三大派系之中立派,提出了CMD规范,推出了sea.js
AMD规范和CMD规范只能用在浏览器中,commonjs规范用于服务端

nodejs常见模块

核心模块(系统模块)

系统模块在源代码中已经编译了,以二进制文件存在,模块引入时可以直接加到内存。

对比一下,好比是浏览器执行环境,自动提供了BOM和DOM对象。

Node.js作为js的服务端执行环境,自动提供了一些对象,这些对象以模块的形式来存在的。

只要安装好node,就自然有这些核心模块。

常见的核心模块有:

  • fs模块
  • http模块/https模块
  • path模块
  • querystring模块
  • url模块
  • net模块

用户模块

所有非核心的模块,都是用户模块。 针对用户模块,又分成两种:

  • 自定义模块,自己开发项目时定义的模块,自己定义自己用
  • 第三方模块,第三方人士开源的自定义模块,需要使用npm来安装,然后引入使用

任何一个模块,必须要加载之后才能使用。 加载的方法很简单,使用require函数

require方法是nodejs提供的用于引用模块的方法。

require函数会返回一个对象,该对象公开的API可能是函数,对象。取决于模块是如何定义的,大部分情况下都是对象。

根据不同类型的模块,加载的方式略有不同:

核心模块的加载

最为简单,直接使用require载入即可,参数就是模块名称

var 名称 = require(模块名称);
require函数的参数就是模块名称,不要加任何路径、也不要加任何后缀
第三方模块的加载

针对第三方模块,必须要安装,然后才能使用require加载

使用 npm i 模块名 安装
引入
var 名称 = require(模块名称);

注意:在用法上,和核心模块是一致的,但是加载的原理是有区别的:


第三方模块

必须要安装的,然后在require的时候,也有一个查找机制,首先会在当前目录的node_modules来找,如果找到,就直接使用,否则就在祖先目录中来查找,直至根目录,根目录如果没有,再去全局路径进行查找,如果找到,使用之,如果没有找到,就会报错。
并且,node_modules文件夹的名称是固定的,不能更改。

自定义模块的加载

  1. 定义一个模块并导出

module.exports是一个node.js自带的对象,作为require函数的返回值,它的默认值是{}。所以,我们在导出模块接口的时候,需要作为这个对象的属性来导出

作为模块,一般都是导出一些对象,供其他模块来使用

module.exports有一个别名—exports,所以还有一种方法导出模块的接口

所谓的别名,其实是exports引用了module.exports对象
在这里插入图片描述
require函数获取的结果一定是module.exports,一旦给exports赋值之后就和module.exports一刀两断了,没有任何关系了。所以,在使用exports别名的时候,只能挨个的往exports对象上添加属性,而不能直接赋值
2. 使用require加载
require('./index.js')
必须要使用相对路径或绝对路径,建议使用相对路径,使用./或…/开头
require('./index')
当文件不带后缀,node会依照 目录 ->.js-> .json-> .node 的顺序进行查找.如果所有模块路径都找不到该文件,则抛出异常。
如果是目录的话,通常是会自动载入这个目录下的index.js文件
require('./src') 等同于require('./src/index.js')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值