不支持按需引入
在现代前端工程化中,“按需引入 (Tree Shaking)” 似乎已成为行业标配。然而,TechUI 基于其独特的技术架构与产品定位,设计之初便决定不支持按需引入。
这是一个反直觉但经过深思熟虑的决策。以下是我们放弃这一特性的核心原因。
架构限制 Wasm 的整体性
TechUI 的核心并不是一组散落的 JavaScript 文件,而是一个编译后的 WebAssembly (Rust) 二进制模块。
- 动态计算依赖:TechUI 中 90% 以上的 SVG 路径、科幻动态效果及 3D 姿态解算,均由 Wasm 模块在运行时通过数学公式实时生成,而非静态的 SVG 文件。
- 二进制不可拆分:Wasm 模块类似于一个编译好的
.exe或.so库文件。你无法像拆分 JS 代码那样,仅“引入一半的二进制代码”。为了保证核心算法(如TEMPLATE引擎、ENC加密)的完整运行,必须全量加载 Wasm 核心。
商业保护 源码闭源
TechUI 是一款商业闭源的组件库,而非开源社区项目。
- 打包即保护:支持“按需引入”通常意味着需要发布未经打包的源码(ESM),并允许构建工具分析代码依赖树。这会直接暴露我们的核心实现逻辑。
- 防逆向工程:为了保护知识产权,我们在发布前对所有组件进行了深度打包混淆。这种“整包发布”策略是防篡改机制的第一道防线。
开发哲学 效率至上
TechUI 的设计初衷是服务于高强度的企业级开发场景(如外包交付、紧急大屏项目)。我们认为,开发者的时间价值远高于用户的带宽成本。
开箱即用 (Batteries Included):我们推崇“全量注册”模式。开发者无需在每个页面重复 import 每一个图标或组件。
❌ 繁琐:
import { TuiButton, TuiIconUser, ... } from ...✅ 高效:
app.use(TechUI)后,在任意位置直接使用<TuiButton />。心流体验:在构建复杂大屏时,无需为了节省几 KB 的体积而打断思路去查找和配置组件引用,能显著提升开发的心流体验。
性能辩证 5G 时代的带宽观
对于 TechUI 服务的 B2B / G2B(政府/企业)应用场景,我们将首屏加载速度的优化重心放在了“网络环境”与“缓存策略”上,而非单纯的包体积。
- 带宽冗余:在 4G/5G 及光纤普及的今天,加载一个 800KB+ 的 Wasm 包(Gzip 后更小)通常仅需几百毫秒。为了节省几十 KB 而牺牲开发效率,在现代网络环境下属于过度优化。
- 长效缓存:Wasm 模块及组件库代码一旦加载,便会被浏览器强缓存。对于企业内部系统(Intranet)或高频访问的大屏系统,用户仅在首次访问时需要下载资源,后续访问均为零网络开销。
- 流式编译:得益于 Wasm 的 Streaming Compilation 特性,其解析和执行速度远快于同体积的 JavaScript 代码,因此实际的“可交互时间 (TTI)”并不会因为包体积大而显著滞后。
这是一个非常棒的类比。通过引用大家熟知的操作系统和软件,可以有力地证明“冗余”在工程设计中往往代表着“能力储备”和“系统健壮性”,而非单纯的累赘。
我将原来的“二八法则”部分进行了深度扩充,融入了您要求的 iPhone、Windows 和 Android 等案例,使其成为一个极具说服力的章节。
二八法则与冗余哲学
TechUI 遵循“二八法则”的逆向思维:虽然 80% 的用户可能只用到 20% 的功能,但我们无法预知这 20% 具体是哪些。
在软件工程中,“大而全”的设计往往被误解为臃肿,但实际上它代表了 “能力完备性 (Capability Completeness)”。请回想一下我们日常使用的顶级数字产品,无一不是这一哲学的践行者:
📱 iPhone / Android 系统: 您的手机操作系统动辄占据 10GB+ 的空间。其中包含了您可能永远用不到的 LiDAR 激光雷达驱动、盲人辅助功能 (VoiceOver)、以及几十种您看不懂的各国语言字库。
为什么不删除? 因为当您偶尔需要扫描一个二维码,或者调整一次字体大小时,系统必须即刻响应,而不是提示您“正在下载模块”。
💻 Windows / macOS: 操作系统预装了数以万计的打印机驱动和通用硬件接口,尽管您家里可能只有一台打印机。
价值在于:当您接入新设备时,它能“即插即用”。TechUI 的全量引入也是为了让开发者在需要某个图表时,能即写即用。
🌐 复杂 SaaS / 网站功能: 想一想 Microsoft Excel 或 Photoshop。绝大多数用户终其一生只掌握了其 5% 的功能(如求和、裁剪)。
关键点:但这并不意味着剩下的 95% 是多余的。因为每个用户所需要的“那 5%”是不一样的。A 用户需要数据透视表,B 用户需要宏命令。只有提供 100% 的功能集,才能满足所有人的“个性化 5%”。
TechUI Prime 也是如此。 因为我们预置了全量代码,您只需修改一行配置即可实现,而无需重新配置构建工具、排查依赖冲突或下载新的插件。
冗余,有时即是最大的便捷。
📦 体积说明
目前 TechUI Prime (含 Wasm 核心) 的 Gzip 压缩体积约为 1MB ~ 2MB(视版本而定)。在现代企业级宽带环境下,这属于完全可接受的范围。