链接总结

172 阅读6分钟

这些是我在了解相关知识点的时候收集到的文章,个人通过这些文章加深很多之前的理解,就当是记录啦

链接总结
keep alive(vue组件)不希望组件被重新渲染影响使用体验;或者处于性能考虑,避免多次重复渲染降低性能。而是希望组件可以缓存下来,维持当前的状态。这时候就可以用到keep-alive组件
HTTP的Keep-AliveHTTP协议的Keep-Alive意图在于短时间内连接复用,希望可以短时间内在同一个连接上进行多次请求/响应
路由守卫点击跳转页面路由执行顺序:beforeRouterLeave-->beforeEach-->beforeEnter-->beforeRouteEnter-->beforeResolve-->afterEach-->beforeCreate-->created-->beforeMount-->mounted-->beforeRouteEnter的next的回调
(vue)h函数h函数就是vue中的createElement方法,这个函数作用就是创建虚拟dom,追踪dom变化的.createElment函数接受三个参数:标签名,标签的属性,标签包裹的内容。 现在Vue通过 vue-loader 转为 h 形式创建虚拟DOM
React.createElement() React.createElement()创建虚拟dom,追踪dom变化的.现在在React里创建虚拟 DOM 的方法是通过 babel 转为 createElement 形式 ,和原生DOM的写法没有太大的区别
DOM diff Tree diff:1.将新旧两棵树逐层对比,找出哪些节点需要更新2.如果节点是组件就看 Component diff。3.如果节点是标签就看Element diff。Component diff:1.如果节点是组件,就先看组件类型。2.类型不同直接替换(删除旧的)。3.类型相同则只更新属性。4.然后深入组件做 Tree diff(递归)。Element diff:1.如果节点是原生标签,则看标签名。2.标签名不同直接替换,相同则只更新属性。3.然后进入标签后代做 Tree diff(递归)
get/post区别GET的语义是请求获取指定的资源。GET方法是安全、幂等、可缓存的(除非有 Cache-ControlHeader的约束),GET方法的报文主体没有任何语义。POST的语义是根据请求负荷(报文主体)对指定的资源做出处理,具体的处理方式视资源类型而不同。POST不安全,不幂等,(大部分实现)不可缓存。为了针对其不可缓存性,有一系列的方法来进行优化,以后有机会再研究(FLAG已经立起)
ECMAScript 6 入门
原型继承(函数继承一)在js中,继承的主要思路就是利用原型链,原型链的原理是:让一个引用类型继承另一个引用类型的属性和方法,1.原型对象通过constructor属性指向构造函数2.实例通过[Prototype]属性指向原型对象
原型继承(函数继承二)1.借用构造函数继承 2.组合继承 3.寄生式继承
ES6 Promise用法小结Promise 是异步编程的一种解决方案,其实是一个构造函数,自己身上有all、reject、resolve这几个方法,原型上有then、catch等方法。
async/await 和 promise 的执行顺序1.带 async 关键字的函数,它使得你的函数的返回值必定是 promise 对象,2.await等的是右侧「表达式」的结果,右侧如果是函数,那么函数的return值就是「表达式的结果」await 等到之后,等到之后,对于await来说,分2个情况 <1>.不是promise对象 <2>.是promise对象 (向下看)
async/await 和 promise 的执行顺序1.如果不是 promise , await会阻塞后面的代码,先执行async外面的同步代码,同步代码执行完,再回到async内部,把这个非promise的东西,作为 await表达式的结果 2.如果它等到的是一个 promise 对象,await 也会暂停async后面的代码,先执行async外面的同步代码,等着 Promise 对象 fulfilled,然后把 resolve 的参数作为 await 表达式的运算结果
浏览器缓存机制浏览器缓存其实就是浏览器保存通过HTTP获取的所有资源,是浏览器将网络资源存储在本地的一种行为。
算法网站
HTTP 状态码* 2xx 表示成功 * 3xx 表示需要进一步操作 * 4xx 表示浏览器方面出错 *5xx 表示服务器方面出错
Object.assign方法用于对象的合并
Object.defineproperty详解Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象 。bject.defineProperty(obj, prop, descriptor) 。参数说明: obj:目标对象。prop:需定义或修改的属性的名字。descriptor:目标属性所拥有的特性
纯函数简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数
深拷贝1.递归复制所有层级属性。2、JSON对象的parse和stringify。3.JQ里面的extend方法:$.extend([deep],target,object1)
JSONP(跨域)某些浏览器不支持CORS,只能用JSONP进行跨域,于是我们请求对方的JS文件,JS文件会执行一个回调,回调里面就有我们的数据,回调名字是可以随机生成的随机数,以callback的方式传给后台,后台会把函数返回给我们并执行
CORS(跨源资源共享)Access-Control-Allow-Origin响应头,并指明可以共享数据的域而Access-Control-Allow-Origin 响应头的值,可以设置为“*” (星号),表示可以与任意域进行数据共享
闭包闭包:「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。闭包作用: 闭包常常用来「间接访问一个变量」。换句话说,「隐藏一个变量」
立即执行函数立即执行函数声明一个匿名函数,马上调用这个匿名函数。立即执行函数作用:创建一个独立的作用域。这个作用域里面的变量,外面访问不到(即避免「变量污染」)
JavaScript中call()、apply()、bind()的区别1.call()、apply()、bind()是用来改变this的指向的。2.如果你要传递的参数不多,则可以使用fn.call(thisObj, arg1, arg2 ...) 。3.如果你要传递的参数很多,则可以用数组将参数整理好调用fn.apply(thisObj, [arg1, arg2 ...]) 。 4.如果你想生成一个新的函数长期绑定某个函数给某个对象使用,则可以使用bind(bind不会立即调用,而是返回一个新函数,称为绑定函数,其内的this指向为创建它时传入bind的第一个参数,而传入bind的第二个及以后的参数作为原函数的参数来调用原函数。)