在實現element-ui按需加載前,需要先安裝好element-ui和 babel-plugin-component:
借助 babel-plugin-component,我們可以只引入需要的組件,以達到減小項目體積的目的。
步驟如下:安裝
安裝:1.element-ui,babel-plugin-component 兩個插件
2.在項目內新建 babel.config.js文件(和package.json文件同級)
3.src下新增了plugins文件夾,文件夾下的element.js文件用於存放按需引入內容。
4.在element.js文件中進行按需引入
詳細展開如下:
npm i element-ui -S
npm install babel-plugin-component -D
在安裝完成后會在 package.json 內看到安裝完成的內容:
在安裝完成后,在項目內新建 babel.config.js文件(和package.json文件同級)
babel.config.js:
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
],
plugins: [
[
'component',
{
libraryName: 'element-ui',
styleLibraryName: 'theme-chalk'
}
]
]
}
在創建完成后,需要新建一個文件專門用於存放按需引入的組件,因為少量組件的話可以直接在main.js內引入,項目內的組件數量會不斷增多,需要單獨建個文件用於存放引入的組件:
這里在src下新增了plugins文件夾,文件夾下的element.js文件用於存放按需引入內容。
element.js
import Vue from 'vue'
import { Button, Form, FormItem, Input, Message,
Container, Header, Aside, Main, Menu, Submenu,
MenuItem, Breadcrumb, BreadcrumbItem, Card,
Row, Col, Table, TableColumn, Switch, Tooltip,
Pagination, Dialog, MessageBox, Tag,Tree, Select,
Option, Cascader,Alert, Tabs, TabPane, Steps, Step,
CheckboxGroup, Checkbox, Upload, Timeline, TimelineItem} from 'element-ui'
Vue.use(Button)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Input)
Vue.use(Container)
Vue.use(Header)
Vue.use(Aside)
Vue.use(Main)
Vue.use(Menu)
Vue.use(Submenu)
Vue.use(MenuItem)
Vue.use(Breadcrumb)
Vue.use(BreadcrumbItem)
Vue.use(Card)
Vue.use(Row)
Vue.use(Col)
Vue.use(Table)
Vue.use(TableColumn)
Vue.use(Switch)
Vue.use(Tooltip)
Vue.use(Pagination)
Vue.use(Dialog)
Vue.use(Tag)
Vue.use(Tree)
Vue.use(Select)
Vue.use(Option)
Vue.use(Cascader)
Vue.use(Alert)
Vue.use(Tabs)
Vue.use(TabPane)
Vue.use(Steps)
Vue.use(Step)
Vue.use(CheckboxGroup)
Vue.use(Checkbox)
Vue.use(Upload)
Vue.use(Timeline)
Vue.use(TimelineItem)
// 這個特殊的是message, 需要全局掛載 彈窗
Vue.prototype.$message = Message
Vue.prototype.$confirm = MessageBox.confirm
上述部分等於把需要引入的東西都加載了,然后需要最重要的一步:
需要在main.js內引入這個文件:
import './plugins/element.js'
這里的main.js和plugins是同級。
這就是一個完整的引入過程了,當后續需要用到什么組件時,就可以直接去element.js文件內添加。