这些是我在了解相关知识点的时候收集到的文章,个人通过这些文章加深很多之前的理解,就当是记录啦
| 链接 | 总结 |
|---|---|
| keep alive(vue组件) | 不希望组件被重新渲染影响使用体验;或者处于性能考虑,避免多次重复渲染降低性能。而是希望组件可以缓存下来,维持当前的状态。这时候就可以用到keep-alive组件 |
| HTTP的Keep-Alive | HTTP协议的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的第二个及以后的参数作为原函数的参数来调用原函数。) |