标准答案

  1. 国际化要处理语言包加载、日期数字格式、复数规则、文案 key 管理和缺失文案回退。
  2. 主题系统要明确设计 token、CSS 变量、暗色模式、品牌色覆盖和服务端首屏默认值。
  3. 运行时配置适合放 API 地址、开关、环境标识和第三方 key,但不能把敏感密钥暴露到客户端。
  4. 这些能力通常通过 Provider、Context、CSS 变量和配置注入组合实现。
  5. SSR 或 Next.js 场景下要保证服务端首屏和客户端接管时语言、主题和配置一致。

题目解析

这道题考的是基础能力设计。i18n、主题和配置都容易从页面里的硬编码逐渐失控。

主题最好落到 token 和 CSS 变量,而不是每个组件自己判断 dark mode。

运行时配置要区分服务端私密配置和客户端公开配置,不能因为方便把所有 env 都传给浏览器。

代码示例

下面通过 CSS 变量承载主题 token,组件只消费语义变量。

CSS
:root {
  --color-bg: #ffffff;
  --color-text: #1f2937;
}

[data-theme='dark'] {
  --color-bg: #111827;
  --color-text: #f9fafb;
}

.panel {
  background: var(--color-bg);
  color: var(--color-text);
}

常见误区

  • 文案直接写死在组件中,后续切换语言时只能全局搜索替换。
  • 主题只靠组件 props 传递,层级一深就难以维护。
  • 把服务端密钥当运行时配置传到客户端,造成安全风险。

作者信息