您的位置:首页 > Web前端 > Vue.js

vue初识及数据驱动/ 双向数据绑定的原理 / 深入响应式的原理

2019-05-22 20:45 876 查看

1. 前端框架的发展历史

前端工程师( 攻城狮 )
12年左右 html css + div
13年左右 js 加入 jquery
14年左右 MVC angular1.0 react
15年 vue研发
16年左右 vue 微信小程序

2. Vue.js第一次使用

  1. 什么是框架?什么是库

框架是有一套自己的生态系统的
库是没有自己的生态系统的, 它就是一个工具

  1. 查看vue.js的源代码

  2. 暂时学习使用的是 全局变量 形式

  3. jsx( javascript + xml )

  4. 总结vue.js第一次使用

  • 使用script标签引入Vue.js
  • 实例化全局暴露的变量Vue构造器函数得到一个实例
  • 配置Vue构造器函数中的配置项,一个配置项一个功能 el – 将id为app的一部分DOM结构当做模板传入配置项,然后挂载在页面中
  • data – 用来定义数据的
  • 将数据展示在视图中,通过使用 双大括号语法 ( mustache 语法 ) 来展示数据
  • 这时候我们发现在我们的模板(DOM结构)中可以使用 javascript语法,那么我们把这个类型称之为 ‘jsx语法糖’
  • 当我们将数据修改后发现,视图就会更新,这种情况我们称之为‘数据驱动(视图)’
  • <script src="vue.js"></script>
    <script>
    // console.log( Vue )  function  Vue( options ) {}
    
    /*
    学习的是  Vue构造函数中的options  和  vm身上的属性和方法
    */
    
    var vm = new Vue({
    el: '#app', // 将id为app的一部分DOM结构当做模板传入配置项,然后挂载在页面中
    data: {
    msg: 'hello Vue.js'
    }
    })
    
    console.log(vm)
    </script>
    1. 既然Vue是一个框架, 那么它使用了什么架构模式?
    • 目前我们市面上基本上是以 MVC 这个架构思维 为主
    • Vue使用 MVC 的衍生的模式,这个模式叫做 MVVM
    • MVC
    • Backbone.js
    • MVP
    • MVVM
    1. 名词解释:
        M Model 表示数据
      • V View 表示视图
      • P/C/VM Presenter/Controller/ViewModel(视图模型) 表示就是逻辑
    • Vue使用的是MVVM

    • Vue中 VM改变,那么 V也会改变 , 反之也是一样的, 我们称之为 ‘双向数据绑定’

    数据驱动/ 双向数据绑定的原理 / 深入响应式的原理

    -当我们将数据写在data选项时, Vue会通过observer将data对象中的所有的属性都设置上getter和setter
    
    -当我们将数据绑定在视图时,自动触发getter,会将默认值,展示在视图
    -当我们通过视图修改数据是, 会自动触发setter,将数据修改,同时视图也会发生更新
    • 双向数据绑定
    <div id="app">
    <h3> VM 变 V 跟着变 </h3>
    <p> {{ msg }} </p>
    <h3> V变 Vm也跟着变 </h3>
    <input type="text" v-model = "msg">
    </div>
    </body>
    <script src="./vue.js"></script>
    <script>
    new Vue({
    el: '#app',
    data: {
    msg: 'hello Vue.js '
    }
    })
    </script>
    • 双向数据绑定原理
      V -> VM

      VM -> V

      -这个是使用了es5中的一个特性,这个特性叫做 Object.definedPropty( obj, 对象的属性, 配置项)

      Object.definedPropty
      配置项:
      1. 属性是否可写
      2. 属性是否可以遍历
      3. 存储器
      get 函数 和 set 函数 也称之为 getter && setter

      数据 驱动只和存储器有关系

    var box = document.querySelector('.box')
    var input = document.querySelector('input')
    var obj = {
    a: ' I love you '
    }
    
    Object.defineProperty( obj , 'a' , {
    get () {
    return 'I do not love you ' //设置当前属性的初始值
    },
    set ( value ) {
    console.log( value )
    box.innerHTML = value
    console.log( obj )
    }
    })
    input.onchange = function () {
    obj.a = input.value
    return ;
    }
    box.innerHTML = obj.a
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: