通过 element-ui 自建 UI 组件库,踩坑记录

element-ui 打包流程源码解析(上) element-ui 源码整体结构,和打包整体流程。 阅读详情

前段时间发的一篇文章 微软365将放弃IE11,你却仍支持IE9?,文章中调研结果显示还有一少部分人还在兼容 IE 浏览器,具体数据可以在本文 微软365将放弃IE11,你却仍支持IE9?末尾查看。

最近遇到一个 IE 兼容问题,分享一下。做了一个新项目,在 IE 浏览器访问不了,直接报“缺少标识符”,通过错误提示,可以定位到具体的文件,但是不能定位到是哪行代码。

这种类型的错误比较常见,凭经验感觉是源代码没有经过 babel 转换,导致某些语法在 IE 浏览器上执行不了。那么就需要确认下报错文件有没有参与 babel 转换,最简单的方法是在你的代码中写入一个箭头函数(如果代码中已有箭头函数,忽略),然后从打包后的文件中查找是不是存在箭头函数,如果存在说明确实没有经过 babel 处理。

我的项目使用的是 webpack 打包,打包后会有一个 index.js 文件,在浏览器直接访问这个 js 文件,可以看到所有的 js 代码。类似下图直接搜索箭头函数 =>:

最终确认是因为,新加的文件夹没有命中打包文件的规则中。解决这个问题后还有一个问题比较坑。

在 4天快速落地团队内部的UI组件库 这篇文章中,有提到过如果快速实现 UI 组件库,在修改 element-ui 为私有 npm 包时,包名换成了 @scope/suyan-pc-ui。举个例子:

在 utils 工具 js 中,有这么一行代码:

执行 npm run dist 打包后,引用路径会发生变化(src 换成了 lib),这样能够保证组件使用的 js 代码是经过编译后的,而不是源码:

问题来了,如果换成私有 npm 包:

这样执行 npm run dist 打包后,引用路径并未发生变化。这样使用组件的时候,引用的代码就是源码,未经过 babel 转换。

遇到这个问题后,我看了 element-ui 的命令 npm run dist 都干了啥,可惜最终也没找到为啥会把 src 换成 lib。无奈之下,我写了一个脚本,把 @scope/suyan-pc-ui/src/xxx 替换成 @scope/suyan-pc-ui/lib/xxx。

这样问题就算解决了,直到写这篇文章的时候,我重新回顾了整个过程,当我执行 npm run build:utils 时,路径也可以正常替换,该命令只是执行了 babel。

"build:utils": "cross-env BABEL_ENV=utils 
babel src --out-dir lib --ignore src/index.js",

最后看了下 .babelrc 这个配置文件,意外发现了:

原来在这里进行了重命名。

把这块改一下:

经过打包,问题完美解决。

通过这次教训,发现还是对 babel 没有进行一个全面的学习,其实是一件非常简单的事情,有经验的人看一下 babel 的配置就能够解决问题。痛定思痛,决定学一周 babel。在公众号内与大家分享。

大家加油!

长按关注

素燕《前端小课》

帮助 10W 人入门并进阶前端

官网:https://lefex.gitee.io/

指南:STM32H7不同DMA控制器(MDMA/DMA2D/BDMA)到底该用哪个? 本文深入解析STM32H7系列芯片的DMA控制器选型策略,涵盖MDMA、DMA2D、BDMA等不同控制器的架构原理与性能对比。通过实际项目案例,提供高速TCM数据搬运、GUI加速、低功耗传输等场景的选型决策树,并分享性能优化与调试技巧,帮助工程师避开常见陷阱,提升系统效率。 阅读详情

相关推荐

基于MATLAB的Hough变换指针式仪表识别

综上所述,本文介绍了如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。通过图像预处理、Hough变换和直线提取,我们可以准确地检测指针的位置,并进一步进行仪表读数。本文将介绍如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。在指针式仪表识别中,我们可以利用Hough变换来检测仪表盘上的指针。以上是基于MATLAB的Hough变换指针式仪表识别的详细步骤和源代码示例。根据指针在仪表盘上的位置,我们可以进行角度计算或使用其他技术来获取准确的读数。

techDM的博客 412

Element UI 组件库分析和二次开发(一)

