按需引入 Element

按需引入

借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。

首先,安装 babel-plugin-component:

npm install babel-plugin-component -D

然后,将 babel.config.js 修改为:

module.exports = {
 presets: [
   '@vue/cli-plugin-babel/preset',
  ["@babel/preset-env", { "modules": false }]
],
 "plugins": [
  [
     "component",
    {
       "libraryName": "element-ui",
       "styleLibraryName": "theme-chalk"
    }
  ]
]
}

接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:

import Vue from 'vue';
import { Button, Select } from 'element-ui';
import App from './App.vue';

Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
/* 或写为
* Vue.use(Button)
* Vue.use(Select)
*/

new Vue({
 el: '#app',
 render: h => h(App)
});

完整组件列表和引入方式(完整组件列表以 components.json 为准)

import Vue from 'vue';
import {
 Pagination,
 Dialog,
 Autocomplete,
 Dropdown,
 DropdownMenu,
 DropdownItem,
 Menu,
 Submenu,
 MenuItem,
 MenuItemGroup,
 Input,
 InputNumber,
 Radio,
 RadioGroup,
 RadioButton,
 Checkbox,
 CheckboxButton,
 CheckboxGroup,
 Switch,
 Select,
 Option,
 OptionGroup,
 Button,
 ButtonGroup,
 Table,
 TableColumn,
 DatePicker,
 TimeSelect,
 TimePicker,
 Popover,
 Tooltip,
 Breadcrumb,
 BreadcrumbItem,
 Form,
 FormItem,
 Tabs,
 TabPane,
 Tag,
 Tree,
 Alert,
 Slider,
 Icon,
 Row,
 Col,
 Upload,
 Progress,
 Spinner,
 Badge,
 Card,
 Rate,
 Steps,
 Step,
 Carousel,
 CarouselItem,
 Collapse,
 CollapseItem,
 Cascader,
 ColorPicker,
 Transfer,
 Container,
 Header,
 Aside,
 Main,
 Footer,
 Timeline,
 TimelineItem,
 Link,
 Divider,
 Image,
 Calendar,
 Backtop,
 PageHeader,
 CascaderPanel,
 Loading,
 MessageBox,
 Message,
 Notification
} from 'element-ui';

Vue.use(Pagination);
Vue.use(Dialog);
Vue.use(Autocomplete);
Vue.use(Dropdown);
Vue.use(DropdownMenu);
Vue.use(DropdownItem);
Vue.use(Menu);
Vue.use(Submenu);
Vue.use(MenuItem);
Vue.use(MenuItemGroup);
Vue.use(Input);
Vue.use(InputNumber);
Vue.use(Radio);
Vue.use(RadioGroup);
Vue.use(RadioButton);
Vue.use(Checkbox);
Vue.use(CheckboxButton);
Vue.use(CheckboxGroup);
Vue.use(Switch);
Vue.use(Select);
Vue.use(Option);
Vue.use(OptionGroup);
Vue.use(Button);
Vue.use(ButtonGroup);
Vue.use(Table);
Vue.use(TableColumn);
Vue.use(DatePicker);
Vue.use(TimeSelect);
Vue.use(TimePicker);
Vue.use(Popover);
Vue.use(Tooltip);
Vue.use(Breadcrumb);
Vue.use(BreadcrumbItem);
Vue.use(Form);
Vue.use(FormItem);
Vue.use(Tabs);
Vue.use(TabPane);
Vue.use(Tag);
Vue.use(Tree);
Vue.use(Alert);
Vue.use(Slider);
Vue.use(Icon);
Vue.use(Row);
Vue.use(Col);
Vue.use(Upload);
Vue.use(Progress);
Vue.use(Spinner);
Vue.use(Badge);
Vue.use(Card);
Vue.use(Rate);
Vue.use(Steps);
Vue.use(Step);
Vue.use(Carousel);
Vue.use(CarouselItem);
Vue.use(Collapse);
Vue.use(CollapseItem);
Vue.use(Cascader);
Vue.use(ColorPicker);
Vue.use(Transfer);
Vue.use(Container);
Vue.use(Header);
Vue.use(Aside);
Vue.use(Main);
Vue.use(Footer);
Vue.use(Timeline);
Vue.use(TimelineItem);
Vue.use(Link);
Vue.use(Divider);
Vue.use(Image);
Vue.use(Calendar);
Vue.use(Backtop);
Vue.use(PageHeader);
Vue.use(CascaderPanel);

Vue.use(Loading.directive);

Vue.prototype.$loading = Loading.service;
Vue.prototype.$msgbox = MessageBox;
Vue.prototype.$alert = MessageBox.alert;
Vue.prototype.$confirm = MessageBox.confirm;
Vue.prototype.$prompt = MessageBox.prompt;
Vue.prototype.$notify = Notification;
Vue.prototype.$message = Message;

__EOF__

本文作者嘿先生
本文链接https://www.cnblogs.com/liujis/p/16341599.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   这个名字没占用  阅读(181)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
点击右上角即可分享
微信分享提示