Vue.js基础语法学习(vue2)(一)

Vue.js基础语法学习(vue2)(一)

一、vue.js基础知识:

1.vue.js安装方式:

1.直接CDN引入:

<!--开发环境版本,包含了有帮助的命令行警告-->
<script src="https://cdn.jsdelivr.net/ npm/vue/ dist/vue.js"></script>
<!--生产环境版本,优化了尺寸和速度-->
<script src= "https: //cdn.jsdelivr.net/npm/vue"></script>

2.下载和引入:

开发环境https ://vuejs.org/is/vue.is
生产环境https ://vuejs.org/is/vue.min.is

3.NPM安装

2.vue.js的响应式:
<div id="app">{{massage}}</div>
<script>
        // Es6里定义 let(变量) const(常量)
    	//创建一个vue的对象
        const app = new Vue({
            el:'#app',//用于挂载要管理的元素
            data:{//定义数据
                massage:'你好啊,李洋静!'
            }
        })
</script>
3.vue.js的列表展示:
 <div id="app">
        <ul>
            <!--而且还是响应式的 -->
            <li v-for="item in movies">{{item}}</li>
        </ul>
 </div>

 <script src="../JS/vue.js"></script>
    <script>
        const app = new Vue({
            el:'#app',//用于挂载要管理的元素
            data:{//定义数据
                movies:['one','two','three','four']
            }
        })
    </script>
4.vue.js计数器:
<div id="app">
        <h2>当前计数:{{conter}}</h2>
        <!-- 一般不这么写 -->
        <!-- <button @click="conter++">+</button>
        <button v-on:click="conter--">-</button> -->
        <!-- 这样写 -->
        <button @click="add">+</button>
        <button @click="sub">-</button>
</div>
<script src="../JS/vue.js"></script>
<script>
    const app = new Vue({
    	el:'#app',
    	data:{
         	conter:0
    	},
    	methods:{
         	add:function(){
         	console.log('add被执行');
         	this.conter++;
    		},
    		sub:function(){
         	 console.log('sub被执行');
         	 this.conter--;
    		}
    	}
 })
</script>
5.vue.js的MVVM:

(Model ViewModel View)

计数器的mvvm

6.创建vue实例传入的options:
https://cn.vuejs.org/v2/api/#%E9%80%89%E9%A1%B9-%E6%95%B0%E6%8D%AE

目前掌握这些:

  • el:

    类型: string | HTMLElement

    作用:决定之后Vue实例会管理哪一个DOM.

  • data:

    类型 : Object| Function

    作用: Vue实例对应的数据对象。

  • methods:

    类型: { [key: string]: Function }

    作用:定义属于Vue的一些方法,可以在其他地方调用,也可以在指令中使用。

方法和函数的区别:定义在类里面的是方法、定义在外面的是函数。

7.vue的template:
 <div id="app">
    massage
  </div>
  <script src="../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:''
      }
    })
  </script>

二、vue模板语法:

1.插值操作——mustache(双大括号)语法:
<div id="app">
   <h2>你好啊!,{{massage}}</h2>
   <h2>{{fristName+lastName}}</h2>
   <h2>{{fristName+''+lastName}}</h2>
   <h2>{{fristName}} {{lastName}}</h2>
   <h2>{{conter*2}}</h2>
   <!-- mustache语法中不仅可以直接写变量,还可以写简单的表达式 -->
  </div>
  <script src="../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'李洋静',
        fristName:'linshan',
        lastName:'he',
        conter:100
      }
    })
  </script>
①.v-once:
<div id="app">
   <h2>{{massage}}</h2>
   <h2 v-once>{{massage}}</h2>
  </div>
  <script src="../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'liyangjing'
      }
    })
  </script>

在这里插入图片描述

②.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: {
        massage:'liyangjing',
        url:'<a href = "http://www.baidu.com">百度一下</a>'
      }
    })
  </script>

在这里插入图片描述

③.v-text:
<div id="app">
    <h2>{{massage}},是猪</h2>
    <h2 v-text="massage">,是猪</h2>
  </div>
  <script src="../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'liyangjing'
      }
    })
  </script>
</body>

用了v-text之后会覆盖标签里的文字,使标签里的文字不会显示。

在这里插入图片描述

④v-pre:

用于不让大括号里的内容被解析的情况。

<div id="app">
    <h2>{{massage}}</h2>
    <h2 v-pre>{{massage}}</h2>
  </div>
  <script src="../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'你好啊'
      }
    })
  </script>

在这里插入图片描述

⑤v-cloak:
 <style>
    [v-cloak]{
      display: none;
    }
  </style>
  <div id="app" v-cloak>
   {{massage}}
  </div>
  <script src="../JS/vue.js"></script>
  <script>
    // 在vue解析之前,div中有一个属性v-cloak
    // 在vue解析之后,div中没有一个属性v-cloak
    // 定时器
    setTimeout(function(){
      const app = new Vue({
      el: '#app',
      data: {
        massage:'你好啊'
      }
    })
    },1000)
  </script>
