组件库互斥原则
TechUI 遵循严格的“单核心原则 (Single Core Principle)”:在一个工程项目中,严禁同时引入或初始化多个 TechUI 组件库。
这意味着您不能在同一个项目中同时安装 @techui/scifi 和 @techui/base,或者试图混合使用 @techui/admin 和 @techui/scifi。TechUI 的架构设计要求项目必须保持单一依赖源。
技术约束
这种互斥性并非人为设限,而是由 TechUI 的底层架构决定的。强行混用会导致以下严重的运行时冲突:
🧩 Wasm 单例冲突
TechUI 的所有组件库(Scifi/Base/Admin/Prime)在底层均共享同一套 Rust Wasm 运行时环境。
- 守卫指纹:Wasm 守卫在初始化时会锁定当前的运行环境指纹。若同时加载两个 Wasm 模块,会导致不可预知的错误问题。
- 全局钩子:多个核心库同时尝试挂载
window全局对象或劫持原生 API,会导致不可预知的行为。
🎨 样式与命名空间污染
- CSS 变量覆写:所有组件库均通过
:root定义 CSS 变量(如--font-weaker)。 - Vue 上下文冲突:在
app.use()注册阶段,不同库可能会注册相同名称的全局组件(如<TuiButton>)。
产品定位与选型
TechUI 通过产品线的划分来满足不同场景的需求,Prime (旗舰版) 的存在正是为了解决“既要又要”的问题。
专精型 (Specialized):
- Scifi: 专注于科幻视觉与动态 SVG 路径。
- Base: 专注于基础图表与数据展示。
- Admin: 专注于后台业务逻辑与表单。
- 它们被设计为彼此隔离的“偏科生”,适用于纯粹的单一场景。
全能型 (All-in-One):
- Prime: 是唯一被允许的“全能生”。
决策指南
如果您在选型时感到困惑,请参考以下决策矩阵:
| 您的需求 | 推荐方案 | 错误做法 |
|---|---|---|
| 仅需要炫酷的大屏背景 | @techui/scifi | - |
| 仅需要做简单的数据报表 | @techui/base | - |
| 既需要炫酷背景,又需要丰富图表 | @techui/prime | ❌ 同时安装 Scifi + Base |
| 项目初期用 Base,后期想加科幻效果 | 升级为 @techui/prime | ❌ 在 Base 基础上追加 Scifi |
依赖管理警告
在 package.json 中,请确保您的 dependencies 仅包含一个 TechUI 核心库。
❌ 严禁操作:多库共存
虽然 npm install 可能不会报错,但在项目运行时会导致浏览器崩溃或熔断。
javascript
// package.json
{
"dependencies": {
"vue": "^3.0.0",
"@techui/scifi": "^1.0.0", // <--- 冲突源 1
"@techui/base": "^1.0.0" // <--- 冲突源 2 (禁止与 Scifi 共存)
}
}✅ 正确操作:使用 Prime
如果您需要两者的功能,Prime 是唯一的解决方案。
javascript
// main.ts
import { createApp } from 'vue';
// 仅引入 Prime,即可获得 Scifi 的视觉与 Base 的图表
import PrimeInit from "@techui/prime";
import "@techui/prime/dist/style.css";
const app = createApp(App);
app.use(PrimeInit, { /* config */ });