# core
**Repository Path**: vitarx/core
## Basic Information
- **Project Name**: core
- **Description**: vitarx框架核心库
- **Primary Language**: TypeScript
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://vitarx.cn
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 2
- **Created**: 2024-11-13
- **Last Updated**: 2026-07-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Vitarx:新一代信号驱动的高性能前端框架
## 什么是 Vitarx?
Vitarx(读音 /ˈviːtɑːrks/,中文谐音"维塔克")是一个**响应式驱动**的 JSX 前端框架。它以**信号粒度的精确依赖追踪**取代传统虚拟 DOM 差量比对,通过引擎级视图控制实现最小化更新,从而获得卓越的运行时性能。
与 React、Vue 等传统虚拟 DOM 框架不同,Vitarx 不需要整棵树的 diff 比对——当响应式数据变化时,框架精确知道哪些视图节点需要更新,并直接操作对应的 DOM 节点,避免了不必要的计算和渲染开销。
---
## 核心特性
### ⚡️ 信号级精确更新
这是 Vitarx 最核心的特性。通过细粒度的依赖追踪系统,当数据变化时,**仅更新关联的 DOM 节点**,完全跳过虚拟 DOM 的 diff 过程。
```tsx
import { ref } from 'vitarx'
function Counter() {
const count = ref(0)
return (
Count: {count}
)
}
```
当 `count` 变化时,**只有 `` 标签内的文本节点会被更新**,整个组件不会重新执行。
### 🚀 完整的响应式系统
Vitarx 提供了丰富的响应式 API,借鉴了 Vue 3 的设计理念:
```tsx
import { ref, reactive, computed, watch, watchEffect } from 'vitarx'
// 基本响应式引用
const name = ref('Vitarx')
// 响应式对象
const state = reactive({
count: 0,
items: []
})
// 计算属性
const doubled = computed(() => state.count * 2)
// 监听
watch(count, (newVal, oldVal) => {
console.log(`count changed: ${oldVal} -> ${newVal}`)
})
// 自动追踪依赖的副作用
watchEffect(() => {
console.log(`current count: ${count.value}`)
})
```
### 🎯 函数组件 + 生命周期
Vitarx 采用简洁的函数组件模型,搭配完整的生命周期钩子:
```tsx
import { onInit, onMounted, onDispose } from 'vitarx'
function MyComponent() {
onInit(() => {
console.log('组件初始化')
})
onMounted(() => {
console.log('组件挂载到 DOM')
})
onDispose(() => {
console.log('组件销毁,清理资源')
})
return
Hello Vitarx
}
```
### 📦 丰富的内置组件
Vitarx 提供了开箱即用的内置组件:
```tsx
import { For, Suspense, Lazy, Freeze, Transition, Teleport } from 'vitarx'
// 列表渲染
item.id}>
{(item) => {item.name}
}
// 异步加载
}>
import('./HeavyComponent')} />
// 冻结组件(不响应外部信号变化)
// 过渡动画
内容
// 传送门
```
在 Vitarx 中,**万物皆组件** —— 上述所有高阶内置组件(`For`、`Suspense`、`Lazy`、`Transition`、`Teleport`)并非不可触碰的黑盒,它们本身就是用 Vitarx 核心 API 构建的普通组件。开发者可以轻松查看源码、理解实现原理,并根据业务需求进行扩展、定制甚至完全重写。这种**无黑盒架构**设计赋予了框架极高的可扩展性,让你真正掌控每一层实现细节。
### 💉 依赖注入
支持应用级和组件级的依赖注入:
```tsx
// 父组件提供数据
function Parent() {
provide('theme', 'dark')
return
}
// 子组件注入数据
function Child() {
const theme = inject('theme', 'light')
return 内容
}
```
### 🌐 SSR 支持
内置服务端渲染能力:
```tsx
import { renderToString, renderToStream } from 'vitarx'
// 字符串渲染
const html = await renderToString(App)
// 流式渲染
const stream = await renderToStream(App)
```
---
## 架构设计
Vitarx 采用分层架构设计,各层职责清晰、依赖单向:
```
┌─────────────────────────────────────────────┐
│ vitarx │ ← 聚合包,统一导出
├────────────┬─────────────┬──────────────────┤
│runtime-dom │ runtime-ssr │ │ ← 平台适配层
├────────────┴─────────────┼──────────────────┤
│ runtime-core │ utils │ ← 运行时核心 & 工具
├──────────────────────────┼──────────────────┤
│ responsive │ │ ← 响应式系统
└──────────────────────────┴──────────────────┘
```
| 包名 | 说明 |
| ---------------------- | --------------------------------------------------------- |
| `vitarx` | 聚合包,统一导出所有子包 API |
| `@vitarx/responsive` | 响应式核心 — ref、reactive、computed、watch、effect |
| `@vitarx/runtime-core` | 运行时核心 — 组件系统、视图构建、生命周期、依赖注入、指令 |
| `@vitarx/runtime-dom` | 浏览器渲染 — DOM 渲染器、Transition、Teleport、Head |
| `@vitarx/runtime-ssr` | 服务端渲染 — renderToString、renderToStream、客户端水合 |
| `@vitarx/utils` | 工具函数 — 深拷贝、类型检测、日志、防抖/节流 |
---
## 设计理念与框架对比
### 性能定位与取舍
Vitarx 采用信号级精确更新机制,在高频状态变化场景下优势明显,整体性能处于**第一梯队**。但需要客观说明的是,Vitarx 并不追求在所有场景下"全面碾压"成熟框架——在大规模静态内容渲染等特定场景下,与 Vue/React 等经过多年优化的框架相比并无显著优势。
Vitarx 的核心竞争力在于**架构设计**而非单纯的性能数字:通过**万物皆组件**的设计哲学和**无黑盒**的透明实现,为开发者提供更高的可扩展性和定制自由度。
### 性能基准对比
以下数据来自官方 [JS Framework Benchmark](https://github.com/vitarx-lib/js-framework-benchmark) 测试(单位:毫秒/MB/KB):
#### 执行时间对比
| 测试场景 | Vue 3.6 | React-hooks 19 | Vitarx 4.0 |
| ---------------- | -------- | -------------- | ---------- |
| 创建1000行 | 81.9 | 82.4 | 112.2 |
| 更新1000行 | 88.2 | 84.8 | 122.4 |
| 部分更新(每10行) | 19.1 | 11.2 | 9.2 |
| 选中行 | 9.8 | 5.8 | 4.5 |
| 交换行 | 10.7 | 67.6 | 10.4 |
| 删除行 | 20.9 | 18.1 | 17.2 |
| 创建10000行 | 880.2 | 1143.5 | 1104.1 |
| 追加1000行 | 89.1 | 82.5 | 117.0 |
| 清空表格 | 8.3 | 11.5 | 20.3 |
| **几何均值** | **1.17** | **1.21** | **1.28** |
#### 内存分配对比
| 测试场景 | Vue 3.6 | React-hooks 19 | Vitarx 4.0 |
| ------------ | -------- | -------------- | ---------- |
| 初始内存 | 0.86 MB | 1.18 MB | 0.83 MB |
| 运行内存 | 3.77 MB | 4.42 MB | 5.46 MB |
| 创建/清理后 | 1.23 MB | 1.97 MB | 1.16 MB |
| **几何均值** | **1.03** | **1.41** | **1.13** |
#### 传输大小对比
| 项目 | Vue 3.6 | React-hooks 19 | Vitarx 4.0 |
| ------------ | -------- | -------------- | ---------- |
| 未压缩大小 | 63.7 KB | 180.3 KB | 57.8 KB |
| 压缩后大小 | 22.9 KB | 51.4 KB | 17.0 KB |
| 首次绘制时间 | 134.4 ms | 359.6 ms | 137.7 ms |
| **几何均值** | **1.14** | **2.99** | **1.01** |
### 相比虚拟 DOM 框架(React、Vue)
| 维度 | 虚拟 DOM 框架 | Vitarx |
| --------- | -------------------- | ------------------------ |
| 更新机制 | 组件级重渲染 + diff | 信号级精确更新 |
| 更新粒度 | 组件 | DOM 节点 |
| diff 开销 | 有 | 无 |
| 架构特点 | 内置组件多为黑盒实现 | 万物皆组件,可扩展可定制 |
### 相比其他信号框架(Solid、Svelte)
Vitarx 同样采用"信号"驱动的更新策略,但在两方面做出了不同的设计选择:
**API 风格**:Vitarx 更贴近 Vue 的响应式风格,提供了 `ref`、`reactive`、`computed` 等开发者熟悉的 API,降低了学习成本。同时采用 JSX 作为模板语法,兼具灵活性与类型安全。
**架构路线**:与 Solid、Svelte 等走**极致编译时优化**路线的框架不同,Vitarx 选择保留强大的**运行时渲染编排能力**。`Teleport`、`Transition`、`Suspense`、`Lazy`、`Freeze` 等高阶组件并非框架底层的黑盒实现,而是完全基于 Vitarx 公开的渲染引擎 API 构建而成。开发者不仅可以查看和理解它们的实现原理,还能基于同一套渲染引擎 API 构建自己的自定义渲染逻辑。
---
## 快速上手
### 创建项目
```bash
pnpm create vitarx
```
运行后按照提示依次选择:
- 项目名称 — 输入你的项目目录名
- 开发语言 — 选择 TypeScript 或 JavaScript
- 项目模板 — 选择适合的模板
### 启动项目
```bash
npm run dev
```
## 为什么选择 Vitarx?
如果你追求较高的运行时性能,同时看重框架的可扩展性和架构透明度,Vitarx 是一个值得尝试的选择。它以**信号级依赖追踪**实现高性能更新,以**万物皆组件**的设计理念保障可扩展性,以**无黑盒架构**让开发者真正掌控每一层实现细节。
无论是构建复杂的业务系统,还是深入探索前端框架的底层原理,Vitarx 都能为你提供友好而强大的开发体验。
## 资源链接
- **Gitee**: [代码仓库](https://gitee.com/vitarx/core)
- **GitHub**: [代码仓库](https://github.com/vitarx-lib/core)
- **官方文档**: [查看文档](https://vitarx.cn)
- **交流QQ群**: [点击加入](https://qm.qq.com/cgi-bin/qm/qr?k=2daHjQr-L5il1BaR-kg_X14TCQkBGTzp&jump_from=webapi&authKey=UuYORimg6o8o1vkmNEdx+GY50NSo2W1VsuB8Q8s2kLpxhdd4i1It8L7O2plEUhwD)
## 许可证
[MIT](./LICENSE)
Copyright © 2024 - present, ZhuChongLin