Skip to content

应用配置

配置属于应用实例,而不是进程级全局状态。先创建 app,再在挂载前写入配置:

ts
import { createApp } from "@elfui/core";
import { App } from "./App";

const app = createApp(App);

app.config.globalProperties.appName = "Console";
app.config.warnHandler = (message, ...args) => {
  console.warn("[Console]", message, ...args);
};
app.config.errorHandler = (error, info) => {
  reportError(error, { info });
};

app.mount("#app");

配置项

选项作用
globalProperties应用级只读约定值;组件 setup 从 ctx.config.globalProperties 读取,模板从 $app 读取
warnHandler接收该 App 组件运行时警告
errorHandler接收该 App 的 setup/render 错误

宏组件中需要在 TypeScript 逻辑里读取配置时,使用 useAppConfig()

ts
import { useAppConfig } from "@elfui/core";

const appName = useAppConfig().globalProperties.appName;

模板字符串表达式仍遵循 TypeScript 作用域;纯模板表达式可读 $app

ts
defineHtml(`<p>{{ $app.appName }}</p>`);

globalProperties 本身不是响应式容器。需要运行时更新时,把 useRef()useReactive() 的返回值放入其中。

边界

tagPrefix 不属于应用配置。宏组件 tag 在编译期确定,统一前缀只能在 @elfui/vite-plugin 中设置。

WARNING

@elfui/core 也导出 configure()getConfig(),用于旧式进程级配置或底层集成。新应用优先使用隔离的 app.configresetConfig() 仍只在 @elfui/runtime 提供,主要用于测试清理。