2.动态绑定属性:
①v-bind的基本使用:
 <div id="app">
    <!-- 这里不能写成src="{{imgURL}}" 这里不能使用mustache语法 -->
    <!-- 添加了v-bind之后 v-bind后面的属性就是可以动态变化的,里面的内容就是变量-->
    <img v-bind:src="imgURL" alt="">
    <a v-bind:href="aHref"></a>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'你好啊',
    imgURL:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fci.xiaohongshu.com%2Fcccdc80d-3051-7b5b-b3f3-657af1e45242%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fci.xiaohongshu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1648715374&t=2920d025406a977f19bb5e8cd853a92a',
        aHref:'www.baidu.com'
      }
    })
  </script>

语法糖的写法:

 <!-- 语法糖的写法 -->
    <img :src="imgURL" alt="">
    <a :href="aHref"></a>
②*v-bind动态绑定class(对象语法):
<div id="app">
    <h2 class="active"></h2>
    <h2 v-bind:class="active"></h2>
    <h2 :class="active"></h2>
    <!-- 常用使用方法 -->
    <h2 v-bind:class="{key1:value1,key2:valuel2}"></h2>
    <!--  <h2 v-bind:class="{类1:boolean,类:boolean}"></h2>-->
    <h2 v-bind:class="{active:isActive,line:isLine}"></h2>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'你好啊',
        active:'active',
        isActive:true,
        isLine:true
      }
    })
  </script>
③v-for和v-bind的结合:

方法一:

<style>
  .active{
    color: red;
  }
</style>
<body>
  <div id="app">
    <ul>
        <!-- 当点击的时候令activeIndex等于当前下标,然后当activeIndex等于当前下标时,动态绑定class为active -->
      <li v-for="(m,index) in movies" @click="activeIndex=index" :class="{'active':activeIndex==index}">{{index}}-{{m}}</li>
    </ul>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        movies:['one','two','three','four'],
        activeIndex:0
      }
    })
  </script>
</body>

方法二:


④*v-bind动态绑定style(对象语法):
<div id="app">
    <!-- <h2 :style="{{key(属性名):value(属性值)}}">{{massage}}</h2> -->
    <h2 :style="{fontSize: '50px'}">{{massage}}</h2>
    <!-- 注意这里要加单引号,不然会把50px当成变量名-->
    <h2 :style="{fontSize: finalSize+'px',color: finalColor}">{{massage}}</h2>
    <h2 :style="getStyles()">{{massage}}</h2>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'你好啊',
        finalSize: 100,
        finalColor:'red'
      },
      methods: {
        getStyles: function(){
          return {fontSize: this.finalSize+'px',color: this.finalColor}
        }
      }
    })
  </script>
⑤v-bind动态绑定style(数组语法):
<div id="app">
   <h2 :style="[baseStyle,baseStyle1"></h2>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage:'你好啊',
        baseStyle:{backgroundColor: 'red'},
        baseStyle1:{fontSize: '100px'}
      }
    })
  </script>
3.计算属性的基本使用:
①什么是计算属性:

computed

计算属性与方法的语法区别:

计算属性在多次调用的时候只会执行一次,methods调用多少次执行多少次

<div id="app">
   <h2>{{firstName}} {{lastName}}</h2>
   <h2>{{getFullName()}}</h2>
   <!-- 这里的fullName相当于一个属性 所以不用加() -->
   <h2>{{fullName}}</h2>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage: '你好啊',
        firstName: 'linshan',
        lastName: 'he'
      },
      // computed 计算属性
      computed: {
        fullName: function(){
          return this.firstName+ ' ' + this.lastName 
        }
      },
      methods: {
        getFullName(){
          return this.firstName+ ' ' + this.lastName 
        }
      }
    })
  </script>
②计算属性的复杂操作:
 <div id="app">
   <h2>总价格: {{totalPrice}}</h2>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        // 数组里面放的对象
       books:[
         {id:110,name:'unix编程',price:119},
         {id:111,name:'深入理解java虚拟机',price:105},
         {id:112,name:'深入理解计算机原理',price:95},
         {id:113,name:'现代操作系统',price:87},
       ]
      },
      computed: {
        totalPrice: function(){
          let result = 0;
          for (let i in this.books){
            result += this.books[i].price
          }
          return result
        }
      }
    })
③计算属性的getter和setter:
<div id="app">
  <h2>{{fullName}}</h2>
  </div>
  <script src="../../JS/vue.js"></script>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        massage: '你好啊',
        firstName: 'linshan',
        lastName: 'he'
      },
      // computed 计算属性
      computed: {
        // 这种是简写
        // fullName: function(){
        //   return this.firstName+ ' ' + this.lastName 
        // }
        // 计算属性一般没有set方法,只读属性
        // 但是也可以给他加一个set方法
        fullName: {
          set: function(newValue){
            console.log(newValue)
            const names = newValue.split(' ');
            this.firstName = names[0];
            this.lastName = names[1];
          },
          get: function(){
            return this.firstName+ ' ' + this.lastName 
          }
        }
      }
    })
  </script>
④计算属性和methods的对比:

把数据做一种变换、运算显示到界面上通常用计算属性;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值