Skip to content

Latest commit

 

History

History
151 lines (141 loc) · 5.27 KB

知识体系.md

File metadata and controls

151 lines (141 loc) · 5.27 KB

知识体系

  1. ES6
    1.1 模块化的使用与编译环境
        1.11 ES6模块化如何使用,开发环境如何打包    
          ·语法 : import export (注意有无 default)   
          ·环境 : babel编译ES6语法,模块化可用webpack和rollup   
    1.2 Class与JS普通构造函数的区别
    · js构造函数
    function MathHandle(x,y){
        this.x = x;
        this.y = y;
    }
    MathHandle.prototype.add = function () {
        return this.x + this.y;
    }
    var m = new MathHandle(1,2);
    console.log(m.add())
    · Class基本语法
         class MathHandle {
             constructor(x,y) {
                 this.x = x;
                 this.y = y;
             }
             
             add() {
                 return this.x + this.y;
             }
         }
         const m = new MathHandle(1,2);
         console.log(m.add())
    · 语法糖
         class MathHandle{
             //...
         }
         type of MathHandle // "function"
         MathHandle  === MathHandle.prototype.constructor  //true
         m.__proto__ === MathHandle.prototype   //true
    · 继承
      //动物
     function Animal() {
        this.eat = function () {
           console.log('animal eat')
        }
     }
      //狗
     function Dog() {
         this.bark = function () {
            console.log('dog bark')
         }
     }
     Dog.prototype = new Animal();
      //哈士奇
     var hashiqi = new Dog();
     class Animal {
         construtor(name) {
            this.name = name;
         }
         eat () {
            console.log(` ${this.name} eat `)
         }
     }
     class Dog extends Animal {
          construtor(name) {
              super(name)      //!!super()
              this.name = name
          }
          say () {
             cnosole.log(`${this.name} say`)
          }
     }
      const dog = new Dog('哈士奇');
     dog.say();
     dog.eat()
1.3 Promise的用法  
1.4 ES6其他常用功能  
  1. 异步
    1.1 什么是单线程,与异步的关系
    1.2 什么是event-loop
    1.3 目前js解决异步的方案
    1.4 jquery如何解决异步
    1.5 Promise的标准
    1.6 async/await的使用

  2. 原型
    3.1 原型如何实际应用
    3.2 原型如何满足扩展

  3. vdom
    4.1 什么是vdom,为何要用vdom
    4.2 vdom如何使用,核心函数有哪些
    4.3 diff算法

  4. mvvm
    5.1 jquery和vue或React区别
    5.2 如何理解MVVM
    5.3 vue如何实现响应式
    5.4 vue如何解析模板
    5.5 介绍vue的实现流程

  5. 组件化
    6.1 对组件化的理解
    6.2 JSX是什么
    6.3 JSX和vdom的关系
    6.4 简述React的setState
    6.5 比较React与vue

  6. hybrid
    7.1 hybrid是什么,为何要用hybrid
    7.2 hybrid如何更新上线
    7.3 hybrid和h5的区别
    7.4 Js如何与客户端通信

  7. http
       8.1 缓存
          HTTP缓存有多种规则,根据是否需要重新向服务器发起请求来分类,可以将其分为两大类(强制缓存,对比缓存)
          8.11 强制缓存

      ```

   强制缓存,在缓存数据未失效的情况下,可以直接使用缓存数据,那么浏览器是如何判断缓存数据是否失效呢?
   我们知道,在没有缓存数据的时候,浏览器向服务器请求数据时,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应header中。

   对于强制缓存来说,响应header中会有两个字段来标明失效规则(Expires/Cache-Control)
   使用chrome的开发者工具,可以很明显的看到对于强制缓存生效时,网络请求的情况
   
   Expires
   Expires的值为服务端返回的到期时间,即下一次请求时,请求时间小于服务端返回的到期时间,直接使用缓存数据。
   不过Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1,所以它的作用基本忽略。
   另一个问题是,到期时间是由服务端生成的,但是客户端时间可能跟服务端时间有误差,这就会导致缓存命中的误差。
   所以HTTP 1.1 的版本,使用Cache-Control替代。
   
   Cache-Control
   Cache-Control 是最重要的规则。常见的取值有private、public、no-cache、max-age,no-store,默认为private。
   private:             客户端可以缓存
   public:              客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的)
   max-age=xxx:   缓存的内容将在 xxx 秒后失效
   no-cache:          需要使用对比缓存来验证缓存数据(后面介绍)
   no-store:           所有内容都不会缓存,强制缓存,对比缓存都不会触发(对于前端开发来说,缓存越多越好,so...基本上和它说886)
   
   ```
   8.12 对比缓存  

   8.2 如何做开源