zoukankan      html  css  js  c++  java
  • vue基础(一)

    1.vue基础概念

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <div id="root">
        <!-- <p id="pp">我爱你赵丽颖</p> -->
        <p>{{msg}}</p>
        <!-- <a v-bind:href="url">点我去百度</a> -->
        <!-- 简写 -->
        <a :href="url">点我去百度</a>
        <p>{{msg.toUpperCase()}}</p>
        <p>{{msg+'哈哈'}}</p>
    
      </div>
      <script src="./js/vue.js"></script>
    
    
      <script>
        const vm = new Vue({
          //每一个页面都至少要有一个Vue的实例去对应
          //实例化vm对象的时候,要传一个配置对象,属性名固定,属性值可以更改的对象叫配置对象,axios({})也是
          el:'#root',//是一个字符串类型的数据,字符串是css选择器字符串
          //这个选择器选中的元素,被称作挂载点
          //挂载点的内部所有的东西叫模板,但是不包括挂载点本身
          //模板当中有模板语法:插值语法和指令语法
          // {{}}就是插值语法,它的作用是操作模板元素的内容
          // 指令语法有很多,我们先说一个v-bind: 它可以绑定数据到属性身上,数据是动态的,简写:就是冒号
          // 模板语法当中里面的数据都不再是静态的,而是动态的,而且是js表达式
    
          data:{
            msg:'woainiqiwei',
            url:'https://www.baidu.com',
            persons:[
              {id:1,name:'赵丽颖',age:33},
              {id:2,name:'杨幂',age:34},
              {id:3,name:'戚薇',age:40},
            ]
          }
          //data当中所有的属性数据,最终都会变为vm实例化对象身上的同名属性数据
          //模板当中所使用的所有数据看似是data里面的,其实拿的是vm的
        })
        
      </script>
    </body>
    </html>

    2、数据绑定MVVM及事件的添加

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    
    <body>
      <div id="root">
        <!-- v-bind:简写: -->
        <!-- <input type="text" :value="msg"> -->
        <input type="text" v-model="msg"> 
        <p>我爱你{{msg}}</p>
      </div>
      <script src="./js/vue.js"></script>
      <script>
        const vm = new Vue({
          el: '#root',
          // data:function(){
          //   this
          // },
    
          // data:() => {
          //   this
          // }
          //data有两种写法,一种是对象写法
          //另一种data的函数写法,要求必须return一个对象
          //数据的单相绑定其实说的就是指令v-bind:  只能从data中单向获取数据展示,并且和模板绑定到一起
          //数据的双向数据绑定说的一般就是表单类元素的v-model指令,只要以后我们看到了表单元素,几乎都双向
          // MVVM要深入理解
          data() {
            return {
              msg:'赵丽颖'
            }
          },
        })
      </script>
    </body>
    
    </html>

    3,事件的绑定基础

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <div id="root">
        <!-- 点击事件 -->
        <!-- <p v-on:click="update">我爱你{{msg}}</p> -->
        <!-- 简写形式 -->
        <p @mouseenter="update">我爱你{{msg}}</p>
      </div>
      <script src="./js/vue.js"></script>
      <script>
        const vm = new Vue({
          // el:'#root',
          // data:{
    
          // },
          
          //属性
          data(){
            return {
              msg:'赵丽颖'
            }
          },
          //方法
          methods: {
            update(){
              //在vue的方法当中,this都是指向vm实例化对象的
              this.msg = '杨幂'
            }
          },
        })
        vm.$mount('#root')  //相当于el:'#root',
    
    
      </script>
    </body>
    </html>

    4,Object.defineProperty使用

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <script>
        let obj = {
          firstName:'zhao',
          lastName:'liying',
          // fullName:'zhaoliying'
        }
    
        // obj.fullName = 'zhaoliying'
        // console.log(obj)
    
    
        // obj.firstName = 'liu'
        // console.log(obj)
        //不管之前对象有没有这个属性
        //都可以使用
        //让这个属性变为一个响应式的属性(和别的数据有关联的,自己变,别的数据也变,别的数据变自己也变)
        Object.defineProperty(obj,'fullName',{
          get(){
            //getter 当读取这个属性的时候就会自动的调用get()
            return this.firstName + '-' + this.lastName
          },
          set(data){
            //setter 当写这个属性的时候,就会自动调用set()
            let arr = data.split('-')
            this.firstName = arr[0]
            this.lastName = arr[1]
          }
        })
        // console.log(obj.fullName)  //自动调用get函数
        //覆盖之前的fullName
        obj.fullName = 'liu-liying' //自动调用set函数
        console.log(obj)  //{firstName: "liu", lastName: "liying"}
      </script>
    </body>
    </html>

    5.计算属性-computed

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <div id="root">
        姓:<input type="text" v-model="firstName"> 
        名:<input type="text" v-model="lastName"> 
        姓名1(单向绑定):<input type="text" v-bind:value="fullName1"> 
        姓名2(双向绑定):<input type="text" v-model="fullName2"> 
    
    
        <p>{{fullName1}}</p>
        <p>{{fullName1}}</p>
        <p>{{fullName1}}</p>
        <p>{{fullName1}}</p>
    
    
      </div>
      <script src="./js/vue.js"></script>
      <script>
        new Vue({
          el:'#root',
          data(){
            return {
              //写非函数数据
              firstName:'zhao',
              lastName:'liying'
            }
          },
          methods: {
            //我们写方法和函数
          },
          computed: {
            // fullName1:{
            //   //如果你的页面操作数据有读有写,那么get和set都得有
            //   get(){
    
            //   },
            //   //如果只有读取,set没必要写,set如果没必要写,那么可以简化写为一个方法
            //   set(){
    
            //   }
            // },
    
            fullName1(){
              //没有set方法,代表的就是get 只能读取
              console.log(11111)
              return this.firstName + '-' + this.lastName
            },
    
            fullName2:{
              //如果你的页面操作数据有读有写,那么get和set都得有
              get(){
                return this.firstName + '-' + this.lastName
              },
              //如果只有读取,set没必要写,set如果没必要写,那么可以简化写为一个方法
              set(value){
                let arr = value.split('-')
                this.firstName = arr[0]
                this.lastName = arr[1]
              }
            },
            //什么时候用计算属性是我们大家刚开始想不到的
            // 当你有一个数据需要 但是不存在 又是根据已有的数据计算而来的 必然用到计算属性
          },
        })
      </script>
    </body>
    </html>

    6,监视属性,watch

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <div id="root">
        <input type="text" v-model="firstName">
        <input type="text" v-model="lastName">
        <input type="text" v-model="fullName">
      </div>
      <script src="./js/vue.js"></script>
      <script>
        new Vue({
          el:'#root',
          data:{
            firstName:'zhao',
            lastName:'liying',
            fullName:'zhao-liying'
          },
          watch:{
            //只监视firstName,新值和旧值
            firstName(newVal,oldVal){
              console.log(newVal,oldVal)
              this.fullName = newVal + this.lastName
            },
            lastName(newVal, oldVal){
              console.log(newVal, oldVal)
              this.fullName= this.firstName+ newVal
            }
            //什么时候用监视属性
            //属性值是存在的,才能监视   不存在需要计算
          }
        })
      </script>
    </body>
    </html>
  • 相关阅读:
    iTerm2分屏快捷键
    k8s中运维/测试常用的命令整理(随时更新)
    httpRunner自动化测试用例使用笔记
    Git学习笔记-快速上手(mac系统)
    RBAC权限控制逻辑笔记
    CPS中有关CICD的配置
    LDAP中filter的使用
    Docker初级入门
    C语言 实现 HashTable
    从三个线程 排队打印 , 到 多个线程打印
  • 原文地址:https://www.cnblogs.com/fsg6/p/13474394.html
Copyright © 2011-2022 走看看