美文网首页
VUE基础(一)

VUE基础(一)

作者: bob_python | 来源:发表于2017-11-05 11:54 被阅读0次

    VUE框架的核心理念:数据驱动、组件化

    数据驱动就是当数据发生变化的时候,用户界面发生相应的变化,开发者不需要手动的去修改dom

    例如:需求我们点击一个BUTTON按钮,需要按钮(文本)进行start和stop的切换

    (JS原生):

    var demo = document.getElementById('demo')

    demo.onclick = function() {

    if (this.value == "开始") {

    this.value = "停止";

    console.log("开始了")|请注意→

    } else {

    this.value = "开始";

    console.log("停止了")

    }

    }

    (#注意#VUE项目里不能写JS原生和Jquery!)

    ·原生需要对button绑定事件,然后获取文案对应的元素dom对象,然后根据切换修改该dom对象的文案值。

    ·Vue:在button元素上指明事件,同时声明对应文案的属性,点击事件的时候改变属性的值,对应元素的文本就能够自动的进行切换

    vuejs帮我们封装了数据和dom对象操作的映射,我们只需要关心数据的逻辑处理,数据的变化就能够自然的通知页面进行页面的重新渲染。

    vue项目的实现是基于MVVN架构实现的

    mvvm机构包括):

    ·Model --数据--JavaScript对象

    ·View  --视图--就是所见的DOM

    ·viewModel --链接视图和数据的中间件#通讯

    架构运行逻辑:

    View <->        viewModel     <->model

    在MVVM框架中不允许数据和底层的视图直接通讯的

    只能通过viewModel通讯(我的作用就是定义OBserver观察者)

    流程:

    ·数据变化时(ViewModel监听),把(底层逻辑)视图对应的内容进行更新

    (例如倒计时结束后,某一JS逻辑终止)

    ·而用户操作(底层逻辑)视图时,(ViewModel监听)通知数据改变

    (例如用户操作了点击购物车增加了一件商品)

    vue结构:

    任何Vue程序都需要至少一个Vue实例对象,然后在内部设置各种属性和方法,以及生命周期的控制。

    ==============

    vue实例对象

    Var vm = new Vue({

    //选项

    })

    在实例化VUE时,需要传入一个选项对象(包含数据、模板挂载元素、方法、生命周期钩子)

    https://cn.vuejs.org/v2/api/

    El对应的标签根结点

    Var vm = new Vue({

    El: 'app'

    })

    el用来放置一个选择器,控制能够管理的范围!

    data对象

    Var vm = new vue({

    El: '#app',

    Data:{

    Message: hello vue'

    }

    })

    将来页面上绑定的数据就是data里的数据

    VUE会代理data对象的所有属性(vue代理属性是怎么实现的?)

    答:

    Vm.message = 'aaa';//可以直接使用实例对象调用data中的属性进行操作

    Vm.$data.message = 'bbb'; //这样也可以操作data中的属性vm.$data就是data对象

    以上用法是通过vue实例内置的属性和方法来操作data,为了区分自己的属性,要加$

    Methods

    Var vm = new vue({

    El: '#app',

    Data:{

    Message: hello vue'

    },

    Methods:{

    Test1:function(){

    Console.log(this);

    },

    //建议写法:

    Test2(){

    console.log(this);

    }

    }

    })

    methods是方法,只要调用它,函数就会执行。

    当data中对应数据发生改变时,methods里的值也会产生变化

    只需要直接调用即可vm.test1(); //vm.test2()

    文本插值

    #一定需要有返回值

    {{  10 + 20 }}  //  {{Math.random() > 0.5}}

    指令

    带有v-前缀的特殊属性。指令属性的值预期是单个JavaScript表达式

    当表达式的值(数据发生变化),(响应式的)作用于DOM

    1.V-text

    更新元素的textContent。如果需要更新部分的textContent,还需要使用到{{}}插值

    先在data中声明Message = "hello"

    使用text最好使用这种方式!不要直接在text里写!

    //  hello

    测试//hello

    {{ message }}// hello


    哈哈//哈哈

    总结,只要设置v-text,那么元素一定会被替换成指定的文本。

    1.V-model

    双向数据绑定,一般用于部分表单控件

    (输入框输入什么,上面应的部分也显示/删除什么)

    1.V-once

    只渲染元素和组件一次。随后的重新渲染,元素/组件以及所有的子节点将会被视为静态内容并且跳过。可以用于优化更新性能。

    也就是说。只要被VUE使用过的内容,下一次VUE其他指令将对他无效!

    4.   v-bind

    如果是属性绑定的话,那么使用v-bind

    豆瓣电影

    测试

    #在这里titel:里可以指定字符串!

    →→→→→→→→→→→→→→→→→→→→→→→→→→→→

    5.v-show

    根据表达式的(true / false),切换元素的display CSS属性。

    #案例分析

    # -选择按钮-文本内容是开始-onclick时调用(methods)里的函数

    # v-show

    1.通过(methods)函数调用时产生变化时

    2.判断isShow的布尔值true和false .

    3.从而驱动页面视图来完成对页面元素CSS状态的动态变化

    varvm= newVue({

    el:"#app",

    data:{

    isShow: false,

    },

    methods:{

    toggle:function() {

    this.isShow= !this.isShow

    #当点击事件触发的时候,isShow为true

    }

    }

    });

    V-指令之流程控制!

    1.V-if:

    1.v-if完全根据表达式的值在DOM中生成或移除一个元素。

    2.如果v-if表达式赋值为false,那么对应的元素就会从DOM中移除;

    3.否则,对应元素的一个克隆将被重新插入DOM中。

    4.如果元素是,那么将提出它的内容荣作为条件块

    ·V- if和v- show不同的是

    ·v-if是真实的创建和销毁元素

    ·V-show是CSS属性的变化,但是元素还是一直存在的

    v-if判断

    第一个

    第二个

    第三个

    varvm= newVue({

    el:"#app",

    data:{

    isShow: false,

    if_flag: true

    },

    methods:{

    zhaqi:function() {

    this.if_flag= !this.if_flag

    }

    }

    });

    ===============================================================

    2.v-else

    第一个

    第二个

    第三个

    意思是

    ·只要结果是true那么IF的条件块就会出现

    ·但是如果结果是false那么else的条件块会出现,IF的就会消失!

    3.v-else-if

    W

    RL

    J

    freedom

    ·如果IF条件符合,就生成W

    ·一直到都不符合,生成freedom

    For循环

    1.渲染列表,必须使用特定语法:

    ’变量‘in ’列表‘

      {{ tab.text}}

      ==============

      varvm= newVue({

      el:"#app",

      data:{

      tabs:[{

      text:'第一个'

      }, {

      text:'第二个'

      }, {

      text:'第三个'

      }]

      }

      });

      2.渲染对象

      #循环数组里的内容和下标

      #判断下标是第二个对象

      #输出对象的“icon”属性

      {{ item.icon }}

      #青岛大学

      var vm = new Vue({

      el: "#app",

      data: {

      demo_class: [{

      "name": "2017年12月5日",

      "icon": "上海大学",

      "time": "金融",

      "type": "陆家嘴"

      }, {

      "name": "2017年12月9日",

      "icon": "青岛大学",

      "time": "计算机",

      "type": "浦东"

      }]

      }

      });

      =========

      3循环嵌套

      #经典案例—九九乘法表实现循环

      {{ i+"*"+j+"="+(i*j) }}

      # div是一行(因为是行内块)

      #   span是行内自动排列(因为是行内元素)

      #I in  9 (这里的9,VUE默认为1-9)

      4.v-on点击事件

      事件绑定,事件触发的方法需要使用VUE实例中定义methods属性

      这里可以简写:

      < inputtype="button" value="text" @click="data中触发的方法" />

      也可以直接写JS表达式:

      < inputtype="button" value="可以直接写计算模式" @click="isShow=! isShow" />

      相关文章

        网友评论

            本文标题:VUE基础(一)

            本文链接:https://www.haomeiwen.com/subject/popcmxtx.html