可能是全x最好的vue教程

Vue响应式原理

为什么不支持IE8

其实是依赖**Object.defineProperty()**,进行数据挟持的,而这个api在IE8下仅仅支持Dom对象不支持原生对象,所以Vue2.x是不支持IE8及以下的浏览器。

Object.defineProperty(object, propertyname, descriptor )

此函数有3个参数,均是必传的参数。这个函数的特性其实很像c#的属性,有c#基础的理解起来应该很容易。

  • object:需要设置的对象

  • propertyname:需要设置的属性名(对象的键名)

  • descriptor:描述符,一个对象,用于设置属性的特性。

    {
        value:undefined, // 表示此属性的值。
        writable:false, // 决定此属性是否可写
        configurable:true, 
            /*
            决定此属性是否可配置,
            如果为false则writable, configurable, enumerable这些属性的设置都将无效.
            即使重新调用defineProperty函数也无效。
            特别指出 试图修改configurable的值会抛出异常。
            */
        enumerable:false, // 是否可枚举
        get:undefined, // 函数,当取值时执行
        set:undefined, // 函数,当设置值时执行
    }
    
    // 此demo示范get和set的作用,其他的属性自行尝试。
    const setName = function (newValue) {
        console.log('新的值', newValue)
    }
    
    const getName = function () {
        console.log('取值啦')
    }
    
    var demo = {
        name: '初始值'
    }
    
    Object.defineProperty(demo, 'name', {
        set: setName,
        get: getName
    })
    
    demo.name = '初始值2'
    // -> 新的值 初始值2
    let name = demo.name
    // -> 取值啦
    

Vue-cli3.0一些变动

  • 集成sass/scss只需要 yarn add sass-loader node-sass
  • 设置scss全局函数要在vue.config.js里添加
module.exports = {
  // ...
  css: {
    loaderOptions: {
      sass: {
        data: `
          @import "@/你的全局scss文件";
        `
      }
    }
  }
}

你可能感兴趣的:(可能是全x最好的vue教程)