- 博客(216)
- 问答 (1)
- 收藏
- 关注
原创 JS例题。
前言:这些都是自己日常收藏的觉得比较复杂一点、题目挺绕的、大家日常容易忽略的小知识点的题目,我看到题目执行结果的时候,上面的表情包形象的表达了我当时的心情,大佬觉得简单就请不要嘲笑小生,请绕道走。
2019-07-25 12:00:20 379 1
原创 使用Lerna搭建业务组件库
Lerna 是一个用来优化托管在 git\npm 上的多 package 代码库的工作流的一个管理工具,可以让你在主项目下管理多个子项目,从而解决了多个包互相依赖,且发布时需要手动维护多个包的问题。
2024-03-19 23:04:27 3624
原创 js和css阻塞问题
- css 加载会不会阻塞 js 的加载?(不会)- css 加载会不会阻塞 js 的执行?(会)- css 加载会不会阻塞 DOM 的解析?(不会)- css 加载会不会阻塞 DOM 的渲染?(会)- js 加载会不会阻塞 DOM 的解析?(会)- js 加载会不会阻塞 DOM 的渲染?(会)- js 执行会不会阻塞 DOM 的解析?(会)- js 执行会不会阻塞 DOM 的渲染?(会)
2024-03-04 18:11:25 570
原创 call | apply bind原生实现
前言apply(thisArg, [])call(thisSrg, arg1,arg2,...)函数作用:改变this的指向函数区别:功能完全一样,接收的参数形式不一样callFunction.prototype.myCall = function(obj){ let args = []; for(let i=1;i<arguments.length;i++){...
2024-02-22 17:23:20 570 1
原创 jwt鉴权,token相关
JWT是什么JWT(JSON Web Token):用来在用户和服务器之间传递安全可靠的信息三部分组成:eader(头部), 声明类型,这里是JWT,声明加密的算法,最后通过Base64编码Payload(数据), 应用层自己带的数据信息。因为该部分是明文的, 所以不可以带敏感信息。 比如可以带 user_id, 但是不可以带 user 的密码等。Signature(签名)HMACSHA256(base64Url(header)+.+base64Url(payload),secretKey)一
2024-02-22 16:49:38 896
原创 websocket
1、客户端发送 http 请求,经过三次握手,建立 TCP连接,在 http 请求里存放 websocket 支持的版本号等信息;4.每条记录都有id 每次请求客户端保留一个最大id 以后每次重连 都需要查询比这个id新的记录就行了。2、服务器接收请求,同样以 http 协议回应;3、连接成功,客户端与服务器建立持久性的连接。
2024-02-01 14:15:16 384
原创 npm和yarn区别
都是包管理工具,但是yarn的出现是为了弥补npmV4(npmV5结合yarn和自身的一些问题做了很大的升级,性能和速度都提高了)及之前版本的一些问题。
2024-02-01 14:14:58 389
原创 JS数据类型和相关问题
一是数值的精度只能到 53 个二进制位(相当于 16 个十进制位),大于这个范围的整数,JavaScript 是无法精确表示,这使得 JavaScript 不适合进行科学和金融方面的精确计算。Symbol.for()不会每次调用就返回一个新的 Symbol 类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值。这个值的语义是,希望表示一个对象被人为的重置为空对象,而非一个变量最原始的状态。这个值的语义是,希望表示一个变量最原始的状态,而非人为操作的结果。是false,类型不同,
2024-02-01 14:14:11 358
原创 隐式类型转换和显式类型转换
在隐式类型转换中,JS 引擎自动地将一种数据类型转换为另一种类型,通常发生在运算或比较的过程中。这种转换是隐式的,开发者不需要明确地进行操作,而是由 JS 引擎在必要的时候自动完成。操作符优先级最高,所以需要先将[]转换为布尔值,再对其进行取反,[]转化为布尔值为true(所有对象都是true),所以!布尔值和对象进行运算需要进行隐式转换,将两边都转化为数字进行比较,左边先转换为字符串’',再转换为数字0,右边false转为数字为0。
2024-02-01 14:13:38 458
原创 服务端渲染
SSR简单来说就是页面上的内容是通过服务端渲染生成的,浏览器直接显示服务端返回的html就可以了。相比之前常用的SPA来说有很多的优点,如下图,但也有一些实际存在的问题,在实际应用中需要多方面权衡利弊。
2024-02-01 11:06:36 316
原创 移动端1px问题
在以前,css的1px就是物理像素1px,但是由于现在手机屏幕变为高清屏幕,屏幕尺寸没变,但是像素点变多了,导致CSS 中的 1px 并不能和移动设备上的 1px 划等号。:window.devicePixelRatio = 设备的物理像素 / CSS像素,意味着css中写的。,实际展示2个物理像素,看起来会粗一点。
2024-01-30 11:42:51 374
原创 position sticky VS positon fixed, width:100% VS width:auto
所以,在开发中尽量还是选择 width:auto ,因为当从边距、填充或边框添加额外空间时,它将尽可能努力保持元素与其父容器的宽度相同。而width:100%将使元素与父容器一样宽。额外的间距将添加到元素的大小,而不考虑父元素。
2024-01-30 11:32:00 351
原创 css选择器优先级
!important: 具有最高优先级内联样式: 内嵌于HTML元素的样式ID选择器: 权重为100类选择器: 权重为10属性选择器: 权重为10伪类选择器: 权重为10 (:first-child、:hover、:disabled)标签选择器: 权重为1伪元素选择器: 权重为1(::before、::after)兄弟选择器: 权重为0子选择器: 权重为0后代选择器: 权重为0通配符选择器: 权重为0
2024-01-30 11:30:02 334
原创 GPU 和 CSS 硬件加速
将需要进行动画的元素提升到一个独立的层(layer),这样就可以避免浏览器进行重新布局(Reflow)和绘制(Repaint),将原先的浏览器使用CPU绘制位图来实现的动画效果转为让GPU使用图层合成(composite)来实现,如果两张图层内部没有发生改变,浏览器就不再进行布局和绘制,直接使用GPU的缓存来绘制每个图层,GPU只负责将各个图层合成来实现动画,这就可以充分利用GPU的资源和优势,减轻CPU的负载,可以使动画更流畅。最好的做法是对那些可能动画的元素设置属性,并在动画结束后就移除这个属性。
2024-01-30 11:29:03 542
原创 vuex一文通
常见问题actions为什么可以处理异步任务,和mations有什么区别当我们修改数据,只能通过mutation修改stateactions里面可以做异步操作,但是并不是直接修改数据,提交的是mutations里面的方法,多个异步任务可以在actions中触发,dispatch(‘xxx’)返回的是一个PromiseMutation 为什么必须是同步函数?如果mutation支持异步操作,就没有办法知道状态是何时更新的,无法很好的进行状态的追踪,给调试带来困难。比如里面是异步任务,那么在
2024-01-30 11:21:38 281
原创 async await原理,和generator, promise这三者的关联和区别是什么?
async await实际上是语法糖,可以通过书写同步代码的方式,执行异步操作,内部实现其实就是通过generator和yield实现。await后面返回的是一个promise对象。
2024-01-30 11:15:19 381
空空如也
以下代码段的执行结果求解释。
2019-07-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人