
前端
程序媛Lisa
这个作者很懒,什么都没留下…
展开
-
替换函数this指向的三种方式
3、bind: 函数.bind(this对象,参数,参数...) 延迟触发,返回绑定this的新对象;2、apply: 函数.apply(this对象,[参数,参数...]) 立即触发;1、call:函数.call(this对象,参数,参数...) 立即触发;原创 2024-05-08 09:41:38 · 272 阅读 · 0 评论 -
Vue组件间的通信
Vue提供的两个钩子,适用于父子/祖孙之间的通信,层次很深的情况下可以用这种方法,provide发送数据,inject接收数据。1.父给子传参(父:自定义属性传递变量,子:用Props['父元素自定义属性']接受),ref/refs父子传参。2.子给父传参(子:this.$emit(父元素自定义事件,传递的值) 父:自定义事件用参数去接收传递来 的值)③发送数据的一方,通过vm.$emit(“事件名”,传递的数据)触发事件,将数据传递。前者可以访问父组件的实例,后者可以访问子组件的实例。原创 2024-04-16 09:23:42 · 234 阅读 · 0 评论 -
JavaScript作用域链
当函数在使用一个变量时,会先在当前作用域查找,如果没有的话,会向上级作用域进行查找,直至找到或者返回undefined。作用域链--由多级作用域串联形成的链式结构。作用域---当前的执行上下文。原创 2024-04-15 11:52:17 · 136 阅读 · 0 评论 -
new做了什么
实例对象._proto_=构造函数.prototype。创建实例对象,并将函数的this指向该实例对象。原创 2024-04-15 11:51:04 · 98 阅读 · 0 评论 -
JavaScript原型链
访问一个对象的属性或方法时,会先在对象自身查找,没有的话沿着_proto_这条链向上查找,直到找到或者返回null。js中所有对象包含一个_proto_内部属性,它所对应的就是该对象的原型。原创 2024-04-15 11:50:20 · 127 阅读 · 0 评论 -
sit和uat测试区别
系统集成测试,和软件一般的模块集成测试差不多,但用户参与的机会很少,主要是由公司内部进行,SIT测试领域涉及电子产品、灯具、无线射频、音像设备、对讲机等产品。此外,SIT通态电阻较大,使得通态损耗也大,因而SIT还未在大多数电力电子设备中得到广泛应用。终端用户集成测试,主要是要求用户参与进测试流程,并得到用户对软件的认可,鼓励用户自己进行测试设计和进行破坏性测试,充分暴露系统的设计和功能问题,显然用户的认可和破坏性测试是难点。因为测试人员并不了解用户用什么手段和思维模式进行测试。原创 2024-04-15 11:15:29 · 879 阅读 · 0 评论 -
ES6转ES5的配置
"useBuiltIns": "usage" //这个的含义是引入的@babel/polyfill按需加载,只使用项目中需要转为es5的部分,减少项目大小。5)、成功,如果是编写插件,不影响全局代码,就应该使用@babel/plugin-transform-runtime,.babelrc配置如下。"corejs": 2, //一般使用2。2)、项目根目录webpack.config.js中配置rules。4)、在main.js中引入@babel/polyfill。1)、安装babel。原创 2024-04-15 11:06:28 · 515 阅读 · 0 评论 -
Cookie、Session和Token
1、虽然session保存在服务器,但它还是需要客户端浏览器的支持,因为session需要使用cookie作为识别标志。cookie的生存时间是长久有效的:手动将cookie保存在客户端的硬盘中,浏览器关闭的话,cookie页不会清除;4、隐私策略不同:cookie是对客户端是可见的,可以分析存放在本地的cookie并进去cookie欺骗;session存储在服务器上,对于客户端是透明的,不存在敏感信息泄露的风险。加入并发访问的用户太多,会产生很多的session,对服务器是一个很大的负担,耗费大量内存。原创 2024-04-15 11:03:36 · 530 阅读 · 0 评论 -
事件修饰符
self:只在event.target是当前元素自身时触发处理函数。.passive:事件的默认行为将立即触发。.prevent:阻止默认事件行为。.capture:捕获事件冒泡。.native:监听子组件行为。.once:事件只触发一次。.stop:阻止事件冒泡。原创 2024-04-15 10:59:14 · 122 阅读 · 0 评论 -
数组去重的方法
方法5:原始for循环加splice,此时数组长度减1。方法1:双层for循环加push,添加到新数组。) {//遍历出新数组中没有的元素并且添加进去。方法3:数组的forEach加indexOf。//过滤出来第一次出现的元素。方法2:数组的filter方法。方法4:用Set方法去重。方法6:includes。原创 2024-04-15 10:56:57 · 590 阅读 · 0 评论 -
检测对象是否有某属性
属性名’ in 对象 true->存在 false->不存在。对象.属性名===undefined true->不存在 false->存在。对象.hasOwnProperty(‘属性名’) true->存在 false->不存在。原创 2024-04-15 10:56:05 · 95 阅读 · 0 评论 -
浏览器兼容怎么做
设置文档和资源的字符集。确保在HTML文件的部分设置正确的字符编码,以避免字符显示问题。使用媒体查询和弹性布局来创建响应式设计,确保网站在不同尺寸的屏幕上都能良好展示。浏览器兼容是为了确保网站或者web应用程序在不同的浏览器和设备上都能正常工作。使用特性查询和条件加载。根据浏览器的特性来决定是否加载某些脚本或者样式。原创 2024-04-15 10:51:57 · 267 阅读 · 0 评论 -
前端性能优化
13. **JavaScript性能**:避免昂贵的操作,如大量的DOM操作和复杂的计算,使用节流(throttling)和防抖(debouncing)技术优化事件处理。性能优化是一个持续的过程,需要不断地评估、测试和调整。6. **异步加载和延迟执行**:通过异步加载和动态导入(如使用`async`和`defer`属性)来优化脚本的加载和执行,减少页面渲染的阻塞。4. **图片优化**:采用适合的图片格式(如WebP或AVIF),提供正确尺寸的图片,并使用图片懒加载技术,只在图片进入可视区域时加载。原创 2024-04-15 10:42:25 · 324 阅读 · 0 评论 -
简述react中state和props方法及区别
state主要用于组件更新控制,如果想要重新渲染或者更新组件,只需要修改state的值,再根据修改的state的值重新渲染用户界面。props主要用于组件间参数的传递,获取组件的属性值,数据单向流动,从父级向子集传递,外界无法直接修改属性值,它是只读的;原创 2024-04-15 10:37:49 · 128 阅读 · 0 评论 -
react中声明类的两种方法及这两种方法的区别
类式声明:类式组件又叫有状态组件,是一个cass类,可以定义state,有继承,可以通过this来接收属性和状态,如果需要通过生命周期来对数据进行增删改查操作,一般使用类式声明。函数式组件又叫无状态组件,不能定义state,没有继承,没有生命周期,它的动态数据通过父组件向子组件流动,子组件通过props来接收,一般一些简单的逻辑判断会使用无状态组件;函数式声明和class类式声明。原创 2024-04-15 10:36:02 · 181 阅读 · 0 评论 -
浏览器输入一个URL后发生了什么
DNS对域名进行解析; 建立TCP连接(三次握手); 发送http请求; 服务器处理请求; 返回响应结果; 关闭TCP连接(四次挥手); 浏览器解析HTML; 浏览器布局渲染。原创 2024-04-15 10:33:43 · 184 阅读 · 0 评论 -
React和vue框架的diff算法的比较
都是忽略跨级比较,只做同级的比较;Vue diff时会调用patch方法,参数为vnode和oldVnode,分别代表新旧参数; Vue 对比节点,当节点元素相同,只是className不同,Vue会认为是不同节点,删除重建;而react则认为是相同节点元素,只是更新节点属性; Vue的列表对比,采用从两端到中间的方式,而react则采用从左到右依次对比;当集合中最后一个节点移动到第一位时,react会把前面的节点依次移动,而Vue只会就把最后一个移动到第一个。原创 2024-04-15 10:32:49 · 186 阅读 · 0 评论 -
call,apply,bind区别
Bind:延时触发,把函数触发时的this对象和参数都规定好,会返回一个新的函数,不会马上触发函数,通过函数名()来触发。Apply:同call,差异是参数用数组储存;目的是把原本需要一个一个传递参数的函数,改成接受数组类型的参数。Call:把函数临时放在对象中,立即执行函数;目的是让函数的this指向这个对象。原创 2024-04-11 14:56:10 · 108 阅读 · 0 评论 -
v-if和v-show
(因为懒加载,初始为 false 时,不会渲染,但是因为它是通过添加和删除 dom元素来控制显示和隐藏的,因此初始渲染开销较小,切换开销比较大)。v-show 其实就是在控制 css ,v-if 切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件。(无论 true 或者 false 初始都会进行渲染,此后通过 css 来控制显示隐藏,因此切换开销比较小,初始开销较大),v-show 都会编译,初始值为 false,只是将 display 设为 none,但它也编译了;原创 2024-04-11 14:52:39 · 217 阅读 · 0 评论 -
methods、watch和computed的区别
watch:用来监听属性的变化,当值发生变化的时候来执行特定的函数,watch监听属性的时候会有2个参数newVal和oldVal,一个新值一个旧值;computed:计算属性,对数据进行处理并返回新的值,调用时不需要括号,依赖缓存,一旦数据发生改变则触发。methods:普通的函数方法,执行的时候需要事件的触发;原创 2024-04-11 14:50:07 · 120 阅读 · 0 评论 -
Canvas和SVG的区别
4、canvas应用方向,网页特效与小游戏,svg创建统计图与地图应用;3、canvas可以只能将事件绑定在画布上,svg可以将事件绑定在任意元素上;2、canvas通过js程序指令创建图形,svg通过XML创建图形;1、canvas绘制2d位图,svg绘制2d 矢量图;3、canvas依赖分辨率,svg不依赖分辨率;原创 2024-04-11 14:29:14 · 150 阅读 · 0 评论 -
Cookies、sessionstorge、localstorge的区别
cookies是为了标识用户身份而存储在用户本地终端上的数据,始终在同源http请求中携带,即cookies在浏览器和服务器间来回传递,而sessionstorage和localstorage不会自动把数据发给服务器,仅在本地保存。localstorage始终有效,窗口和浏览器关闭也一直保存,用作长久数据保存。sessionstorage不在不同的浏览器共享,即使同一页面。cookie保存的数据很小,不能超过4k,而sessionstorage和localstorage保存的数据大,可达到5M。原创 2024-04-11 14:16:36 · 251 阅读 · 0 评论 -
Vuex的核心属性
Mudules:拆分模块,大型项目会用到,当状态比较多时,store就会比较臃肿,这个时候,vuex允许我们将store分割成模块。每个模块中拥有自己的state,mutations,getters,actions.action提交的是mutation,不能直接变更状态,action可以包含任意异步操作。Mutations:存储修改state值的方法,只能是同步函数,commit触发。Getters:计算属性,对state中的值进行操作,并返回新的值。State:存储共享的值。dispatch触发。原创 2024-04-11 14:08:23 · 164 阅读 · 0 评论 -
Vue的生命周期
组件数据更新之前调用,此时页面中显示的数据还是旧的,data是最新的,页面尚未与最新的数据保持同步。组件销毁前调用,vue实例从运行阶段进入到销毁阶段,这时vue实例身上所有都可用。组件实例被创建之初,data和methods中的数据还没有初始化。组件更新后,页面和data数据已经保持同步,都是最新的。指令解析完毕,内存中生成dom树,但尚未挂载到页面中。组件销毁后调用,vue实例上所有都不可以再用了。:keep-alive专属,组件被销毁时调用。,dom渲染完毕,页面和内存的数据已经同步。原创 2024-04-11 13:59:39 · 149 阅读 · 0 评论 -
水平垂直居中的方法
父元素相对定位,子元素移动自身的50%,再设置子元素的margin-top和margin-left为负的自身宽高的一半,这种方法需要知道子元素的宽高;和上一种方法基本一样,只是将margin负值改为transform:translate(-50%,-50%),不需要知道子元素的宽高;top、right、bottom、left都为0,然后margin:auto。1、定位+margin:auto。2、定位+margin:负值。3、定位+transform。5、flex弹性布局。6、grid网格布局。原创 2024-04-11 13:39:11 · 139 阅读 · 0 评论 -
防抖和节流
节流:控制流量,单位时间内事件只能被触发一次,与服务器端的限流类似,代码实现重在开锁和关锁timer=timeout,timer=null。防抖:防止抖动,单位时间内事件多次触发会被重置,防止事件被多次误触发。代码实现重在清零,也就是clearTimeout。原创 2024-04-11 13:28:36 · 128 阅读 · 0 评论 -
link和@import的区别
1、从属关系的区别。@import是CSS提供的语法规则,只有导入样式表的作用;link是HTML标签,不仅可以加载CSS文件,还可以定义RSS、rel连接属性等;3、DOM可控性区别。可以通过js操作DOM,插入link标签来改变样式;由于DOM方法是基于文档的,无法通过@import的方式插入样式。加载页面时,link引入的CSS被同时加载,而@import加载的CSS文件将在页面加载完毕之后再进行加载;原创 2024-04-11 13:23:56 · 144 阅读 · 0 评论 -
重排和重绘
也有称回流,当渲染树节点发生改变,影响了节点的几何属性(如宽、高、内边距、外边距、或是float、position、display:none;譬如某个div标签节点的背景颜色、字体颜色等等发生改变,但是该div标签节点的宽、高、内外边距并不发生变化,此时触发浏览器重绘(repaint)。2、元素位置改变——display、float、position、overflow等等;4、内容改变——比如文本改变或者图片大小改变而引起的计算值宽度和高度改变;3、元素尺寸改变——边距、填充、边框、宽度和高度。原创 2024-04-11 13:14:30 · 187 阅读 · 0 评论 -
浏览器渲染页面的过程
1、根据html文件构建DOM树和CSSOM树。构建的过程中如果遇到js文件阻塞DOM树及CSSOM树的构建,则优先加载js文件,加载完毕,再继续构建DOM树和CSSOM树;3、页面的重绘(repaint)和重排(reflow,也叫回流),页面渲染完成后,若js操作了DOM节点,根据js对DOM的操作,浏览器对页面进行重绘或者重排。2、构建渲染树(Render Tree);原创 2024-04-11 12:14:26 · 99 阅读 · 0 评论 -
深拷贝和浅拷贝
浅拷贝:对于基础类型的数据,进行值的拷贝;如果是引用类型的数据,只进行地址值的拷贝,也就是指向同一个地址值。那么修改其中任何一个对象的属性,其他对象的属性也会被修改掉。深拷贝:对于基础类型的数据,还是进行值的拷贝;如果是引用类型的话,是对其中具体数据进行拷贝,不再只是地址值的拷贝。原创 2024-04-11 12:07:57 · 465 阅读 · 0 评论 -
Vue2和Vue3的区别
Vue2利用defineproperty为每个对象的属性添加监听器,当属性发生变化的时候,自动更新对应的DOM元素。Vue2 是按照功能进行划分,如data存储数据,method存储方法,computed存储计算属性。Vue3使用proxy代理技术,代替之前的define方式,代理对象data的所有修改工作。Vue3按照业务进行划分,例如完成网络请求的相关功能放一起。③可以监听数组,vue3可以检测到数组内部数据的变化。③Vue2的跟元素只能有一个,Vue3随意。⑤Vue3中的vuex中没有this了。原创 2024-04-11 12:02:08 · 335 阅读 · 0 评论