一、Element UI 组件库二次开发的大致流程 1. 从 Element 官方 clone 一份dev 源码到本地 2.安装依赖:npm i 3.修改组件源码 组件内容在 “packages/组件目录” 里修改。 组件样式在 “packages/theme-chalk/src/组件名.scss” 里修改。 查看效果可以在 “examples/docs/zh-CN/组件名.md” 里增加自己需要调试的代码,就可以在页面的相应的组件的例子中看到自己修改后的效果。 4.如果要上传到 n.....

huangpb的博客 6480

【python毕设】p051基于协同过滤的动漫推荐系统设计与实现_django+hive+spider.zip

项目资源包含:可运行源码+sql文件+文档; python3.7+django+hive+spider+mysql5.7+vue适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。当人们打开系统的网址后,首先看到的就是首页界面。在这里,人们能够看到系统的导航条,通过导航条导航进入各功能展示页面进行操作。在个人中心页面可以对个人中心、修改密码、我的发布、我的收藏等进行详细操作管理员进入主页面,主要功能包括对首页、用户、动漫数据、论坛交流、系统管理、个人中心等进行操作。用户登录系统前台,点击后台管理可以对动漫数据和个人中心进行详细操作。

element-ui 打包流程源码解析——babel 相关

element-ui 打包流程源码解析——babel 相关

qq_40147756的博客 791

Element-UI源码之目录结构

克隆代码 git clone https://github.com/ElemeFE/element.git 慢慢等吧,看运气了 从最新的发布分支上切一个分支出来 git tag 看到所有的发布之后的分支打的tag,v2.13.0是最新的 git checkout v2.13.0 git checkout -b reading 目录结构overview - build项目构建命令的目录 - e...

东逝水 5825

IE11下使用elementUI报错:[Vue warn]: Failed to generate render function: SyntaxError: 缺少标识符 in

