位置: IT常识 - 正文

Vue项目中实现ElementUI按需引入(vue在项目中怎么用的)

编辑:rootadmin
原力计划Vue项目中实现ElementUI按需引入

推荐整理分享Vue项目中实现ElementUI按需引入(vue在项目中怎么用的),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue ejs,vue v-el,vue项目使用rem,vue在项目中怎么用的,vue 实现,vue在项目中怎么用的,vue在项目中怎么用的,vue在项目中怎么用的,内容如对您有帮助,希望把文章链接给更多的朋友!

🐱 个人主页:不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫优质专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料可以找我免费领取 🔥 摸鱼学习交流:我们的宗旨是在工作中摸鱼,摸鱼中进步,期待大佬一起来摸鱼(文末有我wx或者私信)。

目录前言按需引入一、误区二、正确手法1、安装插件2、更改`.babelrc`配置3、 新建`auto-import-elementUI.js`文件,注册需要用到的组件4、main.js引入前言

为了减小项目打包体积,提高项目性能,对Element UI组件进行按需引入,但是在实际实践过程中遇到了比较有意思的问题,官方写的demo然而并不能行的通,有开发者在Issues提问,然后官方并没有给予解决,而开发者用另一种方式实现了。 (在这里我就想吐槽:官方demo实现不了,写在官网上给更多的人种坑,网上一大堆的Element UI组件按需引入几乎都是官方的例子。我就想问问那些写文章的兄弟们有么有实践过,又给众多兄弟埋坑呢!所以我总结一下给兄弟们避雷。)

官网demo:链接直达 Issues地址:链接直达

按需引入一、误区Vue项目中实现ElementUI按需引入(vue在项目中怎么用的)

这里有个误区,不使用babel-plugin-import插件,而是如下这么写,依然打包的是正个Element UI模块。

import Vue from "vue"import { Button } from "element-ui"Vue.use(Button)二、正确手法

使用babel-plugin-import插件,组件库按需加载时在 babel 编译 js 阶段进行了代码转换,只加载使用的组件代码。

1、安装插件npm install babel-plugin-component -D2、更改.babelrc配置

若项目目录没有.babelrc文件,没有的话新建一个。在babel执行编译的过程中,会从项目的根目录下的.babelrc文件中读取配置。.babelrc是一个json格式的文件。在.babelrc配置文件中,主要是对预设(presets) 和 插件(plugins) 进行配置。

{"plugins": [["component",{"libraryName": "element-ui","styleLibraryName": "theme-chalk"}]]}3、 新建auto-import-elementUI.js文件,注册需要用到的组件

这里以实际项目中使用为例,下面代码注释的是我项目中没有用到的组件。完整组件列表和引入方式(完整组件列表以 components.json 为准)

注意:官方给的例子和我下面写的不太一样,这就是为什么用官方例子就报错,官方是下面的写法,在实际过程就会报错,我所使用的Element UI 版本为2.15.13

//官方例子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;

报错如下: 为了避免出现上面的报错现象,下面的写法是Issus给出的正解,不会报错:

//Issus给出的正解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,Scrollbar} 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(Scrollbar);const { directive: loadingDirective, service: loadingService } = Loadingconst msgbox = MessageBoxconst { alert, confirm, prompt } = msgboxVue.use(loadingDirective)Vue.prototype.$loading = loadingServiceVue.prototype.$msgbox = msgboxVue.prototype.$alert = alertVue.prototype.$confirm = confirmVue.prototype.$prompt = promptVue.prototype.$notify = NotificationVue.prototype.$message = Message//设置项目中所有拥有 size 属性的组件Vue.prototype.$ELEMENT = { size: 'small', zIndex: 3000 }

至于为什么这么写,就需要研究源码了。

4、main.js引入import "./auto-import-elementUI.js"

接下来启动项目就可以啦,大功告成,如有遇到其他情况留言评论区。

本文链接地址:https://www.jiuchutong.com/zhishi/297360.html 转载请保留说明!

上一篇:vue中引入图片的方法(vue3引入图片)

