赞
踩
ElementUI是一个强大的PC端UI组件框架,它不依赖于vue,但是却是当前和vue配合做项目开发的一个比较好的ui框架,其包含了布局(layout),容器(container)等各类组件,基本上能满足日常网站的搭建开发。针对vue2和vue3都有对应的组件版本,本文主要介绍在vue3中如何引入使用ElementUI(vue3中升级为Element Plus)。
vue3中使用如下命令通过 npm 安装 (我也使用的安装方式)
$ npm install element-plus --save
也可以使用其他的包管理起进行安装:
- # Yarn
- $ yarn add element-plus
-
- # pnpm
- $ pnpm install element-plus
element-plus分为全局引入和按需引入两种方式,一般在工程项目中,由于全局引入会导致不必要的资源加载,为提升项目性能,建议进行按需引入。以下我们对两种引入方式进行介绍。
全局引入就是在项目入口(main.ts/main.js
)文件直接引入组件以及组件全部的样式文件;代码如下所示:
- // main.ts
- 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')
在vue3中按需引入ElementUI,需要使用其他的插件辅助,需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件;安装方法如下:
npm install -D unplugin-vue-components unplugin-auto-import
然后再vite
或者webpack
配置中添加相应的配置,如下所示:
- // vite.config.ts
- import { defineConfig } from 'vite'
- 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: [
- // ...
- AutoImport({
- resolvers: [ElementPlusResolver()],
- }),
- Components({
- resolvers: [ElementPlusResolver()],
- }),
- ],
- })

- // 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()],
- }),
- ],
- }

日志再vue.config.js中,导入方法相同:
- const { defineConfig } = require('@vue/cli-service')
- const AutoImport = require('unplugin-auto-import/webpack')
- const Components = require('unplugin-vue-components/webpack')
- const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
-
- module.exports = defineConfig({
- configureWebpack: {
- plugins: [
- AutoImport({
- resolvers: [ElementPlusResolver()],
- }),
- Components({
- resolvers: [ElementPlusResolver()],
- }),
- ],
- }
- })

引入完毕之后,我们可进行按需引入需要使用的组件,使用方法如下,引入table、input、button等组件。
- <template>
- <div>
- <el-button @click="resetDateFilter">清除日期过滤器</el-button>
- <el-button @click="clearFilter">清除所有过滤器</el-button>
- <el-table
- ref="filterTable"
- :data="tableData"
- style="width: 100%">
- <el-table-column
- prop="date"
- label="日期"
- sortable
- width="180"
- column-key="date"
- :filters="[{text: '2016-05-01', value: '2016-05-01'}, {text: '2016-05-02', value: '2016-05-02'}, {text: '2016-05-03', value: '2016-05-03'}, {text: '2016-05-04', value: '2016-05-04'}]"
- :filter-method="filterHandler"
- >
- </el-table-column>
- <el-table-column
- prop="name"
- label="姓名"
- width="180">
- </el-table-column>
- <el-table-column
- prop="address"
- label="地址"
- :formatter="formatter">
- </el-table-column>
- <el-table-column
- prop="tag"
- label="标签"
- width="100"
- :filters="[{ text: '家', value: '家' }, { text: '公司', value: '公司' }]"
- :filter-method="filterTag"
- filter-placement="bottom-end">
- </el-table-column>
- </el-table>
- <el-input class="input" v-model="input" type="file" placeholder="Please input" />
- <el-button class="button" type="primary">文件处理</el-button>
- </div>
- </template>
-
- <script>
- import { ElButton, ElInput } from 'element-plus'
- import { ref } from 'vue'
-
- export default {
- components: { ElButton,ElInput },
- data() {
- return {
- tableData: [{
- date: '2016-05-02',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1518 弄',
- tag: '家'
- }, {
- date: '2016-05-04',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1517 弄',
- tag: '公司'
- }, {
- date: '2016-05-01',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1519 弄',
- tag: '家'
- }, {
- date: '2016-05-03',
- name: '王小虎',
- address: '上海市普陀区金沙江路 1516 弄',
- tag: '公司'
- }]
- }
- },
- methods: {
- resetDateFilter() {
- this.$refs.filterTable.clearFilter('date');
- },
- clearFilter() {
- this.$refs.filterTable.clearFilter();
- },
- formatter(row, column) {
- return row.address;
- },
- filterTag(value, row) {
- return row.tag === value;
- },
- filterHandler(value, row, column) {
- const property = column['property'];
- return row[property] === value;
- }
- }
- }
-
- </script>
- <style scoped>
- .input {
- display: inline;
- margin: 20px 30px;
- }
- .button {
- width: 90px;
- }
- </style>

前端显示如下:
ElementUI中还有其他组件,大部分都能满足开发需求,提升开发效率,更多组件请见官网开发文档。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。