Skip to content

Element Plus

引入

1、全局引入

bash
# 安装
npm install element-plus --save

main.ts

tsx
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'

const app = createApp(App)

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

tsconfig.json

json
{
  "compilerOptions": {
    // ...
    "types": ["element-plus/global"]
  }
}

2、按需引入

bash
# 按需加载插件
npm install -D unplugin-vue-components unplugin-auto-import

# 处理图标的按需加载
npm i -D unplugin-icons

把下列代码插入到你的 ViteWebpack 的配置文件中

Vite

tsx
// vite.config.ts 文件

import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [
        ElementPlusResolver(),  // 自动导入 Element ui 相关函数
        IconsResolver(),  // 自动导入图标组件
      ],
    }),
    Components({
      resolvers: [
        IconsResolver({
          enabledCollections: ["ep"],
        }),
        ElementPlusResolver(),  // 自动导入Element 组件
      ],
    }),
    Icons({
      autoInstall: true,
    }),
  ],
  resolve: {
    alias: {
      "@": fileURLToPath(new URL("./src", import.meta.url)),
    },
  },
});

Webpack

js
// webpack.config.js 文件

const AutoImport = require('unplugin-auto-import/webpack')
const Components = require('unplugin-vue-components/webpack')
const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')

module.exports = {
  // ...
  plugins: [
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
  ],
}

Upload 上传

图片本地预览

vue
<template>
  <el-upload
    class="avatar-uploader"
    ref="uploadRef"
    :show-file-list="false"
    :auto-upload="false"
    :on-change="onSelectFile">
    <img v-if="imgUrl" :src="imgUrl" class="avatar" />
    <el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
  </el-upload>
  <!-- 另外写一个按钮也绑定上传的事件 -->
  <el-button
    type="primary"
    :icon="Plus"
    size="large"
    @click="uploadRef.$el.querySelector('input').click()"
    >选择图片
  </el-button>
</template>

<script setup>
import { ref } from 'vue'
const uploadRef = ref()
const onSelectFile = (uploadFile) => {
  // 本地图片预览
  // imgUrl.value = URL.createObjectURL(uploadFile.raw)

  // 基于 FileReader 读取图片预览
  const reader = new FileReader()
  reader.readAsDataURL(uploadFile.raw)
  reader.onload = () => {
    imgUrl.value = reader.result
  }
}
</script>

welcome to zhudaidai's blog!