下一篇:Vue.js笔记------事件(vue.js.)

  • 抖音自动播放怎么关掉(抖音刷播放双击24小时在线秒刷)

    抖音自动播放怎么关掉(抖音刷播放双击24小时在线秒刷)

  • ipx4级防水表示什么(ipx4级防水是什么意思)

    ipx4级防水表示什么(ipx4级防水是什么意思)

  • 微信旺柴表情怎么打(微信表情旺柴在哪里)

    微信旺柴表情怎么打(微信表情旺柴在哪里)

  • 华为手机的屏幕镜像在哪里打开(华为手机的屏幕录制在哪里)

    华为手机的屏幕镜像在哪里打开(华为手机的屏幕录制在哪里)

  • 在淘宝开店需要哪些东西(在淘宝开店需要交保证金吗)

    在淘宝开店需要哪些东西(在淘宝开店需要交保证金吗)

  • 华为手机画面旋转设置在哪(华为手机画面旋转在哪里找?)

    华为手机画面旋转设置在哪(华为手机画面旋转在哪里找?)

  • 微信拉黑了怎么发信息给对方(微信拉黑了怎么恢复好友)

    微信拉黑了怎么发信息给对方(微信拉黑了怎么恢复好友)

  • 天猫购物券退货返还吗(天猫购物券退货会退回来吗)

    天猫购物券退货返还吗(天猫购物券退货会退回来吗)

  • 荣耀v10能升级emui10系统吗(荣耀v10能升级鸿蒙系统吗)

    荣耀v10能升级emui10系统吗(荣耀v10能升级鸿蒙系统吗)

  • 手机拍屏幕有条纹(手机拍屏幕有条纹怎么设置)

    手机拍屏幕有条纹(手机拍屏幕有条纹怎么设置)

  • 小米8内屏坏了外屏完好(小米8内屏坏了多少钱)

    小米8内屏坏了外屏完好(小米8内屏坏了多少钱)

  • iphone开机激活卡在软件更新(苹果激活卡住)

    iphone开机激活卡在软件更新(苹果激活卡住)

  • 微信过期重新登录是什么原因(微信过期重新登录后联系人还在吗)

    微信过期重新登录是什么原因(微信过期重新登录后联系人还在吗)

  • 电脑开机风扇声音很大(电脑开机风扇声音很大但电脑没反应)

    电脑开机风扇声音很大(电脑开机风扇声音很大但电脑没反应)

  • 华为手表app叫什么(华为手表app叫什么儿童)

    华为手表app叫什么(华为手表app叫什么儿童)

  • vivo云服务怎么退出登录(vivo云服务怎么添加另一个设备)

    vivo云服务怎么退出登录(vivo云服务怎么添加另一个设备)

  • 怎么设置微信消息声音(怎么设置微信消息免打扰)

    怎么设置微信消息声音(怎么设置微信消息免打扰)

  • oppoa9可以卸载语音助手吗(oppo手机如何卸载语音助手)

    oppoa9可以卸载语音助手吗(oppo手机如何卸载语音助手)

  • 华为p30带红外线吗(华为p30红外线遥控在哪里)

    华为p30带红外线吗(华为p30红外线遥控在哪里)

  • 清除微信缓存会清除掉什么(清除微信缓存会影响聊天记录吗)

    清除微信缓存会清除掉什么(清除微信缓存会影响聊天记录吗)

  • 爱奇艺横屏在哪里设置(爱奇艺横屏在哪里打开)

    爱奇艺横屏在哪里设置(爱奇艺横屏在哪里打开)

  • MAC电脑Command键调换为Control键的方法(mac电脑command键快捷设置)

    MAC电脑Command键调换为Control键的方法(mac电脑command键快捷设置)

  • 开启资源管理器中的文件选择复选框功能(开启资源管理器自动刷新功能)

    开启资源管理器中的文件选择复选框功能(开启资源管理器自动刷新功能)

  • 2023年享受六税两费减免吗
  • 减免增值税如何结转
  • 小规模纳税人不开票需要纳税吗
  • 税收保全措施有金银首饰吗
  • 小企业外币交易的类型有哪些
  • 非限定性净资产相当于本年利润吗
  • 大巴车怎么进行营运
  • 电子税务局税种认定在哪里看
  • 社保利息计入什么科目
  • 建筑企业利润率低的原因
  • 企业融资租赁是什么意思
  • 施工企业必须要注册造价工程师吗
  • 农产品增值税进项税额核定扣除办法
  • 进口内销是什么意思
  • 企业长期待摊费用包括
  • 股东放弃本企业股权
  • 没有留抵税用进项抵扣滞纳金可以吗?
  • 产品成本的归集和分配是什么意思
  • 专用增值税发票怎么作废
  • 小规模纳税人隔月可以作废发票吗
  • 购货方申请红字信息表,销售方不开会怎么样
  • 农副产品收购发票申请
  • 广告服务印花税怎么交
  • 税控机操作
  • 财务报表依据的会计记录
  • 生产企业原材料的订购与运输建模
  • 涉税票据如何避免税务风险?
  • u盘写入扇区错误
  • saproxy.exe - saproxy是什么进程 有什么用
  • 分配水电费会计分录怎么写
  • 高新企业收到政府补贴
  • 外观设计专利费减
  • 计提税金会计分录怎么做
  • vite配置详解
  • 确保政府采购
  • 施工单位老板
  • 怎么开通公众号微信公众平台
  • 损益类账户怎么做会计分录
  • 递延收益会计科目的账务处理
  • Web Spider Fiddler - JS Hook 基本使用
  • linux symbolic link
  • audo命令
  • 申请税控盘流程需要几个工作日
  • 小规模纳税企业在应交增值税明细科目
  • 应收帐款质保金
  • 商业银行提取的盈余公积可用于
  • 贴现的概念及计算公式
  • 实收资本账务处理错误可以调减吗
  • 暂估和开票的差异 erp处理
  • 小微企业流转税优惠政策
  • 个人开技术服务费
  • 进项税额转出在电子税务局怎么操作
  • 公司市场部门有什么职位
  • 增值税销项税率是多少
  • 融资租赁出租人与承租人之间形成债权债务关系
  • 餐费补贴属于工资还是福利费
  • 总分类账与明细分类账的关系
  • 新建公司需要什么
  • Centos7.3下mysql5.7.18安装并修改初始密码的方法
  • sqlserver 自动备份所有数据库的SQL
  • window mysql
  • linux自动化装机
  • windows7怎么说
  • 英雄联盟支持win7
  • 英雄联盟windows10
  • Linux系统如何创建目录
  • linux查找文件语句
  • perl fileparse
  • 手机gpu过度绘制
  • js插件大全
  • js模块化和组件化
  • ug怎么加载制图模板
  • 安卓wifi打不开解决
  • unityui渲染顺序
  • 爬虫如何识别验证码
  • jquery弹出提示框
  • jquery悬浮显示
  • 江西省发票查询系统
  • 慈善组织可能会出现哪些问题
  • 个体工商户如何注销
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设