SSR 与 Nuxt

共 27 题
#

1. Vue 的 v-memo 与渲染优化 在 Vapor Mode 编译产物的现代取舍

A Vapor 模式下仍然依赖 v-memo 避免 diff
B Vapor 编译产物按响应式依赖直接更新目标节点,天然获得 v-memo 的大部分收益 ✓ 正确答案
C v-memo 在 Vapor 下完全无意义
D Vapor 模式必须为每个列表手动声明 v-memo
#

2. Nuxt 3 的 Nitro 引擎与跨平台部署 与 React/Next.js 的协作与对比

A Nitro 无法提供 API 路由能力
B Nitro 只支持 Node.js 单平台部署
C Nitro 通过 preset 机制将同一应用部署到 Node/Bun/Deno/Workers 等平台,并支持混合渲染 ✓ 正确答案
D Nuxt 与 Next.js 使用完全相同的渲染模型
#

3. Nuxt 4 的目录约定与 Nitro 引擎的多部署目标

A Nuxt 4 要求所有代码放在根目录
B Nuxt 4 以 app/server/shared 划分目录,Nitro 通过 preset 生成各平台产物,runtimeConfig 保持部署无关 ✓ 正确答案
C Nitro 部署目标必须写在业务代码中
D 切换部署平台需要重写整个应用
#

4. Nuxt 的错误处理体系,error.vue 全屏错误页、createError/useError、Nitro 的 errorHandler 与 API 错误响应脱敏(生产环境不泄漏 error.data)如何协同?

A useError 无法读取错误状态码
B 生产环境应把完整堆栈随错误响应返回给客户端
C error.vue 只在服务端渲染
D createError/useError 管理页面错误状态,error.vue 渲染错误页,Nitro errorHandler 规范化 API 错误,生产环境需脱敏 ✓ 正确答案
#

5. Nitro 的 defineEventHandler 与 H3 中间件生态

A H3 无法解析请求体
B Nitro 的 API 必须集中在一个文件中定义
C server/api 下每个文件是端点,defineEventHandler 处理请求,H3 中间件链提供鉴权/日志等横切能力 ✓ 正确答案
D Nitro 端点无法按 HTTP 方法分流
#

6. Nuxt 的 Server Routes 与 Server Middleware 在 API 网关层的角色

A Server Middleware 只能处理静态资源
B Server Routes 提供业务端点(BFF 聚合/代理),Server Middleware 做请求横切(鉴权/日志/CORS),二者协同构成业务网关 ✓ 正确答案
C Server Routes 无法访问下游服务
D 中间件在路由执行之后运行
#

7. Vue 的 SSR 流程与 Hydration Mismatch 排查

A mismatch 只会导致性能下降,不影响正确性
B 水合时客户端会丢弃服务端 HTML 重新渲染
C SSR 输出字符串、客户端水合绑定,mismatch 多源于两端渲染输入不一致(随机值、浏览器环境),需保证确定性 ✓ 正确答案
D 随机值内容在 SSR 下是安全的
#

8. Nuxt 3 useFetch/useAsyncData 缓存键与 SSR payload 在水合不一致的工程风险

A payload 可以安全携带函数与循环引用
B 客户端水合时总会重新请求数据
C key 只影响缓存,不影响水合
D useFetch 结果以 key 序列化进 payload 供水合复用,key 不稳定会导致双端数据不一致与重复请求 ✓ 正确答案
#

9. Nuxt 3 + Nitro 在部署目标(Node/Bun/Deno/Workers)

A Nitro preset 为各平台生成适配产物,runtimeConfig 抽象环境差异,选型需权衡延迟、成本、运维与能力 ✓ 正确答案
B Nitro 只能部署到自建 Node 服务器
C Workers 平台支持全部 Node 文件系统能力
D 切换部署平台必须修改业务代码
#

10. Vue 3 的 watch/watchEffect 在 SSR 与客户端水合阶段的执行时机差异与序列化风险

A watchEffect 在服务端渲染时会立即执行所有副作用
B watch 在 SSR 阶段会像客户端一样反复触发
C watcher 中读取的函数类型状态可安全序列化
D SSR 阶段 watcher 不持续触发,客户端水合后才正常工作;参与渲染输出的状态需两端一致且可序列化 ✓ 正确答案
#

11. ref() vs reactive() 在 Vapor Mode 编译产物的现代取舍

A Vapor 模式不再支持 reactive
B Vapor 下 ref 与 reactive 语义不变,模板绑定编译为细粒度依赖,现代实践倾向 ref 优先、reactive 用于对象整体 ✓ 正确答案
C ref 在 Vapor 下无法自动解包
D reactive 在 Vapor 下会失去深层响应
#

12. defineAsyncComponent 与代码分割 在 Vapor Mode 编译产物的现代取舍

A 异步组件无法配置加载与错误状态
B Vapor 模式禁用了异步组件
C 代码分割在 Vapor 下需要手写 chunk 管理
D defineAsyncComponent 与动态 import 代码分割在 Vapor 下机制不变,异步边界可作 VDOM 岛嵌入 ✓ 正确答案
#

13. Vue 组件单元测试(@vue/test-utils、Vitest、composables 测试)与 SSR 渲染测试的工程实践

A 组件用 @vue/test-utils 挂载交互,composables 可在 effectScope/测试组件宿主中调用,SSR 用 renderToString 断言输出 ✓ 正确答案
B composables 必须通过完整浏览器才能测试
C SSR 渲染测试需要真实服务器与网络
D @vue/test-utils 只能做快照测试
#

14. Nuxt 4 的数据获取与模块生态

