全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页

插件开发原理与实践专题测试

20 题 40 分钟 难度:

考察知识点

  • 插件开发架构原理
  • Rollup 钩子深度解析
  • Vite 独有钩子实现
  • 虚拟模块处理
  • 插件顺序与依赖管理
  • 实战插件开发技巧
1
单选题

Vite 插件中,config 钩子与 configResolved 钩子的主要区别是什么?

A

config 在配置解析前执行,configResolved 在配置解析后执行

B

config 只在开发阶段执行,configResolved 只在构建阶段执行

C

config 可以修改配置,configResolved 只能读取最终配置

D

config 是 Rollup 钩子,configResolved 是 Vite 独有钩子

2
单选题

Vite 独有的插件钩子只在哪个阶段执行?

A

构建阶段

B

开发阶段(serve)

C

两个阶段都执行

D

根据配置决定

3
多选题

以下哪些是 Vite 独有的插件钩子?

A

config

B

configResolved

C

configureServer

D

transformIndexHtml

4
多选题

编写 transform 钩子插件时需要注意什么?

A

返回 null 表示不处理该模块

B

返回 { code, map } 对象包含转换后的代码

C

使用 id 参数过滤需要处理的文件

D

transform 钩子只在构建阶段执行

5
单选题

Vite 插件的 config 钩子在哪个阶段执行?

A

构建生产产物时

B

配置文件加载后、服务器启动前

C

模块转换过程中

D

热更新触发时

6
多选题

Vite 插件的核心钩子有哪些?

A

config - 配置修改钩子

B

transform - 模块转换钩子

C

load - 模块加载钩子

D

resolveId - 模块路径解析钩子

7
多选题

Vite 插件钩子的执行阶段如何区分?

A

服务阶段:dev server 启动时执行的钩子

B

构建阶段:生产构建时执行的钩子

C

钩子可通过 apply 属性限制执行阶段

D

所有钩子在两个阶段都会执行

8
单选题

Vite 插件对 Rollup 钩子的兼容方式是什么?

A

Vite 插件不能使用 Rollup 钩子

B

Vite 在构建阶段直接传递 Rollup 钩子

C

需要单独配置 Rollup 插件

D

Vite 重写了所有 Rollup 钩子

9
多选题

以下哪些 Rollup 钩子可以在 Vite 插件中使用?

A

generateBundle - 产物生成钩子

B

writeBundle - 写入文件钩子

C

closeBundle - 构建结束钩子

D

options - Rollup 配置钩子

10
多选题

Vite 插件中 Rollup 钩子与 Vite 特有钩子的区别有哪些?

A

Rollup 钩子只在生产构建时执行

B

Vite 特有钩子在开发服务器时也执行

C

transform 钩子在两个阶段都执行

D

config 钩子只在构建时执行

11
单选题

transform 钨子的参数包含哪些信息?

A

只有模块内容字符串

B

模块内容和模块路径

C

模块内容、路径和配置对象

D

模块内容、路径和描述符对象

12
多选题

编写 transform 钩子插件时需要注意哪些事项?

A

使用 createFilter 限制处理的文件范围

B

返回 null 表示不处理该模块

C

返回对象可包含 map(Source Map)

D

避免 SSR 场景下的非浏览器 API 调用

13
多选题

transform 钩子插件可以实现哪些功能?

A

转换自定义文件类型为 JS

B

对 JS 文件进行语法转换

C

替换代码中的特定字符串

D

注入全局代码或变量

14
单选题

load 钩子与 transform 钩子的主要区别是什么?

A

load 处理文件读取,transform 处理内容转换

B

load 只处理 JS 文件,transform 处理所有文件

C

load 在 transform 之后执行

D

load 不能返回内容

15
多选题

load 钩子插件可以实现哪些功能?

A

创建虚拟模块,返回动态生成的内容

B

阻止默认文件加载,返回 null

C

从网络或其他来源加载模块内容

D

在加载时注入环境变量

16
多选题

创建虚拟模块时,load 和 resolveId 钩子如何配合?

A

resolveId 捕获虚拟模块 ID 并返回解析结果

B

load 根据解析结果返回虚拟模块内容

C

虚拟模块 ID 通常以 virtual: 或 \0 开头

D

需要配置 enforce: 'pre' 确保优先执行

17
单选题

resolveId 钩子的作用是什么?

A

读取模块文件内容

B

将导入路径解析为实际模块 ID

C

转换模块代码

D

生成模块 Source Map

18
多选题

resolveId 钩子可以实现哪些自定义解析功能?

A

将裸模块名映射到特定路径

B

创建虚拟模块的解析结果

C

处理特殊的导入语法(如 ?raw、?url)

D

添加额外的导入路径

19
多选题

resolveId 钩子的返回值可以包含哪些信息?

A

id - 解析后的模块路径或 ID

B

external - 标记为外部依赖

C

moduleSideEffects - 是否有副作用

D

resolvedBy - 标记解析来源

20
单选题

createFilter 函数的作用是什么?

A

过滤配置选项

B

创建文件路径匹配过滤器

C

过滤构建产物

D

筛选依赖包

← 上一个试卷 微前端与模块联邦专题测试
下一个试卷 → 插件系统专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库