问题或者基础
文章平均质量分 63
xx小黄人
这个作者很懒,什么都没留下…
展开
-
cookie,session,token的区别和作用
1.cookie,session,token的出现的背景很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开原创 2021-11-03 10:57:54 · 523 阅读 · 0 评论 -
Vue中props用法和传值问题
props的基本用法是父组件给子组件传输数据和验证基本用法:1.在父组件中的data中定义值2.在子组件中使用props声明要引用哪个值3.标签中使用4.在template模板中,要使用中划线写法;在script脚本中使用小驼峰props的使用:1.静态props静态即传入的值不变化,直接在父组件中定义,子组件中使用2.动态props动态即传入的值会变化,父组件中要动态地绑定父组件的数据。3.props验证验证传入的props参数的数据规格,如果不符合数据规格则发出警告,注意这个数据原创 2021-10-14 16:26:19 · 36477 阅读 · 3 评论 -
同时发起100个http请求,总共会建立多少个TCP连接
要搞明白这个问题,首先要解决以下问题:1.现代浏览器在与服务器建立了一个TCP连接后,是否会在一个HTTP请求完成之后断开?什么情况下会断开?在HTTP/1.0中,一个服务器在发送完一个HTTP响应后,会断开TCP连接。但是这样每次请求都会重新建立和断开TCP连接,代价过大。所以虽然标准中没有设定,某些服务器对Connection: keep-alive的Header进行了支持。意思是说,完成这个HTTP请求之后,不要断开HTTP请求使用TCP连接。这样的好处是连接可以被重新使用,之后发送HTTP请求原创 2021-10-14 14:37:07 · 4704 阅读 · 0 评论 -
Ajax!!!
什么是ajax!ajax是asynchronous javascript and XML的简写,中文翻译是异步的javascript和XML,可以局部请求网络数据但不刷新页面;然名字中包含XML,但ajax通信与数据格式无关ajax包括以下几步骤:1、创建AJAX对象;2、发出HTTP请求;3、接收服务器传回的数据;4、更新网页数据概括起来,就是一句话,ajax通过原生的XMLHttpRequest对象发出HTTP请求,得到服务器返回的数据后,再进行处理怎么创建ajaxajax技术的核心是XMLH原创 2021-10-09 16:30:24 · 132 阅读 · 0 评论 -
前后端路由,单页面应用以及vue-router两种模式
前后端分离 ===> 利用Ajax,可以在不刷新浏览器的情况下异步数据请求交互。单页应用(只有一个html文件,整个网站的所有内容都在这一个html里,通过js来处理)不仅仅是在页面交互是无刷新的,连页面跳转都是无刷新的。为了实现单页应用 ==> 前后端分离 + 前端路由。(更新视图但不重新请求页面)前端路由实现起来其实也很简单,就是匹配不同的 url 路径,进行解析,加载不同的组件,然后动态的渲染出区域 html 内容。早期的后端路由前端路由单页面应用:单页Web应用(sing原创 2021-09-29 16:45:24 · 907 阅读 · 0 评论 -
vue2的响应式原理
Vue的响应式原理是用Object.definePrototy()的et与get结合观察者模式进行数据劫持;首先了解一下Object.definePrototy()的set与get;在获取对象prototy的时候,会自动调用get方法,在修改时会自动调用set方法VUE给data里所有的属性加上set,get这个过程就叫做Reactive化。观察者模式(发布订阅者模式)观察者模式分为注册环节与发布环节依赖dep类与watch类这个Watcher实际上是连接Vue组件与Dep的桥梁。原创 2021-09-29 14:48:22 · 639 阅读 · 0 评论 -
vue中computed和watch的区别
两者都是监听数据,都是当依赖的数据发生改变时,被依赖的数据就自动发生改变区别:1.computed是监听多个数据,一搬用于计算一些复杂的场景,如购物车计算价格,即多对一,多个数据中的一个改变会引起汇总那个数据的改变;watch是监听一个数据,通过观察一个数据的变化去改变其他数据,如搜索框列表2.computed用于计算,watch用于观察3.computed一定要有return4.computed具有缓存性,当依赖的数据没有发生变化时,就会从缓存中取出数据,所以computed的性能比watch要原创 2021-09-28 15:35:28 · 223 阅读 · 0 评论 -
CSRF攻击
CSRF(跨站请求伪造)攻击CSRF(Cross Site Request Forgery,跨站请求伪造)是一种近年来才逐渐被大众了解的网络攻击方式,又被称为One-Click Attack或Session Riding。攻击原理某用户登录了A网站,认证信息保存在cookie中。当用户访问攻击者创建的B网站时,攻击者通过在B网站发送一个伪造的请求提交到A网站服务器上,让A网站服务器误以为请求来自于自己的网站,于是执行响应的操作,该用户的信息边遭到了篡改.总结起来就是,攻击者利用用户在浏览器中保存的认原创 2021-09-28 11:00:29 · 756 阅读 · 0 评论 -
请求一个URL的优化
当浏览器请求一个URL的时候,通过firebug我们可以发现大概有以下几个过程:阻挡、域名解析、建立连接、发送请求、等待响应、接收数据。后面四个跟用户的网络情况和你的服务器处理速度有关,本文重点说说前两个。1、阻挡:解决方案——提高浏览器并发连接数(并发即同时)阻挡:不同的浏览器对单个域名的最大并发连接数有一定的限制,HTTP/1.0和HTTP/1.1也不相同。比如HTTP/1.1协议下,IE6的并发连接数限制是2个;而在HTTP/1.0下,IE6的并发连接数可以达到4个。在其它浏览器也有类似的限制,原创 2021-09-28 10:59:29 · 162 阅读 · 0 评论 -
==隐式转换
!!关于JavaScript中0、空字符串、'0’是true还是false的总结首先看下面:false == 0 输出true;因为在做判断的时候,两者中有boolean(布尔类型),会把boolean先转化为number(数字类型),false为0,true是1。也就是等价于判断 0 == 0 ,结果为true。‘’ == false 输出为true**;js中空字符串与0相等,也就意味着空字符串等等于false**。‘0’ == false 正确输出为true;这里犯了一个错误认为结果会.原创 2021-09-27 21:36:04 · 685 阅读 · 0 评论 -
Vue生命周期函数的部分理解
1.Vue中ajax放在Created和Mounted的区别放在哪个钩子好?个人见解:!!!一般来说放在Created中就可以了,如果涉及到需要操作DOM节点或者需要页面加载完成的情况才放到Mounted中的this.$nextTick函数中(vue的异步更新)区别(暂时确定是这些,如有求评论!!):1.ssr(服务器端)不支持beforeMount/Mounted等钩子,意思是服务端渲染的话不能放在Mounted。2.Created中无Dom节点误区(不知道对不对):1.放在Created中原创 2021-09-27 11:47:04 · 466 阅读 · 0 评论 -
Vue中异步更新队列
Vue 在更新 DOM 时是异步执行的看下官网介绍:只要侦听到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmediate,如果执行环境不原创 2021-09-15 13:46:41 · 2326 阅读 · 0 评论 -
关于toString的自动调用
首先看一道函数结果alert为6这里涉及到这个toString的自动调用问题!这里log一下add(1)发现打印了字符串形式的tmp函数的函数体,但是类型为函数然后再看这道看结果,注意这个函数的执行顺序:fn(1)函数调用开始,从上到下,先打印了‘第一次’,然后return help,注意!return后面如果为函数体的话,为了输出字符串会自动调用toString方法,也即是会自动执行这里的help.toString()!意思即是就算这个函数里面没有这个help.toString()原创 2021-08-20 13:28:01 · 1252 阅读 · 0 评论 -
jion方法
join() 方法用于把数组中的所有元素转换一个字符串。元素是通过指定的分隔符进行分隔的。原创 2021-08-05 10:06:31 · 98 阅读 · 0 评论 -
插槽的用法
首先要知道,默认情况下是不渲染子组件标签中的内容的,如图:然后插槽就出现了,如果想展示子组件中标签的内容,就需要在子组件中使用插槽。而slot标签出现的位置,就是这些内容出现的位置。有name属性的就是具名插槽,没有name的就是匿名插槽。用法是这样:子组件的模板中使用slot标签,相当于实体;而父**模板中使用slot=“name值”**就是外壳引用了这个实体作用域插槽呢,即在子模板中定义了slot插槽标签,那么它访问到子组件中的值;而插槽是要在父模板中使用的,而用的是父模板的值,确访问不到原创 2021-08-05 10:06:02 · 267 阅读 · 0 评论 -
localStorage存储注意点
/在存储的数据为引用类型数据时,如对象,数据,就要使用json的方法进行存储。如原创 2021-07-30 14:37:39 · 112 阅读 · 0 评论 -
数组的常用方法
数组的常用方法经常用到,下面只给汇总1.push:后面添加一个或者多个元素,返回新长度数组2.pop:删除最后面一个元素,返回删除元素3.unshift:同push4.shift:同pop(shift的中文意思是转移,即删除),返回删除元素5.splice:参数为start和end返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。如果start为负数,那么从尾部开始算起,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(原创 2021-07-30 12:31:40 · 80 阅读 · 0 评论 -
数组的三个高阶方法reduce,fliter,map
首先要明白这个高阶方法都是将函数作为参数或者返回值的函数1.reduce方法语法 这个方法接收两个参数:1)要执行的函数,要执行的函数中也可传入参数,分别为prev:上次调用函数的返回值cur:当前元素index:当前元素cur的索引arr:被遍历的数组2)函数迭代的初始值即一个fn,一个val先看一下如果只传函数不传初始值:打印结果所以可以看出,不传初始值的话,会将数组的第一个元素作为prev初始值,所以迭代了三次传初始值:打印结果prev从5开始计算,可以看到,这原创 2021-07-30 11:48:17 · 154 阅读 · 0 评论 -
js的继承方式
1.原型链继承:重点:让新实例的原型等于父类的实例优点:实例可以继承的属性有:1.实例的构造函数的属性、2.父类构造函数属性、3.父类原型的属性;但是注意:新实例不会继承父类实例的属性缺点:1.新实例无法向父类构造函数传参、2.继承单一、3.所有新实例都会共享父类实例的属性,原型上的属性是共享的,一个实例修改了原型属性,另一个实例的原型属性也会被修改2.构造函数继承重点:用.call()和.apply()将父类构造函数引入子类函数(在子类函数中做了父类函数的自执行(复制))优点:1.只继承了翻译 2021-07-20 15:49:19 · 75 阅读 · 0 评论 -
理解预编译
JS的运动过程:1.语法分析2.预编译3.执行解释语法分析就是JS引擎去检查你的代码是否有错误,解释执行就是执行你的代码。最重要的当然还是预编译:首先要明白函数声明和变量赋值的区别:预编译(函数执行的前一刻):1.创建AO对象(Activation Object)(执行上下文);2.找函数形参和函数内变量声明,将形参名和变量名作为AO对象的属性名,值为undefined;3.将实参值和行参统一,实参值赋给形参;4.在函数体内里面找函数声明,值赋予函数体可以看下面的例子:大概按着这原创 2021-06-30 15:00:21 · 108 阅读 · 0 评论 -
彻底理解prototype和__proto__、constructor
首先看一段代码,定义一个构造函数Parent 和 Child, new一下Child构造函数创造出实例对象child1.然后这里说明实例是个对象,一定要注意prototype:prototype属性也叫原型对象,主要是为了实现继承和共享属性;可以说我们的每一次编程,内在都有原型对象来发挥着作用,如果你没有掌握原型对象的含义,那么你的js还没有真正的入门!这里记住:对象分为函数对象与普通对象;除函数对象之外的对象全部是普通对象!只有函数对象才具有prototype属性!;而系统内置的函数对转载 2021-06-24 18:07:33 · 219 阅读 · 0 评论 -
js中的堆栈内存和闭包理解
要理解堆栈,先理解js的数据类型:1.基本类型(也叫值类型):number,string,boolean,null,undefined2.引用类型:object,function3.特殊类型:symbol熟悉了基本类型和引用类型后来看看什么叫栈内存吧!栈内存stack:1.提供一个供js执行的环境(js都是在栈中执行的)2.存储js的基本数据类型,由于基本数据类型比较简单,所以都是直接在栈内存中开辟一个位置存储的。=> 当栈内存被销毁,存储的那些基本值也跟着销毁了堆内存heap:1原创 2021-06-24 09:00:03 · 451 阅读 · 0 评论 -
闭包的经典面试题之一
闭包的经典面试题之一首先,上题目:问打印结果是什么?结果为:要做这道题,首先要理解以下概念:1.js的执行机制:单线程执行,也就是所谓的stack(栈).2.作用域链:可以看作一个集合,即当前作用域及父级的作用域的集合。可以看下图一个函数的执行过程:首先进行全局执行上下文,执行完毕后,根据上下文存在的books函数,就去执行books的执行上下文,再然后是匿名函数的上下文在这里还需要再了解一下执行机制,由于js是单线程执行机制,在执行上下文的时候,若是出现了一个方法中的事情很多,每次都需原创 2021-06-22 20:26:46 · 268 阅读 · 0 评论 -
关于第一次刷新页面会有1s延迟问题解决##js
关于第一次刷新页面会有1s延迟问题解决要解决这个问题,只需将执行条件封装成一个函数,在点击后立刻执行一次函数,然后定时器setInterval再调用函数即可,如图!以下是有一些基础不稳定的(就是我自己)犯的易错点:1.setInterval / setTimeout (回调函数,延迟时间)中的回调函数可以直接写函数,或者函数名,或者采用字符串’函数名()'的形式!第一篇文章,以后好好加油,希望这篇文章能对大家有用,完毕!...原创 2021-04-20 00:17:10 · 397 阅读 · 0 评论