全部学科
Python全栈
python
NodeJS全栈
nodejs

NodeJS模块系统专题测试

23 题 45 分钟 难度:★★

考察知识点

  • 模块系统概述:模块系统作用、模块类型分类、模块加载优先级
  • 自定义模块创建:module.exports与exports用法、导出单个值与对象
  • CommonJS规范:同步加载、值拷贝特性、模块执行时机、内置变量
  • require与module.exports:require返回值、路径解析、导出方式区别
  • 内置模块:fs、path、http等核心模块功能与用法
  • npm包管理:npm命令、package.json、版本号规则、package-lock.json
  • 模块加载机制与缓存:模块缓存机制、查找路径、循环依赖处理、包装函数
  • ES Modules:import/export语法、静态分析、值引用特性、与CommonJS对比
💡 参考答案在文末
判断题
1

在package.json中,依赖版本号^4.18.2表示只安装版本4.18.2,不允许其他版本。

A

B

2

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

A

B

单选题
3

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

A

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

B

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

C

第二次require会报错

D

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

4

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

A

ES Modules只能在服务器端使用

B

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

C

CommonJS支持异步加载

D

ES Modules导出的是值的拷贝

5

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

A

exports = Person

B

exports.Person = Person

C

module.exports = Person

D

module.exports.Person = Person

6

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

A

值的深拷贝

B

值的浅拷贝

C

值的引用(绑定)

D

JSON字符串

7

关于CommonJS模块规范,以下说法正确的是?

A

CommonJS模块采用异步加载方式

B

CommonJS模块的输出是值的拷贝,而非引用

C

CommonJS主要适用于浏览器环境

D

CommonJS模块可以使用import语法导入

8

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

A

export function greet() {}

B

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

C

exports.greet = function() {}

D

B和C都正确

9

当执行require('./utils/helper')时,如果utils目录下没有helper.js文件,但存在helper目录且包含index.js,会发生什么?

A

抛出错误"模块未找到"

B

加载 ./utils/helper/index.js 文件

C

返回空对象

D

自动创建 helper.js 文件

10

Node.js模块代码实际上被包装在一个函数中执行,这个包装函数的参数不包括以下哪个?

A

exports

B

require

C

import

D

__filename

11

以下哪个模块用于处理文件路径?

A

fs

B

path

C

url

D

http

12

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

A

直接报错"模块未找到"

B

只在当前目录查找

C

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

D

直接在全局npm目录查找

13

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

A

全局目录

B

当前项目的node_modules目录

C

当前目录的根目录

D

npm的缓存目录

14

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

A

提高代码执行速度

B

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

C

增加内存使用效率

D

简化异步编程

15

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

A

两者都加载核心模块fs

B

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

C

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

D

两者都会报错

多选题
16

以下哪些是npm的常用命令?(多选)

A

npm install

B

npm uninstall

C

npm update

D

npm start

17

以下关于Node.js内置模块的说法,正确的是?(多选)

A

fs模块可以读写文件

B

http模块可以创建HTTP服务器

C

path模块用于处理和转换文件路径

D

所有内置模块都需要npm install安装

18

关于module.exportsexports的区别,以下说法正确的是?(多选)

A

exports是module.exports的引用

B

可以直接给exports赋值来导出对象

C

给module.exports赋值会断开与exports的引用关系

D

最终导出的是module.exports的值

19

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

A

module

B

exports

C

require

D

import

20

在Node.js中使用ES Modules可以通过哪些方式?(多选)

A

使用.mjs文件扩展名

B

在package.json中设置"type": "module"

C

使用.cjs文件扩展名

D

在文件顶部添加"use module"

21

关于ES Modules和CommonJS混合使用,以下说法正确的是?(多选)

A

ES Modules可以导入CommonJS模块

B

CommonJS可以导入ES Modules

C

ES Modules中可以使用require函数

D

CommonJS中可以使用动态import()导入ES Modules

填空题
22

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

23

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

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