Vue基础

模板语法

插值语法

<div id="root">
    <!--插值语法-->
	<h1>Hello {{name}}!</h1>
</div>
<script type="text/javascript">
        Vue.config.productionTip = false //阻止vue在启动时生成生产提示
        new Vue({
            el: '#root',
            data: {
                name:'Vue'
            }
        })
</script>

指令语法

<div id="root">
	<!--指令语法-->
    <a v-bind:href="url">一个普普通通的链接</a>
    <!--v-bind: 可以简写成 :-->
    <a :href="url">一个普普通通的链接</a>
</div>
<script type="text/javascript">
        Vue.config.productionTip = false //阻止vue在启动时生成生产提示
        new Vue({
            el: '#root',
            data: {
                url: "https://www.baidu.com"
            }
        })
</script>

{{1+1}}的显示结果是2

数据绑定

单向数据绑定

image-20210728164735383

双向数据绑定

使用v-model进行数据双向绑定

<div id="vue01">
    <!--单向绑定-->
    随便写点:<input type="text" :value="name"><br>
    <!--双向绑定-->
    随便写点:<input type="text" v-model:value="name">
    <!--v-model简写形式-->
    随便写点:<input type="text" v-model="name">
  </div>
  <script>
    Vue.config.productionTip = false
    new Vue({
      el: '#vue01',
      data: {
        name:'情不知其所起'
      }
    })
  </script>

**请注意!!!**v-model只能用于表单元素(输入元素)上

el与data的两种写法

el的两种写法

//el的第一种写法
new Vue({
    el: '#root',
    data: {
        name:'Vue',
        url: "https://www.baidu.com"
    }
})
// el的第二种写法
        const vm = new Vue({
            data: {
                name:'Vue',
                url: "https://www.baidu.com"
            }
        })
        vm.$mount('#root')

data的两种写法

1.对象式

//data的对象式写法
new Vue({
    el: '#root',
    data: {
        name:'Vue',
        url: "https://www.baidu.com"
    }
})

2.函数式

//data的函数式01
        new Vue({
            el: '#root',
            data: function (){
                return {
                    name:'Vue',
                    url: "https://www.baidu.com"
                }
            }
        })

//data的函数式02
        new Vue({
            el: '#root',
            data(){
                return {
                    name:'Vue',
                    url: "https://www.baidu.com"
                }
            }
        })

vue绑定原理

<script type="text/javascript">
  let number = 18;
  let person = {
    name:'王八',
    sex:'公的'
  }
  Object.defineProperty(person,'age',{
    // value:18,
    enumerable:true, //控制属性是否可以枚举,默认false
      // writable:true, //控制属性是否可以被修改,默认是false
      configurable:true, //控制属性是否可以被删除,默认是false

      //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值是age的值
      get(){
        console.log('有人读取age属性了')
          return number;
      },
      //当有人读取person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
      set(value) {
      console.log('有人修改age属性了')
      number = value;
    }
  })
</script>

注意:getter setter 方法不能与 value、writable 同时使用

Vue数据代理

image-20210729103443026

Vue事件处理

<div id="box">
        <button v-on:click = 'vue_click'>你好啊!</button>
        <!--传参示例-->
        <button v-on:click = 'vue_click2(99,$event)'>你好2啊!</button>
        <!--简写形式-->
        <button @click = 'vue_click2(99,$event)'>你好2啊!</button>
        <!--阻止事件默认行为-->
        <a href="https://www.baidu.com" @click.prevent="vue_click">你敢点击???</a>
        <!--阻止事件冒泡-->
        <div @click="tanchu">
            <button @click.stop="tanchu">别碰我!!!</button>
        </div>
        <!--监听键盘事件-->
        请输入:<input @keyup="con" type="text" placeholder="请输入......">
        <!--监听键盘回车事件-->
        请输入:<input @keyup.enter="con" type="text" placeholder="请输入......">
        <!--监听键盘组合事件-->
        请输入:<input @keyup.ctrl.q="tanchu" type="text" placeholder="请输入......">
    </div>
    <script>
        new Vue({
            el:'#box',
            methods:{
                vue_click(event){
                    console.log(event.target.innerText)
                    console.log(this) //此处为vue对象
                },
                vue_click2(number,event){
                    console.log(event.target.innerText)
                    console.log(number)
                },
                tanchu(){
                    alert("憋点了!!!")
                },
                con(e){
                    console.log(e.keyCode)
                    console.log(e.target.value)
                }
            }
        })
    </script>

image-20210729112527426

键盘事件

image-20210729113148769

计算属性

计算属性内部有缓存机制,效率更高

<div id="box">
        姓甚?<input type="text" v-model="xing"><br>
        名谁?<input type="text" v-model="ming"><br>
        <h1>{{fullName}}</h1><br>
        <h1>{{fullName}}</h1><br>
        <h1>{{fullName}}</h1>
    </div>
    <script type="text/javascript">
        new Vue({
            el:'#box',
            data:{
                xing:"小猪",
                ming:"佩奇"
            },
            computed:{
                fullName:{
                    //get被调用的时机  1.初次计算fullName的值  2.fullName所依赖的属性发生改变时
                    get(){
                        console.log("getter被调用了")
                        return this.xing+this.ming
                    },
                    //set被调用的时机  当fullName的值发生改变时 不常用(value是被修改的新值)
                    set(value){
                        console.log("setter被调用了")
                    }
                },
                // 简写形式
                fullName01(){
                  return this.xing + this.ming;
                },
                // 简写形式
                fullName02:function (){
                    return this.xing + this.ming;
                }
            }
        })
    </script>

image-20210729135317066

监视属性

1.第一种写法

<script>
        new Vue({
            el:"#box",
            data:{
                age:18
            },
            computed:{
              trueAge:{
                  get(){
                      return this.age + 5;
                  },
                  set(value){
                      this.age = value-5;
                  }
              }
            },
            watch:{
                //监视data中的属性
                age: {
                    immediate:true,//初始化时让handler函数执行一次
                    handler(newValue,oldValue){  //当age发生变化时,handler执行
                        console.log("age被修改了",newValue,oldValue)
                    }
                },
                //监视computed中的属性
                trueAge:{
                    immediate: true,
                    handler(newValue, oldValue) {
                        console.log("实际年龄被修改了",newValue,oldValue)
                    }
                }
            }
        })
    </script>

2.第二种写法

vm.$watch('age',{
            immediate:true,//初始化时让handler函数执行一次
            handler(newValue,oldValue){  //当age发生变化时,handler执行
                console.log("age被修改了",newValue,oldValue)
            }
        })

3.简写形式

watch:{
                //简写形式
                age(newValue,oldValue){
                    console.log("age改变了",newValue,oldValue)
                }
            }

lue,oldValue){ //当age发生变化时,handler执行
console.log(“age被修改了”,newValue,oldValue)
}
})


3.简写形式

```javascript
watch:{
                //简写形式
                age(newValue,oldValue){
                    console.log("age改变了",newValue,oldValue)
                }
            }

本科计算机bi-ye-she-ji辅导,远程安装运行+部署,欢迎各位小伙伴打扰~企鹅号:298-150-5753

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值