Celeris Web:基于Monorepo与Vue 3的现代化全栈前端开发框架解析
2026/5/10 1:03:41 网站建设 项目流程

1. 项目概述:一个面向C端体验的现代前端开发框架

最近在重构一个老项目的前端,技术栈还是Vue 2 + Webpack那一套,开发体验和构建速度实在有点跟不上节奏了。正好在GitHub上看到了一个叫Celeris Web的开源项目,它标榜自己是一个“免费开源的前端开发框架”,但仔细研究后发现,它的野心远不止于此。大多数前端模板,尤其是那些带Admin后台的,设计思路都深深烙着B端管理系统的印记——功能堆砌优先,用户体验靠后。而Celeris Web在项目介绍里明确提出了一个很有意思的理念:打破Admin管理的局限,聚焦C端用户体验。这让我这个做了多年后台系统,偶尔也想做点“好看”东西的开发者眼前一亮。

简单来说,Celeris Web是一个基于Vue 3、Vite、TypeScript和PNPM等技术栈构建的现代化前端解决方案。它采用Monorepo(单体仓库)架构来管理多个包,不仅提供了一个功能齐全的后台管理系统模板,更核心的卖点在于,它试图将传统Admin模板的工程化优势与面向消费者的C端产品所需的精致UI和流畅交互结合起来。这意味着,你可以用同一套高质量、强类型的工程体系,去开发一个企业内部的管理平台,或者去打造一个面向公众的、体验出色的Web应用。对于中小团队或个人开发者来说,这种“一鱼两吃”的设定,能极大减少从零搭建和维护两套不同风格项目的心智负担和成本。

2. 核心架构与设计哲学深度解析

2.1 为何选择Monorepo:不止于代码复用

Celeris Web采用Monorepo架构,这绝不仅仅是为了让packages文件夹看起来更整齐。在实际开发中,尤其是当中后台系统与C端产品共享大量业务逻辑、工具函数或组件时,多仓库(Polyrepo)带来的依赖同步、版本管理问题会让人头疼不已。

Monorepo带来的核心优势:

  1. 统一的依赖与工具链:所有子包(如admincomponentsutils)共享顶层的package.json,使用统一的eslintprettierTypeScript配置。这意味着整个项目的代码风格、构建规则是完全一致的,新人上手无需在不同项目间切换配置上下文。在Celeris Web中,它使用了@kirklin/eslint-config作为统一的代码规范,确保了从Admin到C端组件代码质量的一致性。

  2. 原子化的代码共享与重构:从项目提供的依赖关系图可以看出,设计非常清晰。例如,components(业务组件)依赖于ca-components(通用组件)、utilsstyles等。当你在开发C端页面时,发现某个工具函数需要优化,你只需在packages/utils中修改一次,admin应用和未来可能增加的c-end应用都能立即受益,且能通过TypeScript立即检测到类型变化的影响,重构安全性和效率大大提升。

  3. 简化的协作与发布流程:对于一个小团队,所有功能开发、Bug修复都在同一个仓库内进行,Pull Request可以清晰地看到改动对各个子包的影响,代码评审更全面。虽然Celeris Web目前可能还未涉及多包发布,但Monorepo结构为未来可能的微前端化或独立发包打下了坚实基础。

实操心得:刚开始接触Monorepo可能会觉得工具链配置复杂(需要用到pnpm-workspace.yaml),但一旦跑通,开发体验是线性的提升。Celeris Web已经帮你做好了这一切,直接使用pnpm i就能安装所有工作区依赖,pnpm run dev就能启动开发服务器,这种开箱即用的体验非常友好。

2.2 聚焦C端体验:与传统Admin模板的本质区别

这是Celeris Web最吸引我的点。我们常见的Ant Design Pro、Vue Element Admin等优秀模板,其组件设计、布局方式、交互逻辑都是为“效率”和“数据密度”服务的。一个表格可能挤满20列,一个表单包含数十个字段,这符合后台管理的场景。

但C端产品完全不同。C端用户的核心诉求是“别让我思考”和“让我愉悦”。这意味着:

  • 视觉优先:间距、字体、颜色、动效需要精心设计,营造品牌感和情绪价值。
  • 交互轻盈:操作反馈要及时、自然,过度动画要平滑,页面跳转要流畅无阻塞。
  • 内容聚焦:界面信息密度不能太高,要有留白,引导用户聚焦核心内容。

