Vue 3 + Vite 项目中按需引入 Element Plus (JavaScript)

1. 安装必要依赖
bash 复制代码
npm install element-plus
npm install -D unplugin-vue-components unplugin-auto-import
2. 配置 vite.config.js
js 复制代码
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
})
3. 可选样式配置
3.1 完整引入样式 (推荐)

在 main.js 中:

js 复制代码
import 'element-plus/dist/index.css'
3.2 按需引入样式 (需要额外安装插件)
bash 复制代码
npm install -D vite-plugin-style-import

然后在 vite.config.js 中添加:

js 复制代码
import { createStyleImportPlugin } from 'vite-plugin-style-import'

export default defineConfig({
  plugins: [
    // ...其他插件
    createStyleImportPlugin({
      libs: [
        {
          libraryName: 'element-plus',
          esModule: true,
          ensureStyleFile: true,
          resolveStyle: (name) => {
            return `element-plus/es/components/${name.substring(3)}/style/css`
          },
        },
      ],
    }),
  ],
})
4. 使用组件

现在你可以直接在模板中使用 Element Plus 组件,无需手动导入:

vue 复制代码
<template>
  <el-button type="primary">按钮</el-button>
  <el-input v-model="inputValue" placeholder="请输入内容"></el-input>
</template>

<script>
export default {
  data() {
    return {
      inputValue: ''
    }
  }
}
</script>
5. 自定义主题 (可选)

在 vite.config.js 中添加:

js 复制代码
export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "element-plus/theme-chalk/src/index" as *;`,
      },
    },
  },
})

然后创建 variables.scss 文件定义变量:

css 复制代码
$--color-primary: #409EFF;
注意事项
  1. 确保你的 Vue 版本是 3.x
  2. 确保 Vite 版本是 2.x 或更高
  3. 按需引入只适用于模板中使用的组件
  4. 如果需要在 JS 中使用 ElMessage 等非组件 API,仍需手动导入:
js 复制代码
import { ElMessage } from 'element-plus'

ElMessage.success('操作成功')
相关推荐
闲蛋小超人笑嘻嘻几秒前
Vue 插槽:从基础到进阶
前端·javascript·vue.js
梦65010 分钟前
Vue2 与 Vue3 对比 + 核心差异
前端·vue.js
tiandyoin19 分钟前
给 MHTML 添加滚动条.mhtml
前端·chrome·html·mhtml
遗憾随她而去.39 分钟前
前端大文件上传(切片并发/断点续传/秒传/WebWorker 计算Hash) 含完整代码
前端
AKA__老方丈1 小时前
vue-cropper图片裁剪、旋转、缩放、实时预览
前端·vue.js
梦6502 小时前
Vue 单页面应用 (SPA) 与 多页面应用 (MPA) 对比
前端·javascript·vue.js
清铎2 小时前
大模型训练_week3_day15_Llama概念_《穷途末路》
前端·javascript·人工智能·深度学习·自然语言处理·easyui
岛泪3 小时前
把 el-cascader 的 options 平铺为一维数组(只要叶子节点)
前端·javascript·vue.js
Kiyra3 小时前
阅读 Netty 源码关于 NioEventLoop 和 Channel 初始化部分的思考
运维·服务器·前端
冰暮流星4 小时前
javascript的switch语句介绍
java·前端·javascript