0
点赞
收藏
分享

微信扫一扫

Vue学习笔记(篇二)——Vue基础语法

科牛 2022-03-12 阅读 49

Vue 基础语法

1、Mustache语法

2、v-once

举例代码(练习):

  <div id="app">
    <h2>{{message}}</h2>
    <h2 v-once>{{message}}</h2>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        message: '呵呵呵'
      },
      methods: {}
    });
  </script>

3、v-html

  <div id="app">
    <h2>{{url}}</h2>
    <h2 v-html="url"></h2>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        url: '<a href="http://www.baidu.com">百度一下</a>',
      },
      methods: {}
    });
  </script>

4、v-text

  <div id="app">
    <h2>{{message}}</h2>
    <h2 v-text="message">,刘大山!</h2>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        message: 'Hello',
      },
      methods: {}
    });
  </script>

5、v-pre

  <div id="app">
    <h1>{{message}}</h1>
    <h1 v-pre>{{message}}</h1>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        message: 'Hello'
      },
      methods: {}
    });
  </script>

6、v-cloak

<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    [v-cloak]{
      display: none;
    }
  </style>
</head>

<body>

  <div id="app" v-cloak>
    <h1>{{message}}</h1>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    //在vue解析之前,div中又一个属性 v-vloak
    //在vue解析之后,div中没有一个属性 v-vloak
    setTimeout(() => {
      const app = new Vue({
        el: '#app',
        data: {
          message: 'Hello',
        },
        methods: {}
      });
    }, 2000);
  </script>

</body>

7、v-bind

例,通过vue实例中的data绑定元素的src和href:

  <div id="app">
    <!-- 错误的做法:这里不可以使用mustache语法 -->
    <!-- <img src="{{imgUrl}}" alt=""> -->
    <!-- 正确的做法:使用v-bind指令 -->
    <img v-bind:src="imgUrl" alt="">
    <h1><a v-bind:href="baiduUrl">百度一下</a></h1>
    <!-- 语法糖的写法 -->
    <img :src="imgUrl" alt="">
    <h1><a :href="baiduUrl">百度一下</a></h1>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        imgUrl: 'https://img14.360buyimg.com/seckillcms/s250x250_jfs/t1/184564/27/10546/72131/60d137c4Ecbe5e45f/30bcc8ad97d26ab4.jpg',
        baiduUrl: 'https://www.baidu.com'
      },
      methods: {
      }
    });
  </script>

(1)v-bind绑定class

绑定方式:对象语法,对象向语法的含义是class后面跟的是一个对象

例:

绑定方式:数组语法,数组语法的含义是class后面跟的是一个数组

例:

(2)v-bind绑定style

绑定方式:数组语法

绑定方式二:数组语法

8、计算属性

例举:

  <div id="app">
    <h2 :style='{backgroundColor: "wheat"}'>{{firstName+'  '+lastName}}</h2>
    <h2 :style='{backgroundColor: "pink"}'>{{getFullName()}}</h2>
    <h2 :style='{backgroundColor: "tomato"}'>{{fullName}}</h2>
  </div>

  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        firstName: 'Jim',
        lastName: 'Join',
      },
      //计算属性
      computed:{
        fullName: function(){
          return this.firstName+" "+this.lastName;
        }
      },
      methods: {
        getFullName: function(){
          return this.firstName+ " " +this.lastName;
        }
      }
    });
  </script>

  • {{show(index)}}

总价为:{{totalPrice}}元

计算属性的setter和getter
  <div id="app">
    <h2>{{fullName}}</h2>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        firstName: 'Join',
        lastName: 'Jim'
      },
      methods: {
      },
      computed: {
        // 原来的形式
        // fullName: function(){
        //   return this.firstName+' '+lastName;
        // }
        // 标准型形式
        // 计算属性一般是没有set方法,只读属性
        fullName: {
          set: function(value){
            console.log("我被重新赋值了!!!", value);
            let names = value.split(' ');
            this.firstName = names[0];
            this.lastName = names[names.length - 1];
          },
          get: function(){
            return this.firstName+" "+this.lastName;
          }
        }
      }
    });
  </script>
计算属性的缓存
  <div id="app">
    <!-- 1、直接拼接 :语法过于繁琐-->
    <h2 :style = '{backgroundColor: "pink"}'>{{firstName}} {{lastName}}</h2>
    <!-- 2、通过定义methods -->
    <h2 :style = '{backgroundColor: "aqua"}'>{{getFullName()}}</h2>
    <h2 :style = '{backgroundColor: "aqua"}'>{{getFullName()}}</h2>
    <h2 :style = '{backgroundColor: "aqua"}'>{{getFullName()}}</h2>
    <h2 :style = '{backgroundColor: "aqua"}'>{{getFullName()}}</h2>
    <!-- 3、通过computed -->
    <h2 :style = '{backgroundColor: "wheat"}'>{{fullName}}</h2>
    <h2 :style = '{backgroundColor: "wheat"}'>{{fullName}}</h2>
    <h2 :style = '{backgroundColor: "wheat"}'>{{fullName}}</h2>
    <h2 :style = '{backgroundColor: "wheat"}'>{{fullName}}</h2>
  </div>
  <script src="../js/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        firstName: 'Join',
        lastName: 'Marry'
      },
      methods: {
        getFullName: function(){
          // 被调用四次
          console.log("getFullName");
          return this.firstName+ ' ' +this.lastName; 
        }
      },
      computed: {
        fullName: {
          get: function(){
            // 被调用一次
            console.log("fullName");
            return this.firstName+ ' ' +this.lastName;
          }
        }
      }
    });
  </script>

9、事件监听

在前端开发中,我们需要经常和用于交互。

这个时候,我们就必须监听用户发生的时间,比如点击、拖拽、键盘事件等等

(1)v-on

举报

相关推荐

0 条评论