A useFetch/useAsyncData 提供 SSR 数据获取与 payload 水合,API 层用 $fetch 封装 repository 并共享类型,生态能力经模块接入 ✓ 正确答案
B Nuxt 4 只能使用 $fetch 获取数据
C 模块无法扩展 Nuxt 的服务端能力
D 数据获取无需考虑 SSR 一致性
#

15. Suspense 与异步组件的协作

A Suspense 无法与 async setup 配合
B Suspense 会自动处理异步错误并渲染错误页
C fallback 会在每个异步依赖就绪时依次显示
D Suspense 聚合等待子树异步依赖后一次性切换,错误需 errorComponent 或错误边界兜底,嵌套 Suspense 各自独立 ✓ 正确答案
#

16. Nuxt Hybrid Rendering(route rules)

A ISR 的缓存页面不会过期再生
B routeRules 只能配置全局一种渲染方式
C routeRules 按路径配置 ssr/spa/prerender/swr 等策略,实现同一应用内混合渲染与 ISR ✓ 正确答案
D prerender 与 ssr 规则无法共存
#

17. Reactivity Transform 与 Vue 3.5 alien-signals 的响应式工程价值

A alien-signals 要求改写所有 ref 为 $ref
B Reactivity Transform 是未获推荐的语法糖,alien-signals 是 API 不变的运行时内核优化,现代实践用标准写法享受性能收益 ✓ 正确答案
C Reactivity Transform 已成为稳定 API
D 两者作用完全相同
#

18. Vue Suspense 的 fallback 链路与错误边界协同

A 错误边界只能捕获同步错误
B Suspense 会捕获异步错误并自动降级
C 嵌套 Suspense 时外层先显示 fallback,内层再显示
D 嵌套 Suspense 各自等待并汇总,异步错误由 onErrorCaptured 错误边界捕获兜底,Suspense 本身不处理错误 ✓ 正确答案
#

19. Vue 2 到 Vue 3 迁移(breaking changes、迁移构建、兼容层 @vue/compat)的工程策略与常见陷阱

A 渐进迁移用 @vue/compat 兼容构建暴露不兼容点,逐步修复后关闭兼容;filters、$on/$off、全局 API 等均需改写 ✓ 正确答案
B Vue 3 完全兼容 Vue 2 全部 API,无需改动
C filters 在 Vue 3 中仍然可用
D Vue.use 在 Vue 3 中照常工作
#

20. Nuxt SEO(useHead/useSeoMeta、OG 标签与 SSR)在搜索引擎与社交分享中的工程实现

A useHead/useSeoMeta 在 SSR 输出完整 head(含 OG 标签),按数据动态生成 SEO 内容,配合 sitemap/JSON-LD 完善体系 ✓ 正确答案
B SEO meta 只能静态配置,无法按数据变化
C OG 标签只在客户端渲染后生效
D useSeoMeta 无法设置 canonical
#

21. SSR 序列化策略与 Pinia 的 state hydration 协作

A 敏感数据应随 payload 下发以保一致性
B 客户端水合时会重新请求并覆盖服务端状态
C 序列化会自动处理函数与循环引用
D 服务端把 pinia state 序列化注入 payload,客户端反序列化后接管,需保证可序列化、裁剪与双端一致 ✓ 正确答案
#

22. VueUse 工具集的核心 hooks 设计

A VueUse hooks 在服务端会访问 window 并崩溃
B VueUse hooks 封装状态与副作用并自动清理,SSR 安全(isClient 判断),参数支持响应式源与选项配置 ✓ 正确答案
C VueUse hooks 卸载时不清理监听
D VueUse hooks 只能接收普通值,无法接收响应式参数
#

23. Nuxt 3 definePageMeta 与中间件(middleware/)

A 页面中间件先于全局中间件执行
B 中间件只能在客户端执行
C definePageMeta 无法关联命名中间件
D definePageMeta 声明布局/中间件/权限等元信息,middleware 按全局到页面顺序执行并用 navigateTo 控制跳转 ✓ 正确答案
#

24. Nuxt 的 useHead 与 Nitro security 模块,如何为 SSR 页面配置 CSP、安全响应头与文档级 meta,与 SEO 配置的边界?

A 安全响应头与 SEO meta 属于同一配置层
B CSP 可以通过 useHead 在文档中设置
C useHead 管理文档 meta(SEO),CSP 与安全响应头由 Nitro 层配置,二者边界清晰且需配合内联资源策略 ✓ 正确答案
D CSP 配置无需考虑 SSR 内联脚本
#

25. Vue Router 4 动态路由与导航守卫在 SSR 的应用(onBeforeRouteUpdate 与数据预取)

A 客户端水合前无需初始化路由匹配
B SSR 阶段 onBeforeRouteUpdate 会持续监听参数变化
C 服务端守卫不会执行
D SSR 用 memory history 一次性匹配渲染,组件内守卫主要服务客户端,onBeforeRouteUpdate 配合客户端数据预取并需与水合一致 ✓ 正确答案
#

26. Vapor 编译产物 在测试与 Vue Test Utils 的协作

A Vapor 组件没有 props/events 契约
B Vue Test Utils 完全无法测试 Vapor 组件
C 测试环境应与生产环境的 Vapor 开关无关
D Vapor 组件测试应断言 DOM 与交互等公开契约,避免依赖 VNode 内部结构的能力 ✓ 正确答案
#

27. Nuxt 的模块机制(nuxt.config.ts 的 modules 与 nuxtModule 定义)与 Nitro 插件生命周期的协作

A 模块经 nuxt.config 注册,用构建期 hooks 注入组件/路由/Nitro 插件,Nitro 插件在服务端运行期执行扩展 ✓ 正确答案
B 模块只能在运行时修改页面内容
C Nitro 插件无法由模块注册
D 模块机制与构建 hooks 无关