Celeris Web如何体现这一点?虽然从当前代码看,其UI主要基于Naive UI,这是一个非常优秀的通用组件库。但它的设计哲学体现在项目结构的预留和配置的倾向性上。例如,它集成了UnoCSS,这是一个极具灵活性的原子化CSS引擎。对于C端开发,原子化CSS是实现高度定制化、高性能样式的利器。你可以极其方便地定义自己的主题色、间距尺度、动画效果,而无需被传统UI库的样式覆盖问题困扰。

// 在 UnoCSS 配置中,可以轻松定义C端品牌主题 // unocss.config.ts export default defineConfig({ theme: { colors: { brand: { primary: '#ff6b6b', // 品牌主色,更活泼 light: '#ff9e9e', dark: '#ee5a52', } }, // 定义更适合C端的间距尺度 spacing: { 'xs': '4px', 'sm': '8px', 'md': '16px', 'lg': '24px', 'xl': '32px', 'xxl': '48px', } }, // 可以预设一些动画效果 shortcuts: [ ['btn-bounce', 'active:scale-95 transition-transform duration-150'], // 按钮点击动效 ['fade-in', 'animate-fade-in duration-300'] // 淡入动画 ] })

此外,项目强调的“双语注释”虽然看似是个小细节,但对于一个旨在降低门槛、方便不同背景开发者(尤其是可能涉及国际化团队)的项目来说,这种对代码可读性和可学习性的重视,本身就是一种“用户体验”,只不过是面向开发者的。

3. 技术栈选型与配置实战

3.1 基础工具链:Vite + TypeScript + pnpm 为何是黄金组合

Vite:取代Webpack成为现代前端构建工具的首选,核心优势在于基于ESM的闪电般冷启动和热更新。对于C端项目,快速预览变化至关重要。Vite的按需编译让开发服务器启动时间从几十秒缩短到几秒内,HMR(热更新)几乎无感,这对需要频繁调整UI和交互的C端开发来说,是巨大的效率提升。Celeris Web使用Vite,确保了从开发到构建的全流程高效。

TypeScript:在Monorepo和追求稳定性的项目中,TypeScript不是可选项,而是必选项。它提供了可靠的类型安全、卓越的代码提示和清晰的接口契约。在Celeris Web中,所有包内部都通过TypeScript进行类型定义和共享,比如packages/types定义了全局共享的类型,utils中的函数都有清晰的入参和返回值类型。这极大地减少了跨模块调用时的低级错误,让重构变得自信。

pnpm:作为包管理器,pnpm的硬链接符号链接机制,完美契合Monorepo的需求。它解决了npmyarn在Monorepo中可能遇到的依赖重复安装(磁盘空间浪费)和幽灵依赖问题。执行pnpm i时,所有工作区包的依赖会被高效、正确地安装和链接起来。这是项目选择pnpm而非npm/yarnworkspace的关键技术原因。

3.2 核心开发体验插件解析

Celeris Web集成了几个能极大提升Vue 3开发体验的Vite插件,这也是它“高度流线型”承诺的基石:

  1. unplugin-vue-components(组件自动导入): 这个插件彻底改变了我们引入组件的方式。传统写法需要先在<script>import,然后在components里注册,最后才能在模板中使用。现在,你只需要在模板中直接写<MyComponent />,插件会自动从指定目录(如src/components)查找并导入它,同时生成对应的TypeScript类型支持。这大大减少了样板代码,让开发心流更连贯。

    // vite.config.ts 中的配置片段 import Components from 'unplugin-vue-components/vite' import { NaiveUiResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [ Components({ dts: true, // 生成类型声明文件 resolvers: [NaiveUiResolver()], // 为 Naive UI 提供自动导入解析 dirs: ['src/components'], // 自动导入的目录 }), ], })
  2. unplugin-auto-import(API自动导入): 与上一个插件类似,但它针对的是Composition API和其他工具函数。以前你需要写import { ref, computed, useRouter } from 'vue',现在,你可以直接在<script setup>里使用ref,computed,插件会在背后帮你自动导入。Celeris Web配置了这个插件,让你几乎感觉不到模块导入的存在,编码更加流畅。

  3. UnoCSS(原子化CSS引擎): 这是实现灵活样式和C端定制化的关键。你可以在模板中直接使用原子类名来定义样式,如<div class="p-4 text-brand-primary hover:scale-105">。UnoCSS会在构建时按需生成这些样式,最终打包的CSS文件非常小。它比Tailwind CSS更灵活,支持自定义规则和预设。Celeris Web内置了unocss-preset-chinese预设,方便处理中文字体等本地化需求。