IE11下使用elementUI报错: [Vue warn]: Failed to generate render function: SyntaxError: 缺少标识符 in with(this){return _c('div',{attrs:{"id":"app"}},[_c('el-row',{staticStyle:{"line-height":"30px",".... 今天要做一个客户审批的页面,因为客户是个实在人,不会使用别的浏览器,只会用IE,需要打开一个能查看图片的页面,..

weixin_45364599的博客 1467

Element UI 组件库分析和二次开发

buildwebpack相关的打包配置文件examplesElement官网packages组件源码src公共方法和项目入口文件(install方法在这里)test测试文件,使用karma框架types类型声明文件,每个组件的类型声明文件,TS项目使用组件库时有更好的代码提示.babelrcbabel的配置文件忽略eslint的配置文件.eslintrceslint配置文件允许我们指定由git使用的文件和路径的属性.gitignore。......

江湖行骗老中医 1778

element-ui

element-ui 1.使用websocket给前端vuex中传值并将vuex中的值实时渲染到页面表格 在element-ui中提供的表格样式中,默认以:data="tableData"的形式传入表格数据,其中tableData在vue中以data函数的方式return出来,例如: data() { return { tableData: [{...

ligoudan233的博客 3384

Element-ui组件记录

Element-ui组件记录-继续继续记录1.组件交互页面抖动:出现问题:解决方法:2.组件属性:出现问题:问题原因:解决方法:3.组件样式修改:出现问题:问题原因:解决方法:4.select下拉框:出现问题:问题原因:解决方法: 1.组件交互页面抖动: 出现问题: 组件操作时,页面会出现抖动情况,文字会模糊; 解决方法: 1)Checkbox 多选框切换: .el-checkbox__inner::after { transition: none!important; } 2)表单验证信息出

weixin_40400844的博客 1229

Element.ui CDN形式引入组件库

1、通过CDN的形式加载语言文件:【官网提供的】 <!-- 引入样式 --> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <!-- 引入组件库 --> <script src="https://unpkg.com/element-ui/lib/index.js"></script> 而使用官网引入以后响应速度不是很快,后

单枪匹码 2660

element-ui记录

element-ui在同一个页面放置多个table表格可能会出现一个莫名其妙的BUG,比如说表格布局乱了,不同表格内容相互覆盖,可以给el-table标签绑定 :key="Math.random()"解决问题。 key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利...

风雪夜过客的博客 1803

Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、富文本、Markdown,3D组件库,Markdown,AI组件库

Vue组件库,超100个Vue组件库Vue常用的组件库大全【前端工程师必备】【实时更新】【移动端、PC端(web端)、数据可视化组件库(数据大屏) 、动画组件库、文本编辑器,富文本Markdown,3D组件库

程序员猫爪 3万+

Element Plus 组件库实战技巧与记录

本文分享了在Vue 3项目中使用Element Plus组件库的实战经验和技巧。主要内容包括: 安装配置:介绍了Element Plus的基本安装方法,推荐使用按需引入方式减小包体积,并提供了Vite配置示例。 表单组件技巧: 深度验证:展示了el-form的验证规则配置和表单提交处理 动态表单:实现可动态增减表单项的功能 表格组件技巧: 表格排序和筛选:演示了如何实现表格排序和分类筛选 表格分页:简要提及了分页功能的实现 文章采用代码示例为主的方式,提供了可直接使用的模板代码,涵盖了Element Plu

fineday 249

Element-ui记录 DatePicker 日期选择器

记录自己在使用Element-ui的过程中过的 报错信息:[Vue warn]: Error in v-on handler: “TypeError: Cannot read property ‘0’ of null” 在使用DatePicker日期选择器选择日期范围的时候,会用到一个属性clearable。这个属性是Boolean变量,用于决定是否显示清除按钮,默认为true。 <el-date-picker v-model="value" type="daterange"..

weixin_43827743的博客 4396

记录vue3的项目安装element-ui失败报错,解决方案】

目前element-ui只支持Vue2.6以下的版本,如果想在Vue3.0使用这个组件库,就要使用element-plus

辣机小司的博客 4935

element-UI记录

问题复现: 我需要在“单笔调额”这个table里点击”调额“,去刷新”调额审批“的table,不通过第一个table刷新的时候,“调额审批”的table宽度是正常的,如图: 通过第一个table刷新的时候,多了一条数据,“调额审批”的table宽度就缩小了,如图: 我一开始是因为push数据的问题,因为不push的时候是正常的,后来百度看了,是操作第一个table刷新了第二个table的原因...

jinhuifen666的博客 409

element-ui框架搭建

vue-cli脚手架整合完vue+vue-router+vue之后, 安装element-ui框架: npm i element-ui -S 这是项目可能会因一些依赖包的版本问题而报错。 重新执行安装命令即可。 npm install 安装完成 全局配置element-ui到项目 在main.js文件中加入代码: import Element from ‘element-ui’ import ‘element-ui/lib/theme-chalk/index.css’ Vue.use(Element,

weixin_42471170的博客 1112

修改elementUI源码并发布到npm上

一、前言 有时候,我们需要修改elementUI的源码,来达到boss们的要求。但是修改完之后,又不知道如何发布到npm上来安装。那么这一篇文章将介绍如何修改elementUI源码然后发布到npm上。 二、fork一份elementUI源码 首先去到github官网,然后搜索elementUI代码,进去看到该页面,然后点击Fork按钮 fork完之后,记得修改一下项目的名字 接下...

qq_41108402的博客 4244

聊聊项目打包发布到maven私仓常见的几种方式

前言 在早期没有使用maven之前,我们引用一些公有jar或者api jar,我们可能会采用这样的方式,通过手动导入这些jar到项目的classpath路径进行引用。 有了maven后,我们公司内部可能就会搭建maven私仓比如nexus,然后把这些公有jar或者api jar上传到nexus私仓,在pom.xml配置一下这些jar的坐标就可以引用。 今天我们的话题就是来聊聊项目打包发布到maven私仓常见的几种方式 发布到maven私仓的步骤 1.在maven的settings.xml中<

Devin's Blog 701

ElementUI源码系列五 - 学习build-entry.js文件之自动生成总入口文件index.js内容

ElementUI是前端圈子中非常优秀的框架之一,它的源码中有很多技巧是值得我们去参考和学习的,相信读完ElementUI源码一定能让你受益良多。

橙某人 735

Element UI 打包探索【2】

有关于element ui 2.x.x打包命令的探究,喜欢的朋友可以来学习讨论一下

swj的博客 1045
上一篇: 微软365将放弃IE11,你却仍支持IE9?
下一篇: 无需下载,1秒查看GitHub项目源码
lefex
博客等级 码龄7年 401粉丝 361原创
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值