
react
杨周龙
这个作者很懒,什么都没留下…
展开
-
关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码
最近对公司的项目引入了 nanoid 替换 uuid 的使用。但是在sentry日志中发现Unexpected token =>的错误。立马查看编译后bunld发现 nanoid 箭头函数没有被转换。所以对此记录一下原因和解决办法。报错的原因1.nanoid 源码是没有经过babel转换的。查看nanoid的源码,发现依赖包的代码没有经过babel处理输出的,package.json中直接指向了ES6的源码。2.使用了.babelrc 所以没有对node_modules中依赖进行Babel.原创 2021-08-11 21:33:32 · 2327 阅读 · 0 评论 -
解析 react、vue等路由参数的库 path-to-regexp
React-router的路由系统内部中使用的是 path-to-regexp 解析匹配路由参数。具体用法如下const { pathToRegexp } = require("path-to-regexp")const regexp = pathToRegexp("/:foo/:bar");// keys = [{ name: 'foo', prefix: '/', ... }, { name: 'bar', prefix: '/', ... }] regexp.exec("/test/.原创 2021-04-25 14:08:01 · 507 阅读 · 0 评论 -
关于微信浏览器H5 React,Vue工程化项目input无法自动聚焦疑难杂症排查
前言最近使用React开发微信H5搜索框自动聚焦功能,发现路由跳转页面后无法自动聚焦。尝试了各种方法均不生效…后来发型是异步加载组件问题,个人估计是微信浏览器在异步组件加载完成后导致节点失焦。尝试过的解决方法input 属性 autofocus —— 不生效ref保存组件处罚 ref.curren.focus() —— 不生效解决方案完整查看了路由注册引入组件的方式,个人认为是异步加载组件的原因。尝试修改为同步引入组件。yes!成功。具体原因需深入调查,先记录以下踩坑原路由注册方式 (异原创 2021-03-31 20:50:52 · 598 阅读 · 0 评论 -
前端性能优化篇——浏览器http同域名并发请求对限制
在浏览器同域名并发请求都产生并发数限制,并发限制通常是4~8以内。那么我们将来了解浏览器请求并发限制的原因和优化手段。浏览器并发数量统计浏览器为什么要请求并发数限制?在了解优化手段之前我们先了解浏览器限制并发请求的原因1.对操作系统端口资源考虑PC总端口数为65536,那么一个TCP(http也是tcp)链接就占用一个端口。操作系统通常会对总端口一半开放对外请求,以防端口数量不被迅速消耗殆尽。2.过多并发导致频繁切换产生性能问题一个线程对应处理一个http请求,那么如果并发数量巨大的话.原创 2021-02-02 23:00:56 · 4256 阅读 · 0 评论 -
javascript 对象比较是否属于同一类型对象。
js属于动态类型语言,那么我们如何判断 A实例是否和 b对象实例属于同一类型呢?比如 array === array ,Error === Error,自定义类的实例比较 等等对象类型判断。如果只用 typeof 肯定是不行的。因为不管 array 还是 object、error、或自定义实例类型都是返回 object 。其实我们可以通过对象实例都原型比较是否属于同一个对象类型。Object.getPrototypeOf(obj)方法返回指定对象的原型(内部[[Prototype]]属性的值)。所以.原创 2020-12-21 14:59:30 · 1093 阅读 · 0 评论 -
冻结和只读取当前对象的属性,不读取对象原型的属性
Object.entries(obj)Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。const object1 = { a: 'somestring', b: 42};for (const [key, value] of Object.entries(object1)) { console.log(`${key}: ${value}`);原创 2020-12-18 10:53:53 · 159 阅读 · 0 评论 -
关于 create-react-app 自定义 eslint文件配置解决方案
create-react-app项目自定义eslitn配置方式方案一 eject 项目webpack配置进行自定义这个方案比较low,不建议使用。这里不讲解了。方案二 在package.json 中的 script 命令 添加环境变量EXTEND_ESLINT=treu 开启自定义eslint我们可以打开react-script 源码看到 webpack.config.js 文件当环境变量设定为true时候,react-script会认为我们自定义eslint配置,不启用 ...原创 2020-12-04 20:59:46 · 5538 阅读 · 3 评论