3.3 状态管理与路由:Pinia + Vue Router 4

Pinia是Vue官方推荐的状态管理库,相比Vuex,它的API更简洁,对TypeScript的支持更友好,并且取消了繁琐的mutations。在Celeris Web的Monorepo结构中,你可以在packages目录下创建一个stores包,定义一些全局或模块化的状态,然后在admin和未来的C端应用中共享使用,保证状态逻辑的一致性。

Vue Router 4配合Vue 3,提供了更好的类型集成和组合式API支持。Celeris Web已经配置好了路由的基本结构,并集成了NProgress来提供页面导航时的进度条反馈。这个细节对于C端应用提升感知性能(Perceived Performance)很有帮助,让用户知道应用正在响应其操作。

4. 从零开始:项目初始化与开发实战

4.1 环境准备与项目启动

假设你已经安装了Node.js(建议18+)和pnpm,跟着以下步骤,几分钟内就能看到一个运行中的Celeris Web。

第一步:获取项目代码推荐使用degit工具,它比git clone更轻量,只下载最新提交的文件,不包含git历史。

npx degit kirklin/celeris-web my-celeris-app cd my-celeris-app

第二步:安装依赖使用pnpm安装所有工作区依赖。这里会安装根目录和所有packages下子包的依赖。

pnpm i

如果遇到网络问题,可以尝试配置pnpm的淘宝镜像:pnpm config set registry https://registry.npmmirror.com

第三步:启动开发服务器

pnpm run dev

执行后,Vite会启动开发服务器。通常几秒钟后,终端会输出Local: http://localhost:8888,打开这个链接,你就能看到Celeris Web Admin的登录界面了。

注意事项:首次启动时,Vite需要预构建依赖,可能会稍慢一些,后续的热更新将极其快速。如果端口8888被占用,可以在packages/admin/vite.config.ts中修改server.port配置。

4.2 目录结构深度游历

理解Monorepo的目录结构是高效开发的前提。我们来看核心部分:

celeris-web/ ├── packages/ # 核心代码包 │ ├── admin/ # 主应用(后台管理前端) │ │ ├── src/ │ │ │ ├── api/ # 接口请求层 │ │ │ ├── assets/ # 静态资源 │ │ │ ├── components/ # 页面级组件(可自动导入) │ │ │ ├── layouts/ # 布局组件 │ │ │ ├── router/ # 路由配置 │ │ │ ├── stores/ # Pinia状态仓库 │ │ │ ├── styles/ # 全局样式 │ │ │ ├── utils/ # 项目特定工具(会覆盖共享utils) │ │ │ └── views/ # 页面视图 │ │ └── vite.config.ts # Admin应用的Vite配置 │ ├── admin-api/ # 模拟或类型化的API定义 │ ├── assets/ # 共享的静态资源(如图标) │ ├── components/ # 共享的业务组件 │ ├── constants/ # 共享的常量(如路由名、枚举) │ ├── hooks/ # 共享的Vue组合式函数 │ ├── locale/ # 国际化语言包 │ ├── request/ # 封装好的HTTP请求库(基于axios/fetch) │ ├── styles/ # 共享的样式、UnoCSS预设 │ ├── types/ # 共享的TypeScript类型定义 │ └── utils/ # 共享的工具函数库 ├── package.json # 根包配置,定义workspace和全局脚本 └── pnpm-workspace.yaml # 定义Monorepo工作区

关键解读:

  • 关注packages下的共享包:当你需要提取可复用的逻辑时,优先考虑放在componentsutilshooks这些共享包里,而不是某个应用的src下。
  • admin应用是入口:目前主要的开发工作集中在packages/admin下,你可以把它理解为一个“消费者”,消费所有其他共享包提供的功能。
  • 类型共享的妙用packages/types中定义的类型(如接口IUser),在utilsrequestadmin中都可以直接导入使用,确保前后端(或不同模块)对数据结构的理解一致。

4.3 开发你的第一个C端风格页面

让我们实践一下Celeris Web的“C端理念”,在Admin框架内创建一个具有C端风格的展示页。

1. 创建路由和页面组件packages/admin/src/router/routes.ts中新增一个路由:

{ path: '/showcase', name: 'Showcase', component: () => import('@/views/showcase/index.vue'), meta: { title: '功能展示', icon: 'ion:rocket-outline', // 使用UnoCSS图标 }, },

然后在packages/admin/src/views/下创建showcase/index.vue文件。

2. 编写C端风格页面在这个页面里,我们可以摆脱传统表格-表单的束缚,尝试更活泼的布局和交互。

<template> <div class="min-h-screen bg-gradient-to-br from-gray-50 to-blue-50 p-6 md:p-10"> <!-- 使用更吸引人的标题和描述 --> <div class="text-center mb-12"> <h1 class="text-4xl md:text-5xl font-bold text-gray-800 mb-4"> Discover Amazing Features </h1> <p class="text-xl text-gray-600 max-w-2xl mx-auto"> Experience a blend of powerful administration and delightful user interaction. </p> </div> <!-- 功能卡片网格,使用更丰富的阴影和悬停效果 --> <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto"> <div v-for="(card, index) in featureCards" :key="index" class="bg-white rounded-2xl shadow-lg p-8 transition-all duration-300 hover:shadow-2xl hover:-translate-y-2 cursor-pointer border border-gray-100" @click="handleCardClick(card)" > <div class="w-14 h-14 rounded-xl flex items-center justify-center mb-6" :class="card.bgColor"> <i class="text-2xl" :class="card.icon"></i> </div> <h3 class="text-2xl font-semibold text-gray-800 mb-3">{{ card.title }}</h3> <p class="text-gray-600 mb-6">{{ card.description }}</p> <button class="inline-flex items-center text-brand-primary font-medium group"> Learn more <i class="i-ion:chevron-forward ml-2 transition-transform group-hover:translate-x-1"></i> </button> </div> </div> <!-- 交互式数据展示,使用动画图表占位 --> <div class="mt-16 bg-white rounded-2xl shadow-xl p-8 max-w-4xl mx-auto"> <h2 class="text-3xl font-bold text-gray-800 mb-2">Interactive Analytics</h2> <p class="text-gray-600 mb-8">Watch your data come to life with smooth animations.</p> <div class="h-64 flex items-center justify-center border-2 border-dashed border-gray-200 rounded-xl"> <p class="text-gray-400">[Animated Chart Placeholder]</p> </div> </div> </div> </template> <script setup lang="ts"> import { ref } from 'vue' import { useMessage } from 'naive-ui' const message = useMessage() interface FeatureCard { title: string description: string icon: string bgColor: string } const featureCards = ref<FeatureCard[]>([ { title: 'Lightning Fast', description: 'Built with Vite for instant server start and hot updates.', icon: 'i-ion:flash', bgColor: 'bg-yellow-100 text-yellow-600', }, { title: 'Fully Typed', description: 'End-to-end TypeScript support for robust and maintainable code.', icon: 'i-ion:shield-checkmark', bgColor: 'bg-blue-100 text-blue-600', }, { title: 'C-End Ready', description: 'Designed with user experience and visual appeal in mind.', icon: 'i-ion:heart', bgColor: 'bg-pink-100 text-pink-600', }, ]) const handleCardClick = (card: FeatureCard) => { message.success(`You clicked: ${card.title}`) // 在实际项目中,这里可以跳转到详情页或打开模态框 } </script> <style scoped> /* 可以在这里添加一些组件作用域的样式,但优先使用UnoCSS */ </style>

3. 关键点解析

  • UnoCSS的威力:我们大量使用了UnoCSS的原子类,如bg-gradient-to-brshadow-lg hover:shadow-2xltransition-all等,快速构建出具有现代感的视觉样式,而无需编写一行自定义CSS。
  • 交互细节:卡片悬停时的阴影变化、位移效果(hover:-translate-y-2),按钮文字旁的箭头动画(group-hover:translate-x-1),这些都是提升C端体验的细微之处。
  • 响应式设计:通过grid-cols-1 md:grid-cols-2 lg:grid-cols-3,我们轻松实现了在不同屏幕尺寸下的自适应布局。
  • 图标集成:使用了UnoCSS的图标预设,通过类似i-ion:rocket-outline的类名直接使用图标,无需引入图标组件库。

这个页面虽然简单,但已经体现了与传统后台页面截然不同的设计思路:更大的间距、更醒目的视觉层次、更丰富的微交互。它运行在Celeris Web的Admin框架内,共享着相同的路由、状态管理、构建工具和工程规范,证明了“一套代码,两种风格”的可行性。

5. 构建、部署与进阶配置

5.1 生产环境构建与优化

开发完成后,运行构建命令生成生产环境代码:

pnpm run build

Vite会执行一系列优化,包括:

  • 代码压缩:使用terser压缩JavaScript,cssnano压缩CSS。
  • 资源处理:图片等资源会被压缩并输出到assets目录,文件名会包含哈希以实现长期缓存。
  • 代码分割:自动将代码拆分成多个异步加载的块(chunk),优化首屏加载速度。
  • 预加载指令生成:自动生成<link rel="modulepreload">指令,优化资源加载顺序。

构建产物会输出到packages/admin/dist目录。你可以使用任何静态文件服务器(如nginxApache)来部署这个目录。

5.2 使用Docker进行容器化部署

Celeris Web项目根目录提供了Dockerfile,方便进行容器化部署,这能保证环境的一致性。

构建Docker镜像:

# 在项目根目录执行 docker build -t my-celeris-app:latest .

这个命令会读取Dockerfile,通常它是一个多阶段构建:第一阶段使用Node镜像安装依赖并构建项目;第二阶段使用更轻量的Nginx镜像,只复制构建好的静态文件。

运行容器:

docker run -d -p 8080:80 --name celeris-app my-celeris-app:latest

访问http://localhost:8080即可看到部署好的应用。-d表示后台运行,-p 8080:80将容器的80端口映射到宿主机的8080端口。

5.3 集成Netlify实现自动化部署

对于个人项目或演示站点,Netlify这样的静态站点托管服务是绝佳选择,它支持从Git仓库自动部署。Celeris Web已经做好了Netlify的零配置准备(netlify.toml)。

部署步骤:

  1. 将你的代码推送到GitHub或GitLab仓库。
  2. 登录 Netlify ,点击“Add new site” -> “Import an existing project”。
  3. 选择你的Git仓库。
  4. 构建设置通常会自动检测(Build command: pnpm run build,Publish directory: packages/admin/dist)。
  5. 点击“Deploy site”。

之后,每次向主分支推送代码,Netlify都会自动触发一次构建和部署。你还可以配置自定义域名、启用HTTPS等。

5.4 国际化(i18n)配置实战

Celeris Web的packages/locale目录已经为国际化做好了准备。通常使用vue-i18n库。

1. 在共享包中定义语言包:

// packages/locale/lang/zh-CN.ts export default { common: { hello: '你好', welcome: '欢迎来到Celeris Web', }, menu: { dashboard: '仪表盘', showcase: '功能展示', } } // packages/locale/lang/en.ts export default { common: { hello: 'Hello', welcome: 'Welcome to Celeris Web', }, menu: { dashboard: 'Dashboard', showcase: 'Showcase', } }

2. 在Admin应用中配置i18n:

// packages/admin/src/plugins/i18n.ts import { createI18n } from 'vue-i18n' import en from '@celeris/locale/lang/en' import zhCN from '@celeris/locale/lang/zh-CN' const i18n = createI18n({ legacy: false, // 使用Composition API模式 locale: localStorage.getItem('locale') || 'zh-CN', fallbackLocale: 'en', messages: { 'en': en, 'zh-CN': zhCN, } }) export default i18n

然后在main.ts中安装这个插件。

3. 在组件中使用:

<template> <h1>{{ $t('common.welcome') }}</h1> <n-button @click="switchLang"> {{ $t('common.switch') }} </n-button> </template> <script setup lang="ts"> import { useI18n } from 'vue-i18n' const { locale, t } = useI18n() const switchLang = () => { locale.value = locale.value === 'zh-CN' ? 'en' : 'zh-CN' localStorage.setItem('locale', locale.value) } </script>

6. 常见问题、性能优化与避坑指南

6.1 开发环境常见问题

Q1: 启动pnpm run dev时报错,提示找不到模块或类型错误。

  • 原因:Monorepo的依赖链接可能未正确建立,或者TypeScript的路径别名未配置。
  • 解决
    1. 删除node_modules和根目录的pnpm-lock.yaml文件,然后重新执行pnpm i
    2. 检查tsconfig.jsontsconfig.base.json中的paths配置,确保@celeris/*这样的别名指向正确的packages/*目录。Celeris Web通常已经配置好。
    3. 在VSCode中,有时需要重启TypeScript语言服务器(Ctrl+Shift+P->TypeScript: Restart TS server)。

Q2: 修改了packages/utilspackages/types里的代码,但Admin应用没有实时更新。

  • 原因:Vite的热更新(HMR)可能没有监听到Monorepo中兄弟包的变化。
  • 解决:这是Vite在Monorepo下的一个常见痛点。可以尝试:
    1. packages/admin/vite.config.ts中,显式地将共享包目录添加到依赖优化条目中:
      export default defineConfig({ optimizeDeps: { include: ['@celeris/utils', '@celeris/types', /* 其他共享包 */] }, // ... })
    2. 或者,直接重启开发服务器。

