Skip to content
Tuvix.js 标志

多个应用。 统一体验。

Tuvix.js 把 React、Vue、Svelte、Angular 和原生 JS 微应用挂载到同一个宿主页面。路由、事件总线、沙箱和服务端渲染都是独立的包,需要时再添加。

npx create-tuvix-app
src/orchestrator.ts
import { createOrchestrator } from 'tuvix.js';const orchestrator = createOrchestrator({  router: {    mode: 'history',    routes: [      { path: '/dashboard/*', app: 'dashboard' },      { path: '/settings/*', app: 'settings' },    ],  },});orchestrator.register({  name: 'dashboard',  entry: 'https://cdn.example.com/dashboard/main.js',  container: '#main-content',  activeWhen: '/dashboard/*',});orchestrator.start();
宿主 shell
URL/dashboard/overview
  • React 18+已挂载name: 'dashboard'activeWhen: '/dashboard/*'
  • Vue 3name: 'catalog'activeWhen: '/shop/*'
  • Svelte 3–5name: 'checkout'activeWhen: '/checkout/*'
  • Angular 15+name: 'settings'activeWhen: '/settings/*'
共享事件总线@tuvix.js/event-bus

Tuvix.js 包含什么

八个构建模块。安装 tuvix.js 聚合包即可获得其中五个核心模块,也可以随着 shell 的增长逐个添加单独的包。

  • 框架无关

    在同一个 shell 中并排运行 React、Vue、Svelte、Angular 和原生 JS 微应用。

    微应用指南
  • 没有第三方运行时依赖

    每个包只依赖其他 @tuvix.js 包。你只需安装自己导入的包。

    所有包
  • 内置路由

    路由器随 URL 变化挂载和卸载应用,支持 history 和 hash 模式。

    @tuvix.js/router
  • 事件总线

    应用之间发布和订阅带类型的事件,无需共享全局变量。

    @tuvix.js/event-bus
  • CSS 与 JS 沙箱

    Shadow DOM 把每个应用的样式限制在它的容器内。JsSandbox 让脚本在一个可随时丢弃的 Proxy window 上运行。

    @tuvix.js/sandbox
  • 动态加载

    加载器按需获取应用 bundle,缓存它们,并重试失败的加载。

    @tuvix.js/loader
  • DevTools

    页面内面板列出已注册的应用、当前路由和事件总线的消息流。

    @tuvix.js/devtools
  • 服务端渲染

    在服务端渲染微应用,并把它们的 HTML 拼接进 shell 模板,可输出字符串或流。

    @tuvix.js/server

选择你的框架

每个适配器把一个组件变成微应用,编排器可以挂载、更新和卸载它。

  • React

    createReactMicroApp 包装一个组件。useTuvixProps 和 useTuvixBus 读取 props 和事件。

    npm i @tuvix.js/react
  • Vue

    createVueMicroApp 挂载一个 Vue 3 应用,并提供读取 props 和事件总线的 composable。

    npm i @tuvix.js/vue
  • Svelte

    createSvelteMicroApp 挂载 Svelte 3、4 和 5 组件。

    npm i @tuvix.js/svelte
  • Angular

    createAngularMicroApp 把 Angular 15+ 组件初始化到它的容器中。

    npm i @tuvix.js/angular
  • Vanilla JS

    defineMicroApp 为原生 JavaScript 提供 mount、unmount 和 update 钩子。

    npm i @tuvix.js/core

15 个包,各自独立发版

从聚合包开始。想要更小的安装体积时,再换成单独的包。