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

JS模块化与工程化基础专题测试

20 题 45 分钟 难度:★★

考察知识点

  • 模块打包工具:Webpack核心配置、loader与plugin区别、Tree Shaking原理、Webpack Dev Server配置、Webpack与Rollup对比
  • 包管理工具:npm/yarn锁文件、语义化版本号、npx命令、npm scripts、并行安装特性
  • 工程化基础:Babel编译流程、preset-env作用、ESLint配置优先级、polyfill机制、Babel插件执行顺序
  • 模块化规范:CommonJS与ES Module对比、模块导入导出语法、动态import()、模块互操作
💡 参考答案在文末
判断题
1

Webpack开箱即用,可以直接处理JavaScript、CSS、图片等所有类型的文件,无需额外配置loader。

A

B

2

Babel默认只转换语法,不转换新的API(如Promise、Array.prototype.includes等),需要配合core-js等polyfill库来提供这些API的支持。

A

B

3

Babel 7版本采用了作用域包(scoped packages)的命名方式,所有官方包都以@babel/为前缀,如@babel/core、@babel/preset-env等。

A

B

4

yarn最初发布时的主要优势之一是支持并行安装包,而npm 5之前的版本是串行安装包的,npm 5及以后版本也支持并行安装了。

A

B

5

Webpack 5版本中,可以通过配置cache.type为filesystem来启用文件系统缓存,从而加速构建过程。

A

B

单选题
6

关于npx命令的作用,以下说法正确的是?

A

npx只能执行已全局安装的npm包

B

npx执行包时,如果本地未安装会自动下载到临时目录执行

C

npx和npm run的作用完全相同

D

npx执行完毕后会保留下载的包到node_modules

7

关于CommonJS和ES Module的主要区别,以下说法正确的是?

A

CommonJS是静态加载,ES Module是动态加载

B

CommonJS模块输出的是值的拷贝,ES Module输出的是值的引用

C

CommonJS和ES Module都可以在代码运行时动态加载模块

D

CommonJS模块中的this指向模块本身,ES Module中的this指向undefined

8

在package.json中,依赖版本号^2.3.4表示的含义是?

A

必须安装2.3.4这个精确版本

B

可以安装2.3.x系列中的任何版本,但不包括2.4.0

C

可以安装2.x.x系列中的任何版本,但不包括3.0.0

D

可以安装任何大于等于2.3.4的版本

9

关于Webpack的核心配置,以下说法正确的是?

A

entry配置只能是字符串,不能是对象或数组

B

output.path配置的是打包输出文件的名称

C

loader用于转换非JavaScript文件,plugin用于执行更广泛的任务

D

mode只能设置为development或production两种模式

10

关于@babel/preset-env的作用,以下说法正确的是?

A

它可以自动根据目标浏览器环境确定需要的Babel插件

B

它只能转换ES6语法,不能转换更新的语法特性

C

它自动包含所有可能的Babel转换插件

D

它只能用于转换ES Module为CommonJS

11

关于Webpack的Tree Shaking(摇树优化),以下说法正确的是?

A

Tree Shaking可以自动移除所有未使用的代码

B

Tree Shaking依赖于ES Module的静态结构特性

C

使用CommonJS模块规范也能获得完美的Tree Shaking效果

D

Tree Shaking只需要在配置中设置mode为production即可,无需其他配置

12

关于Webpack和Rollup的区别,以下描述正确的是?

A

Webpack更适合打包类库,Rollup更适合打包应用

B

Rollup默认支持代码分割(Code Splitting),Webpack不支持

C

Webpack使用loader处理文件,Rollup使用插件处理文件

D

Rollup打包后的代码可读性通常比Webpack差

13

以下哪种ES Module导入方式可以实现对模块的整体导入?

A

import { foo } from './module'

B

import foo from './module'

C

import * as module from './module'

D

import './module'

多选题
14

关于Webpack Dev Server的配置和功能,以下说法正确的有?

A

hot设置为true可以启用模块热替换(HMR)

B

proxy配置可以实现API请求的代理转发

C

historyApiFallback配置用于支持SPA应用的路由回退

D

contentBase配置用于指定静态资源服务的目录

15

关于ES Module和CommonJS的互操作,以下说法正确的有?

A

ES Module可以导入CommonJS模块的默认导出

B

CommonJS可以导入ES Module的所有导出

C

ES Module导入CommonJS模块时,CommonJS的exports对象会作为默认导出

D

在Node.js中,使用ES Module需要将文件扩展名改为.mjs或在package.json中设置type为module

16

关于ESLint的extends和rules配置,以下说法正确的有?

A

extends可以继承已有的配置规则集,如eslint:recommended

B

rules中设置的规则优先级高于extends中继承的规则

C

extends只能是字符串,不能是数组

D

rules中的规则可以设置为off、warn或error三个级别

填空题
17

在package.json中,可以通过____________字段定义项目脚本命令。运行这些脚本时,可以使用npm run <脚本名>命令。其中,____________和test是两个特殊的脚本,可以直接通过npm <脚本名>运行,无需加run关键字。

18

在Babel配置中,插件和preset的执行顺序是不同的:____________在数组中从前向后执行,而____________在数组中从后向前执行。这意味着如果preset数组是['@babel/preset-env', '@babel/preset-react'],则先执行preset-react。

19

在Webpack中使用____________插件可以可视化分析打包后的文件体积分布,帮助定位优化点。该插件会生成一个交互式的____________,显示每个模块的大小和依赖关系。

20

在ES Module中,导出模块成员有三种主要语法:命名导出使用____________关键字导出特定成员;默认导出使用export ____________导出单个值;也可以在声明前直接添加export关键字实现声明时导出。

参考答案
1.错误 2.正确 3.正确 4.正确 5.正确 6.B 7.B 8.C 9.C 10.A 11.B 12.C 13.C 14.A;B;C;D 15.A;C;D 16.A;B;D 17.scripts;start 18.插件;preset 19.webpack-bundle-analyzer;树状图 20.export;default
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 JS引擎与运行时原理专题测试
下一套试卷 → JS浏览器与DOM高级专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码