Vue基础知识-Vue集成 Element UI全量引入与按需引入

一、方式一:全量引入 Element UI

全量引入即一次性加载 Element UI 所有组件和样式,优点是配置简单,适合快速开发;缺点是打包体积较大,生产环境可能存在冗余。

1. 安装 Element UI

全量引入只需安装 Element UI 核心依赖(运行时必需,用-S或默认不写参数):

复制代码
npm install element-ui -S

2. 配置全量引入(main.js)

在项目入口文件main.js中引入所有组件和样式,并全局注册:

javascript 复制代码
import Vue from 'vue'
import App from './App.vue'

// 1. 全量引入Element UI组件和样式
import ElementUI from 'element-ui' // 引入所有组件
import 'element-ui/lib/theme-chalk/index.css' // 引入所有样式

// 2. 全局注册Element UI(注册后所有组件可直接在模板使用)
Vue.use(ElementUI)

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

二、方式二:按需引入 Element UI(生产环境首选)

按需引入仅加载项目中用到的组件和对应样式,能显著减小打包体积,是生产环境的最佳实践。但需额外配置 Babel 插件。

1. 安装依赖

需安装两个依赖:

  • element-ui:核心组件库(运行时必需,-S);

  • babel-plugin-component:按需引入插件(仅开发时用,-D);

    安装核心组件库(运行时必需)

    npm install element-ui -S

    安装按需引入插件(开发时用)

    npm install babel-plugin-component -D

2. 配置 Babel(babel.config.js)

在项目根目录的babel.config.js中添加插件配置,让 Babel 自动处理组件和样式的按需加载:

javascript 复制代码
module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset' // Vue CLI默认预设,无需修改
  ],
  plugins: [
    [
      'component', // 对应安装的babel-plugin-component插件
      {
        libraryName: 'element-ui', // 指定目标组件库为Element UI
        styleLibraryName: 'theme-chalk' // 指定Element UI的样式主题(默认theme-chalk)
      }
    ]
  ]
}

3. 按需引入组件(main.js)

main.js中仅引入项目用到的组件(本文示例用ButtonDatePickerRow),并全局注册:

javascript 复制代码
import Vue from 'vue'
import App from './App.vue'

// 1. 按需引入Element UI组件(仅引入用到的组件)
import { Button, DatePicker, Row } from 'element-ui'

// 2. 全局注册组件(两种方式二选一,效果一致)
// 方式A:用Vue.component(显式指定组件名,Button.name即"el-button")
Vue.component(Button.name, Button)
Vue.component(DatePicker.name, DatePicker)
Vue.component(Row.name, Row)

// 方式B:用Vue.use(组件内部已封装install方法,自动注册)
// Vue.use(Button)
// Vue.use(DatePicker)
// Vue.use(Row)

Vue.config.productionTip = false

new Vue({
  render: h => h(App),
}).$mount('#app')

三、组件代码(App.vue)

html 复制代码
<template>
    <div>
      <el-row>
        <el-button type="primary">按钮</el-button>
        <el-button type="primary" plain>按钮</el-button>
        <el-button type="primary" round>按钮</el-button>
        <el-button type="primary" circle>按钮</el-button>
      </el-row>
      <el-date-picker
          v-model="date"
          type="date"
          placeholder="选择日期"
          value-format="yyyy-MM-dd">
      </el-date-picker>
    </div>
</template>

<script>
    export default {
        name:'App',
        data(){
          return {
            date:""
          }
        },
        components:{

        }
    }
</script>

<style>

</style>

四、关键知识点解析

1. -D-S的区别(依赖分类)

  • -S--save,默认):安装到dependencies(生产环境依赖),即项目运行时必须的依赖(如element-ui,用户使用时需要);
  • -D--save-dev):安装到devDependencies(开发环境依赖),即仅开发时用的工具(如babel-plugin-component,打包后无需包含)。

错误后果 :若将babel-plugin-component-S安装,会导致生产环境打包时包含无用的开发工具,增加体积。

2. Vue.use()Vue.component()的区别

两种方法都能全局注册组件,但适用场景不同:

  • Vue.component(组件名, 组件对象):直接注册 "单个组件",需手动指定组件名(如Vue.component('el-button', Button));
  • Vue.use(插件/组件):用于安装 "带install方法的对象"(Element UI 组件内部已封装install方法,调用Vue.use时会自动注册组件)。

本文示例中Button组件既可以用Vue.component(Button.name, Button)注册,也可以用Vue.use(Button)注册,效果完全一致。

五、总结

引入方式 优点 缺点 适用场景
全量引入 配置简单,无需额外插件 打包体积大,冗余代码多 快速开发、小型项目
按需引入 打包体积小,性能优 需配置 Babel 插件,步骤稍多 生产环境、中大型项目
相关推荐
云技纵横1 分钟前
Vue无限滚动实战——从原理到企业级优化方案
前端
细心细心再细心3 分钟前
响应式记录
前端·vue.js
北辰alk7 分钟前
Vue打包后静态资源图片失效?一网打尽所有解决方案!
vue.js
干就完了110 分钟前
关于git的操作命令(一篇盖全),可不用,但不可不知!
前端·javascript
hjt_未来可期10 分钟前
js实现替换输入框中选中的文字
javascript·vue.js
之恒君11 分钟前
JavaScript 垃圾回收机制详解
前端·javascript
是你的小橘呀12 分钟前
像前任一样捉摸不定的异步逻辑,一文让你彻底看透——JS 事件循环
前端·javascript·面试
Tzarevich12 分钟前
JavaScript 继承与 `instanceof`:从原理到实践
javascript
Cache技术分享14 分钟前
260. Java 集合 - 深入了解 HashSet 的内部结构
前端·后端
前端老宋Running14 分钟前
你的代码在裸奔?给 React 应用穿上“防弹衣”的保姆级教程
前端·javascript·程序员