vue3学习笔记--1.

 一  关于vue对象的绑定和微信小程序的不同点.


在参加字节跳动的暑假训练营组队后,队伍决定用vue完成项目,于是便开始学习vue框架,以下是学习时的一些感想和笔记.

1.和微信小程序不同的是 vue在容器的属性里想要实现动态效果需要这样写:

 <div class="hello">hello,{{name}}
        <div :class="class1">?</div>
        <div v-bind:class="class1">?</div>
    </div>
    <script type="text/javaScript" src="../js/vue.js"></script>
    <script type="text/javaScript">
        Vue.config.productionTip=false
        const  x = new Vue({
            el:'.hello',
            data:{
                name:'李明',
                class1:'你好',
            },
        });
    </script>

而微信小程序可以直接查找变量名:

<view class="list">
  <view class="{{thing[index].str==nowThing ? 'item1':'item'}}" wx:for="{{thing}}" data-index="{{index}}" bindtap="thing">
    {{thing[index].str}}</view>
</view>

*:v-bind:为单向绑定,只能从js指向html,而v-model为双向绑定.但只能用于html中的表单元素元素.

2.一个实例化vue对象只能绑定一个HTML容器,一个HTML容器只能绑定一个vue对象,双方是一一对应关系.

3.vue实例绑定html的两种方法:

 const  x = new Vue({
            el:'.hello',
            data:{
                name:'李明',    
                class1:'你好',
            },
        });

 第二种:更加灵活,可添加其他函数或判断.

      const  x = new Vue({
           // el:'.hello',
            data:{
                name:'李明',    
                class1:'你好',
            },
        });
        setTimeout(() => {
            x.$mount(".hello")
        }, 1000);

4.data的两种写法:

1.

 data:{
                name:'李明',    
                class1:'你好',
            },

2.

  data(){
                return{
                    name:'李明',
                    class1:'你好'
                } 
            }

*:所有由vue管理的函数都不能写成=>函数,因为这样会将this所指从vue替换为Window. 

5.数据代理

Object.defineProperty方法,通过该方法来实现数据代理,通过一个对象代理来对另一个对象的属性来进行(读/写).

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属性,且值是', value)
    number = value
  }

})
// console.log(Object.keys(person))
console.log(person)

posted @ 2023-09-16 17:56  冷月半明  阅读(15)  评论(0编辑  收藏  举报  来源