Vue3项目中快速引入ElementUI框架

ElementUI介绍

       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
// 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
// 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中还有其他组件,大部分都能满足开发需求,提升开发效率,更多组件请见官网开发文档。

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可能是因为你没有正确引入element-ui的样式文件。在使用element-ui之前,需要先引入它的样式文件。可以在index.html引入: ``` <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> ``` 或者在main.js引入: ``` import 'element-ui/lib/theme-chalk/index.css'; ``` 如果还是没有样式,可以检查一下是否正确安装了element-ui,或者尝试重新安装一下。 ### 回答2: Vue作为一款流行的前端框架,不仅有着方便的组件化开发方式和灵活的状态管理机制,还支持引用第三方库来实现更加丰富的效果和功能。而ElementUI则是Vue常用的UI组件库之一,提供了一系列美观、易用且高度可定制化的UI组件,可以帮助开发者快速搭建出一套完善的前端界面。 然而,有时候在引入ElementUI时,会发现界面上并没有出现预期的UI效果,而只有简单的文本和默认的HTML元素。这可能是因为Vue引入ElementUI后,没有正确设置ElementUI的主题样式所导致的。 ElementUI的主题样式是根据页面的变量进行设计的,如果没有为这些变量设置具体的值,那么组件的样式就不能正确地被渲染出来。我们可以通过以下步骤解决问题: 1. 在main.js引入ElementUI,并在Vue实例注册ElementUI。 ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 2. 在项目根目录下建立theme文件夹,并在其添加index.scss文件。 3. 在index.scss文件设置ElementUI的主题样式。我们可以到ElementUI官网上找到主题样式生成器(https://elementui.github.io/theme-chalk-preview/#/zh-CN),自行选择颜色搭配并生成相应的样式代码。 ``` @import "node_modules/element-ui/packages/theme-chalk/src/index"; @import "./variables.scss"; // 修改主题颜色 $--color-primary: #409EFF; $--color-success: #67C23A; $--color-warning: #E6A23C; $--color-danger: #F56C6C; // 引入变量文件 @import "./variables.scss"; // 重新编译主题 @include element-variables($theme); ``` 请注意,variables.scss是另一个用于设置ElementUI样式的文件,但是其的变量需要在index.scss引用才能生效。具体设置可以根据官方文档和个人需求进行调整。 4. 在webpack.base.conf.js配置sass-loader,使得webpack能够编译scss文件。我们需要先安装node-sass和sass-loader两个依赖。 ``` { test: /\.scss$/, loader: ['style', 'css', 'sass'] } ``` 设置完成后,我们重启项目即可看到正确的ElementUI样式效果。 总之,引入ElementUI无样式的问题主要是因为缺乏正确的主题样式设置所导致的。我们只需要设置好变量、编译主题,然后在项目正确引用即可。这也是一些类似问题的一般解决方法。 ### 回答3: Vue是一种用于构建用户界面的开源JavaScript框架,而ElementUI则是一个基于Vue.js的开源UI组件库,提供了许多易于使用、美观的组件和插件,使得开发者能够更加方便、快捷地构建出美观的Web界面。 如果在集成VueElementUI的过程,出现了ElementUI没有样式的情况,主要可能有以下几种情况: 1.引入ElementUI的JS文件,但没有引入它的CSS文件。在Vue引入ElementUI,需要先引入其CSS文件,以便能够正确地展示样式。可以在自己的项目安装ElementUI,然后在main.js或者App.vue文件引入elementui的样式。可以使用以下命令进行安装: npm install element-ui -S 安装后,在需要的地方引入即可,例如在main.js,可以通过以下方式引入elementui的css文件: import 'element-ui/lib/theme-chalk/index.css'; 2.没有正确地进行配置。在一些情况下,可能由于缺少某些配置,导致ElementUI无法正常显示样式。在使用ElementUI的时候,需要根据官方文档进行相应的配置,包括主题、字体大小等设置。在Vue的配置文件,一般为vue.config.js,在这里可以进行全局配置,也可以进行单个组件的配置。 3.样式冲突。如果在项目同时使用了其他UI组件库,可能会出现样式冲突的情况。为了解决这种问题,可以在Vue的样式使用scoped来避免样式冲突。 以上是可能出现ElementUI没有样式的一些情况,如果您在项目遇到了这样的问题,可以参考以上的解决方案,希望能够解决您的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angelasp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值