位置: 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.)

  • 拼多多怎么删除银行卡绑定呢(拼多多怎么删除评价)

    拼多多怎么删除银行卡绑定呢(拼多多怎么删除评价)

  • 华为手机怎么安装未知应用权限(华为手机怎么安装谷歌三件套)

    华为手机怎么安装未知应用权限(华为手机怎么安装谷歌三件套)

  • 国产oled屏手机有哪些(国产oled屏幕哪个牌子最好)

    国产oled屏手机有哪些(国产oled屏幕哪个牌子最好)

  • dc调光会加速烧屏吗(dc调光会耗电吗)

    dc调光会加速烧屏吗(dc调光会耗电吗)

  • 超话等级怎么快速升(如何让超话等级快速上升)

    超话等级怎么快速升(如何让超话等级快速上升)

  • 电脑自带截屏键是哪个(电脑自带截屏键盘按哪个键)

    电脑自带截屏键是哪个(电脑自带截屏键盘按哪个键)

  • 微信号一般是什么组成(微信号一般什么价格)

    微信号一般是什么组成(微信号一般什么价格)

  • 手机出现蓝色斑点并且不断扩大(手机出现蓝色斑点,并且不断扩大怎么办)

    手机出现蓝色斑点并且不断扩大(手机出现蓝色斑点,并且不断扩大怎么办)

  • 华为手机手势导航在哪里设置(华为手机手势导航失灵)

    华为手机手势导航在哪里设置(华为手机手势导航失灵)

  • 闲鱼限制登录是什么意思(咸鱼限制登录怎么办)

    闲鱼限制登录是什么意思(咸鱼限制登录怎么办)

  • 安装程序需要下一张磁盘是什么意思(安装程序需要下一张磁盘怎么解决bin)

    安装程序需要下一张磁盘是什么意思(安装程序需要下一张磁盘怎么解决bin)

  • 手机铃声不响了只会震动(苹果手机铃声不响了)

    手机铃声不响了只会震动(苹果手机铃声不响了)

  • vivox9语音助手叫什么(vivox9l语音助手)

    vivox9语音助手叫什么(vivox9l语音助手)

  • 启用gpu调试层有必要开吗(启用 gpu 调试层)

    启用gpu调试层有必要开吗(启用 gpu 调试层)

  • 两个qq号关联后会怎样(两个QQ号关联后如何查询对方登录我的号)

    两个qq号关联后会怎样(两个QQ号关联后如何查询对方登录我的号)

  • 单页横向怎么设置(怎么设单页横向word)

    单页横向怎么设置(怎么设单页横向word)

  • ipad air3支持pencil吗(ipad air3支持pencil2吗)

    ipad air3支持pencil吗(ipad air3支持pencil2吗)

  • 手机普及是什么时候(手机普及的好处)

    手机普及是什么时候(手机普及的好处)

  • wps如何设置脚注(wps如何设置脚注字体)

    wps如何设置脚注(wps如何设置脚注字体)

  • oppo手机关机怎么关(oppo手机关机了怎么找到手机)

    oppo手机关机怎么关(oppo手机关机了怎么找到手机)

  • 恋爱记怎么解除关系(恋爱记怎么解除另一半)

    恋爱记怎么解除关系(恋爱记怎么解除另一半)

  • 怎么关闭杀毒软件(咋关闭杀毒软件)

    怎么关闭杀毒软件(咋关闭杀毒软件)

  • 图片超链接怎么弄(图片超链接怎么取消)

    图片超链接怎么弄(图片超链接怎么取消)

  • 应用程序无法正常启动0xc0150002解决方法(应用程序无法正常启动0xc000007b)

    应用程序无法正常启动0xc0150002解决方法(应用程序无法正常启动0xc000007b)

  • “Property or method “***“ is not defined on the instance but referenced during render.”报错的原因及解决方案

    “Property or method “***“ is not defined on the instance but referenced during render.”报错的原因及解决方案

  • dedecms如何把内容页和栏目页设置为动态或者静态的方法(dedecms怎么改图片)

    dedecms如何把内容页和栏目页设置为动态或者静态的方法(dedecms怎么改图片)

  • 收入纳税数据是什么意思
  • 印花税的计税方法
  • 加计扣除内容
  • 结转增值税会计凭证
  • 快递收派服务增值税政策
  • 印花税贴花是什么时候取消的
  • 购进材料运输费属于什么会计科目
  • 增值税 附表三
  • 企业改制重组增值税优惠政策
  • 融资担保公司会计建议有哪些要求
  • 印花税没有计提直接付了怎么做账
  • 商品周转天数和周转率
  • 咨询服务费要交税吗
  • 当月有待发货如何退货
  • 企业所得税权责发生
  • 计提城建税计入什么科目
  • 行程单和发票的区别 报销
  • 广告公司营改增账务处理
  • 员工被单位罚款须要问单位要收据吗
  • 注销往来怎么清理
  • 专利年费是不是只能一项一项交
  • 企业所得税减免所得税额怎么算
  • 发票 发票联
  • 增值税纳税申报表怎么填
  • 研发费用领用材料
  • 免税单位无租使用房产怎么缴纳房产税
  • 费用开两次发票怎么入账?
  • 企业拆迁 补偿
  • 在windows7提供了一种什么技术
  • 著作权出售后,属于自己的吗
  • 以前年度应付账款转收入
  • PHP:Memcached::incrementByKey()的用法_Memcached类
  • PHP:Memcached::get()的用法_Memcached类
  • echarts纵坐标加单位
  • PHP:zip_entry_name()的用法_Zip函数
  • 大学网页制作作业dw
  • 银行存款也有窍门
  • 进项税额转出在申报的时候怎么填
  • 分公司需要交所得税吗
  • 咨询服务费怎么交税
  • 工商年报基本养老保险缴费基数
  • python condition条件变量
  • 暂估入库成本处理
  • python的元组有什么用
  • mysql查询一列数据
  • 废料收入是什么会计分录
  • 折旧汇总分配周期参数设定完成可以更改吗
  • 采购成本和销售成本的核算
  • 2021年财政部令68号
  • mysql编程一般步骤
  • 待认证进项税额认证以后怎么做分录
  • 固定资产计提折旧的原则
  • 票据背书转让挂什么科目
  • 合作经营利润分配协议
  • 跨年红字发票账务处理
  • 债券清算原则
  • 营改增的服务
  • 个人往对公账户上存款怎么存
  • mysql同步问题之Slave延迟很大优化方法
  • mysql行锁的作用
  • 完美解决MySQL通过localhost无法连接数据库的问题
  • linux中vi编辑器怎么使用
  • centos7怎么安装图形化界面
  • xp无法正常启动怎么办
  • mac的itunes怎么下载歌曲
  • linux内存耗尽怎么解决
  • vue中使用node
  • 第一章初见第二章决定
  • unity find references in scene
  • 一步步教你用乐高拼个摩托车
  • 详解中国女足出线形势
  • jquery 异步加载
  • 考察后多久公示公务员
  • 物流企业需要缴税吗
  • 就业失业登记证网上申请
  • 深圳电动车怎么注册登记
  • 福建省国家税务局通用定额发票
  • 电子口岸无纸化网上签约流程
  • 提高税务管理水平,降低税务风险
  • 国税和地税归哪里管
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设