zoukankan      html  css  js  c++  java
  • 北风网-Vue.js 学习笔记(1)

    第一章、Vue.js介绍

    第3节视频:Vue.js的构造器和扩展

    一、Vue.js的构造器

      1、每个Vue.js应用都是通过构造函数Vue 创建一个根实例。

        var vm = new Vue({

          //选项

        });

      二、在实例化Vue 时,需要传入一个JSON 对象,它可以包含数据、模板、挂载元素、方法、回调函数等选项,全部的选项可以在API文档中查看。

       1、Vue 的构造器可以被扩展使用,这样就免去了重复定义构造器的很多内容。

        var MyVue = Vue.extend({

          //扩展选项

        });

        

        var app = new MyVue({

          //选项

        });

    第4节视频:Vue实例的属性

       一、每个 Vue 实例都会代理其 data 对象里所有的属性。如果实例创建之后添加或者更改属性,它不会触发视图更新。

        栗子:

          视图层:

           <p> {{ username }}</p>

           <p>{{ sex }}</p>

          控制器和模型层:

            var app = new Vue({

              el: "#app";

              data: {

                username: "Scott"

              },

              ready: function(){

                this.sex = "male"

              }

            });

            app.username = "Jack";

        注意:在实例创建完成之前,app对象是可以修改属性,一旦实例创建完成,app对象的属性就无法更改;

      二、除了data 属性,Vue实例暴露了一些有用的实例属性与方法,这些属性与方法都有前缀$。

        栗子:

          var app = new Vue({

            el: "#app",

            data: {

              username : "Scott"

            }

          });

          console.log(app.username);

          console.log(app.$data.username); //$data属性是所有绑定数据的代理

          console.log(app.$el == document.getElementById("app"));

    第五节视频:Vue实例的生命周期

      

           

      

    第6节视频:计算属性(Computed)

      一、视图层的表达式是非常便利的输出手段,但是它们实际上只用于简单的运算。在模板中放入太多的逻辑会让表达式过重且难以维护。例如:

        <div id = “example”>

          {{ message.split('').reverse().join('') }}

        </div>

      二、在这种情况下,模板不再简单和清晰。对于任何复杂逻辑,你都应当使用计算属性。

      三、计算属性就是在模板中调用函数输出结果。

        视图层:

          <input type = "text" v-model = "salary" >

          <p>{{ calculateTax }}</p>

          <p v-text = "calculate" ></p> //函数调用

        控制器和模型层:

          computed: {

            calculateTax: function(){

              var base = 3500;

              var temp = this.salary - base;

              var tax = 0;

              if(temp > 0 && temp <= 1500) {

                tax = temp * 0.03 - 0;

              } else if (temp >1500 && temp <= 4500){

                tax = temp * 0.10 - 105;

              }

              ....

              return Math.floor( tax * 100 ) / 100 ;

            }

          }

    第7节视频:计算属性的案例

          

    第8节视频:方法调用

      一、方法调用

        1、调用methods中的函数也能实现相同的结果。

          视图层:

            <input type = "text" v-model = "salary">

            <p>{{ calculateTax() }}</p>

            <p v-text = "calculateTax() " ></p>//函数调用

          控制器和模型层:

            methods:{

              calculateTax: function(){

                var base = 3500;

                var temp = this.salary - base;

                var tax = 0;

                if(temp >0 && temp <= 1500){

                  tax = temp * 0.03 - 0 ;

                } else if(){

                  tax = temp * 0.10 - 105;

                }

                ...

                return Math.floor(tax * 100 ) / 100;

              }

            }

        2、计算缓存

          上个栗子中,计算属性和函数,两者最终结果相同。然而不同的是,计算属性是基于缓存的,计算属性只有在它的相关依赖发生改变时,才会重新求值;函数恰好相反,它是没有缓存的。

        3、计算属性与方法调用的对比

        视图层:

        <p><input type = "button" value = "添加" @click = "add"></p>

        <p v-for = "one in list">{{ now }}</p>//调用计算属性

        <p v-for = "one in list">{{ now() }}</p>//调用方法

        计算属性:

        data: {

          list: []

        },

        methods:{

          add: function(){

            this.list.push("OK");  

          }

        },

        computed: {

          now: function(){

            now: function(){

              return new Data().toLocaleString();

            }

          }

        }

        

        调用方法:

        data:{

          list:[]

        },

        methods:{

          add: function(){

            this.list.push("OK");

          },

          now: function (){

            return new Data().toLocaleString();

          }

        }

        

    第9节视频:观察属性

      一、Vue提供了watch属性这种更通用的方式来观察和响应实例上的数据变动。

        1、watch 属性的回调函数没有返回值,回调函数可以执行一些复杂的任务,比如绘制图形等。

        2、watch 属性没有返回值,所以不适合在表达式中使用。

      栗子:

        <canvas id = "test" width = "300" height = " 300" ></canvas>

        data:{

          r:0

        },

        watch: {

          r: function ( newValue, oldValue) {

            var c = document.getElementById("test");

            var ctx = c.getContext("2d");

            ctx.beginPath();

            ctx.clearRect(0,0,300,300);

            ctx.lineWidth = 5;

            ctx.strokeStyle = "red";

            ctx.arc(100,100,newValue,0,360*Math.PI/180);

            ctx.stroke();

          }

        }

    第10节视频:文本插值

      模板语法:文本插值

      Vue模板语法:

      一、Vue.js使用了基于HTML的模板语法,在应用状态改变时,Vue 能够重新渲染组件并应用到DOM上面。

      writer.writer("<html>");

      writer.writer("<body>");

      writer.writer("<h1>Hello," + username +"</h1>");

      writer.writer("</body>");

      writer.writer("</html>");

      writer.close();

      

       二、文本插值

        1、数据绑定最常见的形式就是使用双大括号的文本插值。如果数据对象上username 属性发生了改变,插值处的内容就会更新。

        2、插值是单向绑定,数据对象发生变化会体现在插值上,但是插值变化不会体现在数据对象上面。

       <div id ="app">

         <p>{{username}}</p>

       </div> 

      模型层:

        data: {

          username: "Scott"

        }

      

        3、使用双大括号插值,如果Vue 没有完成对页面的渲染,用户是会短暂看到插值表达式的,解决这个问题可以使用 v-text 指令。从体验上来说,推荐使用 v-text 指令。

        <div id = "app">

          <p v-text = "username"></p>

        </div>

         4、通过使用 v-once 指令,你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。

        <div id = "app">

          <p><input type = "text" v-model = "username"></p>

          <p><span v-once>Hello,{{ username}}</span></p>

        </div>

        <....... v-model ="username">  <----双向绑定------->data:{

                                    username: "Scott"

                                  }

        

    第11节视频:HTML插值

         模板语法:HTML插值

        1、双大括号会将数据解释为纯文本,而非HTML。为了输出真正的HTML,你需要使用 v-html 指令:

         <div id = "app">

           <div v-html = "content"></div>

         </div>

      

         data: {

          content: ' <a href = "http://www.baidu.com">百度首页</a>'

         }

         2、被插入的内容都会被当作HTML,数据绑定会被忽略。

          <div id = "app">

            <div v-html = "content"></div>

          </div>

          

          data:{

             content:'<a href = "{{url}}">百度首页</a>'

          }

          3、只对可信内容使用HTML插值,绝不要对用户提供的内容插值,除非对内容过滤,否则很容易引起XSS攻击。

        data:{

          article:"<a href = 'javascript:alert(1)'>抽奖</a>"

        }

          

    第12节视频:属性插值和表达式

         模板语法:属性插值和表达式

      一、属性插值

        1、如果要对HTML元素属性插值,应该使用 v-bind 指令。

        <input type = "button" value = "报名" v-bind:disabled = "age<18" v-bind:class = "btn">

        

        data:{

          username: "Scott",

          age: 22,

          btn:"red-button"

        }

        2、在模板中,我们一直都只绑定简单的属性键值。但实际上,对于所有的数据绑定,Vue.js 都提供了完全的JavaScript表达式支持。

        <p>{{username.slice(0,3)}}</p>

        <p>{{Math.round(salary/22)}}</p>

        <p>{{sex == "male" && age >= 18}}</p>

        <p v-bind:class = "sex == 'female' ? 'pink' : 'blue' ">Hello</p>

          <p>{{ var a = 1 }}</p>

      

      

      

        

  • 相关阅读:
    Python学习笔记(11)递归与匿名函数
    Python学习笔记(10)局部变量、全局变量、常量
    Python学习笔记(8)函数、位置参数、可变参数、关键字参数
    Pyhthon学习笔记(7)三元表达式及列表生成式
    Python自动化学习笔记(5)字符串常用的方法
    Python自动化学习(4)列表与字符串的切片操作
    python自动化学习笔记(3)列表list和字典dict
    python自动化学习笔记(2)字符串格式化输出与条件判断及循环语句
    Python自动化学习笔记(1)认识接口测试以及postman、Charles工具简单应用
    《软件测试的艺术》 阅读整理(二)
  • 原文地址:https://www.cnblogs.com/chengshun/p/7707139.html
Copyright © 2011-2022 走看看