Skip to content
第 21 章 前端 ⏱ 12 分钟阅读

第 21 章:组件库 ​

学习目标 ​

  • 选型主流组件库
  • 按需引入 Element Plus
  • 按需引入 Naive UI / Ant Design Vue
  • 避坑:全量引入的体积问题

一、主流组件库对比 ​

库Vue风格体积
Element Plus3中后台中
Naive UI3现代小
Ant Design Vue3中后台中
Vant3移动端小
PrimeVue3全场景中

二、Element Plus 按需引入 ​

bash
npm i element-plus
ts
// src/main.ts
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

createApp(App).use(ElementPlus).mount('#app')

⚠️ 坑 1:全量引入会把项目打包到 1MB+,中后台推荐按需。

自动按需:

bash
npm i -D unplugin-vue-components
ts
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import Components from 'unplugin-vue-components/vite'

export default defineConfig({
  plugins: [
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})
vue
<el-button>不需要 import,自动注册</el-button>

三、Naive UI ​

bash
npm i -D naive-ui
ts
import { create, NButton, NMessageProvider } from 'naive-ui'

const naive = create({ components: [NButton, NMessageProvider] })
app.use(naive)

更推荐自动导入:

ts
import { NaiveUiResolver } from 'unplugin-vue-components/resolvers'

⚠️ 坑 2:Naive UI 默认用 CSS-in-JS,可自定义主题,但 SSR 配置麻烦。

四、Ant Design Vue ​

bash
npm i ant-design-vue
ts
import Antd from 'ant-design-vue'
import 'ant-design-vue/dist/reset.css'
app.use(Antd)

五、自定义主题 ​

Element Plus 改主题色:

ts
import { defineConfig } from '@element-plus/vite-plugin'

export default defineConfig({
  theme: {
    primaryColor: '#42b883',
  },
})

Naive UI 主题覆盖:

ts
<n-config-provider :theme-overrides="overrides">
  <App />
</n-config-provider>

<script setup lang="ts">
const overrides = {
  common: { primaryColor: '#42b883' },
}
</script>

六、消息组件全局 ​

ts
// src/utils/message.ts
import { ElMessage } from 'element-plus'

export const message = ElMessage
vue
<script setup lang="ts">
import { message } from '@/utils/message'
message.success('保存成功')
</script>

⚠️ 坑 3:ElMessage 必须在 app.use(ElementPlus) 之后调用,否则会报错。

七、SSR 兼容 ​

Naive UI 适合 SSR(Element Plus 在 SSR 报错较多,需要手动配置)。

八、本章小结 ​

库选型建议
Element Plus中后台首选,生态最全
Naive UI现代风格,主题定制强
Ant Design Vue重度中后台
Vant移动端 H5

动手练习 ​

  1. Element Plus:按需引入 + 改主题色
  2. Naive UI:用 <n-config-provider> 切换主题
  3. message 封装:统一封装 message.success / error

下一章:第 22 章:请求封装 →

本站基于 VitePress 构建 · 由 StackHub 团队维护