96SEO 2026-08-03 19:56 21
也是一种微前端架构,但是不同于 qiankun 这样的重型微前端框架。
我参与过一个桌面端内容展示项目,技术栈是 Electron + Vue3。项目中有个主要需求:主入口由多个独立开发的卡片组件构成。这些组件需要能够独立更新,而不需要重新打包整个桌面应用。

简单说就是这方面。组件要能热更新,随时替换,不影响主程序。
基于这个需求,设计了一套四层架构:
┌─────────────────────────────────────────────────────────────┐
│ Layer : Electron桌面应用 │
│ 职责:展示内容,提供运行容器。渲染卡片 │
├─────────────────────────────────────────────────────────────┤
│ Layer : 内容编排程序 │
│ 职责:上传组件、编排布局、配置跳转、发布配置 │
├─────────────────────────────────────────────────────────────┤
│ Layer : 组件开发项目 │
│ 职责:开发卡片组件 → 打包UMD → 生成ZIP → 上传组件仓库 │
├─────────────────────────────────────────────────────────────┤
│ Layer : 详情落地页 │
│ 职责:卡片点击后的跳转详情页面 │
└─────────────────────────────────────────────────────────────┘
这个架构的主要是 Layer如何让每个组件独立开发、独立打包、独立部署。
我们要解决三个痛点:
这篇文章主要讲前两个痛点。
我们想要这样的效果:在组件开发项目中,输入命令就能打包指定组件。
npm run component abc # 打包 abc 组件
npm run component newsList # 打包 newsList 组件
npm run component chart # 打包 chart 组件
每个组件独立打包,互不干扰。打包产物是一个可直接在浏览器中运行的 UMD 文件。
component-project/
├── src/
│ └── components/
│ ├── abc/
│ │ ├── index.js # 组件入口
│ │ ├── abc.vue # 组件代码
│ │ └── config.json # 组件元信息
│ ├── newsList/
│ │ ├── index.js
│ │ ├── newsList.vue
│ │ └── config.json
│ └── chart/
│ ├── index.js
│ ├── chart.vue
│ └── config.json
├── scripts/
│ └── build-component.js # 打包脚本
├── vite.component.config.js # Vite 打包配置
└── package.json
// src/components/abc/index.js
import abc from './abc.vue'
export default {
// install 方法:支持 app.use 注册所有组件
install {
app.component
},// 单独导出供按需引入使用的原始 Vue 对象
abc,}
// vite.component.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'
const componentName = process.env.COMPONENT_NAME // 从环境变量获取名称
const entryFile = process.env.COMPONENT_ENTRY // 从环境变量获取入口
export default defineConfig({
plugins:,build: {
至于lib,{
entry的观点是,entryFile,name: `${componentName}Component`,fileName: => `${componentName}.${format}.js`,},rollupOptions: {
external:,output: {
globals: {
vue的观点是,'Vue',},},},cssCodeSplit: false,// 不拆分 CSS,配合插件实现 CSS 注入 JS 中
},})
| 配置项 | 作用 |
|---|---|
process.env.COMPONENT_NAME | 通过环境变量传入当前待打包的组件名。 |
process.env.COMPONENT_ENTRY | 通过环境变量传入入口文件方法。实现“一套配置,多次复用”。 |
external: | Vue 不再被打进产物。由宿主提供,避免重复加载体积膨胀。 |
globals: { vue: 'Vue' } | K产物期望全局有 window.Vue. |
false | K不拆分 CSS,让插件把样式写进 JS。 |
cssInjectedByJsPlugin | K自动把 CSS 注入到 JS 中的 标签,实现“一文件全功能”。 |
// scripts/build-component.js
import { execSync } from 'child_process'
import fs from 'fs'
import path from 'path'
// 获取命令行参数,例如 npm run component abc -> "abc"
const componentName = process.argv
if {
console.error
process.exit
}
// 检查入口文件是否存在如不存在直接报错退出
const entryFile = path.join
if ) {
console.error
process.exit
}
// 设置环境变量供 Vite 使用
process.env.COMPONENT_NAME = componentName
process.env.COMPONENT_ENTRY = entryFile
// 执行 Vite 建立命令。并把子进程的输出直接打印到控制台
execSync('npx vite build --config vite.component.config.js',{
至于stdio,'inherit',env: process.env,})
{
"scripts": {
"component": "node scripts/build-component.js"
}
}
AWS 默认会把 CSS 抽离成单独文件,但我们的目标是「一个 JS 包含所有内容」。于是引入 @vite-plugin/css-injected-by-js
npm install --save-dev vite-plugin-css-injected-by-js
The plugin automatically creates a `
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback