Vite 的 assetsInlineLimit 如何决定静态资源是内联为 base64 还是输出为文件?
围绕“Vite 的 assetsInlineLimit 如何决定静态资源是内联为 base64 还是输出为文件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出小于阈值内联减少请求、Git LFS 等例外及如何强制排除。
前端工程化 · Vite 与模块构建面试题第 1 页,显示第 1–45 题,共找到 45 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“Vite 的 assetsInlineLimit 如何决定静态资源是内联为 base64 还是输出为文件”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出小于阈值内联减少请求、Git LFS 等例外及如何强制排除。
围绕“Vite 的 base 配置影响哪些路径,部署到子路径或用相对 base './' 各自有什么注意点”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 base 决定产物资源 URL 前缀及相对 base 对动态导入/SSR 的限制。
围绕“Vite 构建时 sourcemap 有哪几种配置值,hidden 模式适用于什么发布流程”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 true/'hidden'/'inline' 的差异及 hidden 配合错误监控平台上传的流程。
围绕“Vite 的 build.target 决定什么,为什么不直接用 browserslist”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 target 控制语法降级与 esbuild 转译目标、默认 'modules' 基线,以及与 browserslist 的关。
围绕“Vite 生产构建的 chunk 是如何拆分的,什么时候需要用 manualChunks 手动控制”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 Rollup 默认动态导入拆 chunk 的行为及 manualChunks 解决循环依赖/缓存优化的场景。
围绕“Vite 应用构建时 CSS 代码分割如何避免异步 chunk 加载时的样式闪烁(FOUC)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 Vite 将异步 chunk 的 CSS 与其 JS 加载绑定、保证样式就绪后再执行的机制。
围绕“Vite 在开发中发现未预构建的新依赖时为什么会整页刷新”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出依赖发现延迟导致哈希变化、已有预构建产物失效需 full reload 的机制。
围绕“Vite 中动态 import() 如何实现路由级代码分割,魔法注释式的 chunk 命名是否可用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出动态导入产生独立 chunk、变量导入的受限分析与 chunkFileNames 命名方式。
围绕“Vite 的 .env、.env.local、.env.[mode] 等文件加载优先级是怎样的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出各文件的加载顺序与覆盖规则及 local 文件不入库的实践。
围绕“如何为 Vite 的自定义环境变量获得 TypeScript 类型提示”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出扩展 ImportMetaEnv 接口与 vite/client 类型引用的做法。
围绕“Vite 为什么默认只暴露 VITE_ 前缀的环境变量到客户端代码”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出防止密钥意外打入客户端 bundle 的安全考虑及 envPrefix 的修改方式。
围绕“Vite 为什么在开发期用 esbuild 而生产构建用 Rollup”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 esbuild 的 Go 实现速度优势与 Rollup 插件生态/输出灵活性的取舍,不列举两者所有特性差异。
围绕“Vite 的 import.meta.glob 与普通动态 import 相比解决了什么问题,eager 选项改变什”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 glob 按模式批量生成导入映射及 eager 转静态导入的效果与 tree-shaking 影响。
围绕“Vite HMR 中 import.meta.hot.accept 的边界如何决定更新冒泡范围”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出模块自身/依赖 accept 的判定规则和冒泡到整页刷新的条件。
围绕“如何在 Vite 中用 hot.on / hot.send 实现自定义的 HMR 事件通信”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出服务端 ws.send 与客户端 hot.on 配对实现自定义事件的流程。
围绕“哪些改动会让 Vite HMR 退化为整页刷新(full reload)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出无 accept 边界、config 文件变化、某些插件返回的失效等触发条件。
围绕“Vite HMR API 中 hot.invalidate 与 hot.prune 各自用于什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 invalidate 强制当前模块重新执行、prune 处理模块从依赖图中移除时的资源清理。
围绕“Vite 中 import.meta.env 的访问是如何在构建期被静态替换的,动态键名为什么取不到值”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出构建期静态字符串替换机制导致 import.meta.env[key] 动态访问失效。
围绕“Vite 默认构建不处理 API polyfill,需要兼容旧浏览器时应该怎么做”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 build.target 只管语法不管 API 的边界及 @vitejs/plugin-legacy/core-js 的方案。
围绕“Vite 库模式构建时 CSS 是如何处理的,cssCodeSplit 对库产物有什么影响”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出库模式下 CSS 默认打进单文件/按 chunk 拆分的行为差异及 cssCodeSplit 的取舍。
围绕“用 Vite 构建组件库时为什么要把 react 等依赖 external 掉,如何实现”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出避免把宿主依赖打进产物造成重复实例的问题及 rollupOptions.external/peerDependencies 的配。
围绕“Vite 库模式下如何配置多入口与输出格式(es/cjs/umd)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 build.lib 的 entry 多入口对象、formats 与 fileName 函数的配置方式。
围绕“配合 Vite 库模式,package.json 的 main/module/exports/types 字段应如何”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出各字段与产物文件名对应关系及 types 优先的解析顺序。
围绕“为什么在 vite.config.ts 中不能直接访问 .env 变量,loadEnv 的正确用法是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出配置加载早于 env 注入的时序问题及 loadEnv(mode, cwd) 的用法。
围绕“Vite 构建压缩默认用 esbuild,什么时候需要切换到 terser”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 esbuild 速度快与 terser 压缩率/高级混淆能力的取舍及切换成本。
围绕“Vite 中 mode 与 NODE_ENV 有什么区别,--mode staging 会影响什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 mode 决定 env 文件与 import.meta.env.MODE,NODE_ENV 控制包的行为分支及二者默认值。
围绕“Vite 构建产物中的 modulepreload 与 modulepreload polyfill 各自起什么作用”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 Vite 为入口和动态导入注入 preload 以并行化请求,及 polyfill 兼容不支持 modulepreload 的。
围绕“在 monorepo 中,为什么被 link 的本地包在 Vite 里默认不会被预构建,如何修正”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 linked 包不被预构建的默认行为及 build.commonjsOptions/optimizeDeps.include 。
围绕“Vite 中 new URL('./img.png', import.meta.url) 这种资源引用方式解决什么问”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出其对动态路径资源做静态分析与打包的机制及适用场景(如 worker、模板字符串拼接的限制)。
围绕“什么场景下需要配置 Vite 的 optimizeDeps.include 和 exclude”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 include 处理未在入口静态引入的依赖、exclude 保留为原生 ESM 等判断标准。
围绕“如何让一个 Vite 插件只在开发或只在构建时生效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出插件 apply: 'serve'/'build' 或函数形式按 command 判断的做法。
围绕“Vite 插件中 config 钩子与 configResolved 钩子的职责分别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 config 用于修改/追加配置(可被合并)、configResolved 拿到最终配置做初始化。
围绕“Vite 插件的 enforce: 'pre'/'post' 以及钩子执行顺序如何影响转换结果”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 alias/用户 pre/核心/普通/post/构建插件的排序规则及典型使用场景。
围绕“Vite 插件的 handleHotUpdate 钩子能做什么,与默认 HMR 流程如何配合”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出过滤/修改受影响模块列表、自定义更新或触发 full reload 的能力及返回值约定。
围绕“Vite 插件与 Rollup 插件的兼容关系是什么,哪些 Rollup 插件不能直接用于开发期”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 Vite 复用 Rollup 插件接口但开发期有额外钩子的关系,以及 build 专用钩子在 dev 下不生效的判断。
围绕“Vite 插件的 transform 钩子如何按文件类型过滤,为什么官方推荐用 filter 而非在钩子里判断”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 transform 钩子的 include/exclude filter 让 Vite 跳过无关模块以省掉 JS 侧调用开销。
围绕“如何用 Vite 插件实现虚拟模块(virtual module)并正确处理其缓存失效”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 resolveId/load 配对、 前缀约定及 this.emitFile/失效处理方式。
围绕“Vite 依赖预构建的缓存何时会失效并触发重新构建”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 lockfile 变化、config 中 optimizeDeps 相关配置变化、强制 --force 等失效条件。
围绕“Vite 中放在 public 目录的资源与通过 import 引入的资源在处理上有何本质区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 public 原样复制不哈希不压缩、import 资源走构建管道带哈希的判断。
围绕“Vite 的中间件模式(middleware mode)如何用于开发期 SSR,为什么开发时不需要 SSR 构建”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 createServer middlewareMode 挂到自有服务器并用 ssrLoadModule 按需加载服务端模块的机。
围绕“用 Vite 做 SSR 时,客户端入口与服务端入口如何组织,ssr build 的产物与客户端构建有何不同”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出双入口结构与 vite build --ssr 生成 Node 可加载产物(无资源哈希清单)的区别。
围绕“Vite SSR 中依赖为什么默认被 external 由 Node 直接加载,ssr.noExternal 什么时”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 SSR 外置依赖减少转译开销的默认策略及对 CJS-only/含 CSS 的包需 noExternal 内联处理的判断。
围绕“Vite 的 HMR 为什么随项目规模增大仍能保持接近常量的更新速度”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出 HMR 只失效并重取变更模块链而非重打包整图的原理,不与 webpack HMR 做全面对比。
围绕“Vite 开发服务器基于原生 ESM 按需编译,相比 bundle 式开发服务器解决了什么问题”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要答出源码与依赖分离、请求级按需转译带来的冷启动和更新速度优势。
围绕“Vite 为什么在开发阶段要做依赖预构建(Dep Pre-Bundling)”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖必须答出 CJS/UMD 转 ESM 与减少模块请求数这两个动机。