Q3: UnoCSS的类名在模板中不生效。

  • 原因:UnoCSS是按需生成的,它只扫描src目录下的文件。如果你在node_modules中的组件里使用了UnoCSS类名,或者类名是动态拼接的,UnoCSS可能无法检测到。
  • 解决
    1. 对于动态类名,使用UnoCSS的css函数或safelist配置。
      // unocss.config.ts export default defineConfig({ safelist: [ 'text-red-500', 'bg-blue-400', // 或者使用模式匹配 /^text-(red|blue|green)-\d+$/, ] })
    2. 确保你的Vite配置正确引入了UnoCSS插件。

6.2 生产构建优化建议

1. 分析打包体积:使用rollup-plugin-visualizer插件生成构建分析报告,查看哪个包或模块体积过大。

pnpm add -D rollup-plugin-visualizer

vite.config.ts中配置:

import { visualizer } from 'rollup-plugin-visualizer' export default defineConfig({ plugins: [ // ... 其他插件 visualizer({ open: true, // 构建后自动打开报告页面 gzipSize: true, brotliSize: true, }), ], })

2. 配置CDN引入:对于vuevue-routernaive-ui等较大的库,可以考虑通过CDN引入,减少应用主包体积。使用vite-plugin-cdn-import

import importToCDN from 'vite-plugin-cdn-import' export default defineConfig({ plugins: [ importToCDN({ modules: [ { name: 'vue', var: 'Vue', path: 'https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js', }, { name: 'vue-router', var: 'VueRouter', path: 'https://cdn.jsdelivr.net/npm/vue-router@4/dist/vue-router.global.prod.js', }, // ... 其他库 ] }) ], build: { rollupOptions: { external: ['vue', 'vue-router'], // 告诉Rollup这些是外部依赖 } } })

3. 图片资源优化:使用vite-plugin-imagemin自动压缩图片。

pnpm add -D vite-plugin-imagemin

配置时需注意,这个插件及其依赖可能需要系统级工具(如pngquantmozjpeg),在CI/CD环境中可能需要额外安装。

6.3 架构扩展思考:如何真正分离C端与Admin?

当前Celeris Web的“C端理念”更多体现在设计哲学和UI组件库的选型灵活性上。Admin和潜在的C端应用仍然共享同一个代码库和入口。如果你希望将两者完全分离成两个独立的应用,可以遵循以下思路:

  1. 创建新的应用包:在packages目录下新建一个c-endwebsite目录,其结构与admin类似,拥有自己的vite.config.tssrc入口和路由。
  2. 差异化配置c-end应用可以配置完全不同的Vite插件、UnoCSS主题、路由结构和布局组件。例如,引入专门为C端设计的组件库(如Element Plus的某个风格主题,或Headless UI自定制),或者使用不同的状态管理模块。
  3. 共享与隔离:业务逻辑、工具函数、类型定义仍然放在packages/utilspackages/types中共享。但UI组件、页面、样式可以完全独立。c-end可以有自己的packages/c-end-components
  4. 独立构建与部署:在根目录的package.json中为c-end添加独立的构建和开发脚本。
    { "scripts": { "dev:admin": "pnpm --filter admin dev", "dev:c-end": "pnpm --filter c-end dev", "build:admin": "pnpm --filter admin build", "build:c-end": "pnpm --filter c-end build" } }
  5. 微前端集成(高级):如果未来Admin和C端需要共存于同一个域名下,可以考虑使用qiankunmicro-app等微前端方案,将两个应用作为独立的子应用集成。Monorepo结构为这种集成提供了天然的便利。

Celeris Web的Monorepo设计为这种架构演进提供了极大的灵活性。你可以从一个简单的Admin模板开始,逐步将其演变成一个包含多个前后端应用的完整产品开发生态系统。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询