全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

NodeJS模块系统专题

专题说明

本专题面向Node.js初学者,系统讲解模块系统基础知识,从模块分类、CommonJS规范到require/module.exports用法、模块缓存机制、npm包管理及ES Modules,帮助开发者理解Node.js模块化编程的核心原理。

学习目标

  1. 理解Node.js模块系统的三大核心作用和模块分类
  2. 掌握require加载模块的路径解析规则
  3. 学会使用module.exports和exports导出模块
  4. 理解模块缓存机制和单例模式
  5. 掌握npm包管理的基本命令和package.json配置
  6. 了解ES Modules与CommonJS的区别

学习内容

本专题涵盖以下知识点:

  • 模块系统概述:模块系统作用、模块分类、加载优先级
  • CommonJS规范:require用法、module.exports导出、exports快捷方式
  • 模块缓存机制:模块单例模式、缓存原理、清除缓存
  • npm包管理:npm install命令、本地与全局安装、package.json配置
  • ES Modules:import/export语法、与CommonJS对比、值的引用与拷贝

学习建议

  1. 这是Node.js入门的核心专题,模块化是Node.js的基础架构
  2. 重点理解require路径解析规则,区分核心模块和文件模块
  3. 理解module.exports和exports的区别,避免导出错误
  4. 模块缓存机制确保单例模式,理解其对代码的影响
  5. npm是Node.js生态的核心工具,掌握基本命令
  6. ES Modules是现代标准,了解与CommonJS的切换方式

📝 配套习题(20 题)

💡 参考答案在文末
判断题
1

自定义模块文件必须放在node_modules目录下才能被require加载。

A

B

2

Node.js中,模块可以分为核心模块、文件模块和第三方模块三种类型。

A

B

单选题
3

执行npm install express命令后,express包会被安装到哪里?

A

全局目录

B

当前项目的node_modules目录

C

当前目录的根目录

D

npm的缓存目录

4

当使用require('./module')加载一个模块时,require函数返回的是什么?

A

模块文件的路径

B

模块文件的内容字符串

C

module.exports导出的值

D

一个Promise对象

5

如果要让一个模块只导出一个构造函数Person,应该使用哪种方式?

A

exports = Person

B

exports.Person = Person

C

module.exports = Person

D

module.exports.Person = Person

6

Node.js模块系统的主要作用是什么?

A

提高代码执行速度

B

组织代码、实现作用域隔离和代码复用

C

增加内存使用效率

D

简化异步编程

7

在Node.js中,当使用require('fs')require('./fs')时,分别加载的是什么模块?

A

两者都加载核心模块fs

B

前者加载核心模块fs,后者加载当前目录下的fs.js文件

C

前者加载当前目录下的fs.js,后者加载核心模块fs

D

两者都会报错

8

CommonJS模块什么时候被执行?

A

在代码编译时执行

B

在require调用时执行,且只执行一次

C

每次访问导出值时执行

D

在程序启动时全部执行

9

ES Modules与CommonJS的主要区别之一是什么?

A

ES Modules只能在服务器端使用

B

ES Modules使用import/export语法,CommonJS使用require/module.exports

C

CommonJS支持异步加载

D

ES Modules导出的是值的拷贝

10

创建一个自定义模块,导出一个名为greet的函数,以下哪种写法是正确的?

A

export function greet() {}

B

module.exports = { greet: function() {} }

C

exports.greet = function() {}

D

B和C都正确

11

以下哪种ES Modules导入语法是正确的?

A

import module from './module'

B

import module from './module.js'

C

require('./module.js')

D

import module = require('./module.js')

12

fs模块中,同步方法和异步方法的主要区别是什么?

A

同步方法更安全

B

异步方法有回调函数,同步方法返回结果

C

同步方法只能在服务器端使用

D

异步方法会阻塞程序执行

13

ES Modules导出的值是什么类型?

A

值的深拷贝

B

值的浅拷贝

C

值的引用(绑定)

D

JSON字符串

14

package.json文件的主要作用是什么?

A

存储项目源代码

B

存储项目的元信息和依赖配置

C

存储npm的配置信息

D

存储Node.js的运行环境配置

15

当同一个模块被多次require时,会发生什么?

A

模块每次都会重新执行并返回新对象

B

模块只执行一次,后续require返回缓存的对象

C

第二次require会报错

D

每次require返回的对象互不影响

16

当执行require('lodash')且当前目录没有node_modules时,Node.js会如何查找lodash模块?

A

直接报错"模块未找到"

B

只在当前目录查找

C

从当前目录向上逐级查找node_modules目录

D

直接在全局npm目录查找

多选题
17

在CommonJS模块中,以下哪些是模块内部的内置变量?(多选)

A

module

B

exports

C

require

D

import

填空题
18

在Node.js中,创建自定义模块导出一个对象,通常使用____________对象,也可以使用它的简写形式____________来添加属性。

19

使用require加载Node.js核心模块时,应该使用____________函数,参数直接传入模块名称如'fs'、'http'。要加载当前目录下的myModule.js文件,应该传入路径____________

20

ES Modules使用________________________关键字进行模块导入导出,CommonJS使用____________module.exports。ES Modules导出的是值的引用,CommonJS导出的是值的拷贝

参考答案
1.错误 2.正确 3.B 4.C 5.C 6.B 7.B 8.B 9.B 10.D 11.B 12.B 13.C 14.B 15.B 16.C 17.A;B;C 18.module.exports;exports 19.require;./myModule 20.import;export;require
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 NodeJS核心模块进阶
下一个专题 → NodeJS环境搭建与运行
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码