Vue.js学习总结

Vue.js学习总结

1.创建一个Vue实例

通过引入方式创建一个.html文件,在头部标签内引入

<!-- 开发环境版本,包含了有帮助

 

的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

,之后在<body>内部写入代码完成第一个”Hello Vue”的实例

2.挂载点、模板以及实例的关系

 

<body>
  <div id='root'>
    <h1>{{msg}}</h1>
  </div>
  <script>
    new Vue({
      el:'#root',
      data:{
        msg:'hello world'
      }
    })
  </script>
</body>

 

挂载点就是element对应的标签,上面的html中的html中的{{msg}}去掉

 

<div id='root'></div>

这个标签就是vue实例的挂载点,因为下面的el正好与上面标签中的id对应上

模板:挂载点里面的内容

<h1>{{msg}}</h1>

模板可以有多种形式,可以写在挂载点内部也可以写在实例里面的template属性里面,所以模板就是挂载点的内部的内容。

new Vue({
  el:'#root',
  template:'<h1>{{msg}}</h1>',
  data:{
    msg:'hello world'
  }
})

3.实例中的数据、实例和方法

数据:除了插值表达式,可以改变dom之外,Vue还提供了一些指令,操作dom,例如v-text和v-html,v-text会进行一次转义,如下

<!DOCTYPE html>
<html>
<head>
  <title>vueTest</title>
  <meta charset="utf-8">
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
  <div id="root">
    <h1>hello {{msg}}</h1>
    <h2>number is {{number}}</h2>
    <h2 v-text="number"></h2>
    <h2 v-html="number"></h2>
    <div v-text="content"></div>
    <div v-html="content"></div>
    
  </div>
 
  <script >
    new Vue({
      el: "#root",
      data: {
        msg: "world",
        number: 12345,
        content: "<strong>hello</strong>"
      }
    })
  </script>
</body>
</html>

事件:vue给一个标签绑定事件

vue模板指令:v-on:事件名称,也可简称为@事件名称,如下

<!DOCTYPE html>
<html>
<head>
  <title>vueTest</title>
  <meta charset="utf-8">
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
  <div id="root">
    <div @click="handleClick">{{msg}}</div>
    <!-- <div v-on:click="handleClick">{{msg}}</div> -->
    
  </div>
 
  <script >
    new Vue({
      el: "#root",
      data: {
        msg: "hello"
      },
      methods: {
        handleClick: function(){
          this.msg = "world";
        }
      }
    })
  </script>
</body>
</html>

这里用methods下函数实现事件触发

4.vue中的属性绑定和双向数据绑定、计算属性和侦听器

4.1属性绑定 v-bind,如下

<div id="root">
        <div v-bind:title="title">hello world</div>
</div>
<script>
    new Vue({
        el:"#root",
        data:{
           title:"this is hello world"
        }
    })
</script>

v-bind也可有另外一种方式

<div v-bind:title="title">hello world</div>可以写为
<div :title="title">hello world</div>

就是“v-bind“”改写为“:”

4.2双向数据绑定,如下

单向绑定:就是当数据改变页面发生变化,而当页面发生改变数据不会跟着改变

双向绑定:就是当数据改变页面发生变化,而当页面发生改变数据也会跟着改变

如下:

<div id="root">
    <input type="text" v-model:value="content"/>
    <div>{{content}}</div>
</div>
<script>
    new Vue({
        el:"#root",
        data:{
            content: "this is content"
             },
       
    })
</script

4.3vue中的计算属性和侦听器

4.3.1计算属性

计算属性computed:一个属性通过其他计算属性而来,例如funame由firstname和lastname计算而来,

<div id="root">
    姓:<input type="text" v-model:value="firstName">
    名:<input type="text" v-model:value="lastName">
    <div>{{fullName}}</div>
    <div>{{count}}</div>
</div>
<script>
    new Vue({
        el: "#root",
        data: {
            firstName: '',
            lastName: '',                
        },
        //计算属性
        computed:{ 
            fullName: function () {
                return this.firstName+" "+this.lastName
            }
        },                     
    })
</script>

4.3.2侦听器watch,监听数据变化,一旦某个数据发生变化就会在侦听器中进行逻辑计算,如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

</head>
<body>
<div id="root">
  姓:<input v-model="firstName"/>
  名:<input v-model="lastName"/>
  <div>{{fullName}}</div>
  <div>{{count}}</div>
</div>
<script>
  new Vue({
    el:"#root",
    data:{
       firstName: "",
      lastName:"",
      count:0
    },
    computed:{
      fullName:function () {
        return this.firstName+''+this.lastName

      }
    },
    watch:{
      fullName:function () {this.count++

      }

    }

  })
</script>
</body>
</html>

 

 

 

 

 

 

 

 

 

发表评论

邮箱地址不会被公开。