vue-day1

vue2认识

声明式编程:

区分于命令式, 只需要声明数据即可,直接用

    const wm = new Vue({
        el:"#app", // 挂载到#app 模版上
        data:{ // 数据层  Model层
            msg:"hello world"
        }
    })
    let json = { // 数据层  Model层
        msg: "hello world",
        age:18,
        list:["a","b","c","d",'e']
    }

// json已经 被vm对象所管控,只能在#app这个区域使用数据

    const vm = new Vue({
        el: "#app", // 挂载到#app 模版上
        data: json
    })
  console.log(json); // 
  console.log(vm); // 它身上除了有json对象上的属性,还有对应的getter和setter方法
    // 想改变json的msg的值,看看改一下vm(通过改变vm代理对象的 msg属性,照样修改了json对象的数据)
  vm.msg = 'hello vue';// 走setter,
    // Vue2.0 底层使用的Object.defineProperty

MVVM模型

viewmodel 层如何知道数据变化了,更改到view层

  1. vm一旦创建,会将data上的数据数据,作为属性挂载到vm实例对象上(可以通过上述代码 vm.msg)

  1. 内部借助于Object.defineProperty(),将data中的属性遍历,并为每一个属性设置getter和stter方法

  1. 当获取数据时,会调用getter方法,设置数据时,调用setter方法

  1. 设置数据的时候,触发setter方法,setter方法内部 自动触发 watcher方法,进行新旧dom对比,更新渲染到dom上。

vue3认识

三层架构:

Model层:数据层(data 里面的数据)

vm层:控制层

view:视图层

vm层:将model的数据显示到视图层

    Vue.createApp({
        data() {
            return {
                msg: "hello world"//数据写这里
            }
        },
          methods(){
        //方法写这里
        },
           computed: {
            // 对data中数据处理的  (长得像方法,使用起来像属性,计算属性)
         },
    }).mount("#app")//捆绑在这里

模板语法

声明式语法不支持将undefined和null声明式的渲染到页面,但是占了位置,其他都支持

   Vue.createApp({
    data () {
        return {
            msg:"hello",
            num:10,
            flag:true,
            arr:[12,45,56],
            obj:{name:'zs',age:18},
            unde:undefined,
            nu:null
        }
    }
   }).mount("#app")

文本类指令

需求:除了使用{{}} 以外,有没有其他的方式为div设置内容

v-html = 'data中的变量' 写在标签上作为属性

v-text = 'data中的变量' 写在标签上作为属性

常量:字符串常量('字符串') 数字常量(数字) 布尔常量 (true)

v-html = '常量' 写在标签上作为属性

v-text = '常量' 写在标签上作为属性

vue2中 使用v-html和v-text会覆盖掉标签直接的内容( 标签内的内容会忽略)

vue3中,如果使用v-html和v-text,并且标签中有内容,会给你一个提示警告

动态绑定属性:

语法:

v-bind:属性名= "data中的变量"

v-bind:属性名= "常量"

v-bind:src='url'

简写:

:属性名= 'data中的变量'

绑定事件的语法:

v-on:事件类型= "少量的js代码(要求代码是赋值语法)"

v-on:事件类型= "函数名"

v-on:事件类型= "函数名(参数)"

简写:

@事件类型 = "少量的js代码(要求代码是赋值语法)"

@事件类型 = "函数名"

@事件名 = "函数名(参数)"

事件对象如何获取:

如何阻止事件的默认行为 e.preventDefault()

1. 调用时不传参数时,默认就在第一个形参位置就是事件对象

2. 调用时传递参数时,需要手动的 把事件对象$event 放在最后一个参数位置

e.stopPropagation()

事件修饰符:

@事件名.prevent = '事件处理函数'

@事件名.stop = '事件处理函数'

@事件名.prevent.stop = '事件处理函数'

特殊的事件如keyup 事件

按键修改符:

@keyup.enter = '事件处理函数' 抬起时并按下了回车键,就会指向事件处理函数

.enter

.delete (捕获“Delete”和“Backspace”两个按键)

.space (空格键)

.up (上箭头)

.down (下箭头)

.left (左箭头)

.right (右箭头)

配合功能键:

.ctrl 键

.alt 键

.shift 键

.meta 键

需求: 按下enter键的同时按下ctrl键

@keyup.ctrl.enter = ''

条件渲染

v-if

作用:是用来控制标签的显示 和隐藏,

原理:使用的使用js中创建(document.createElement())和删除(ele.remove() ) 耗性能

v-show

作用: 用于控制标签的显示和隐藏

原理: 使用的使用js中display的block和none来控制的

v-if和v-show区别:

原理:

v-if。标签的创建和删除

v-show: 标签显示和隐藏

性能:

1. v-if切换一次就耗费一次性能

2. v-show,只是初始显示时耗费一次性能

安全性(权限控制会体现)

1. v-if要高于v-show

支持写在template标签上

1. v-if支持

2. v-show不支持

优先级

如果v-for的优先级比v-if高,这就意味着v-if将重复的运行于每一个v-for循环中。

vue2中审查元素:v-for的优先级高于v-if

vue3中审查元素:v-if的优先级更高v-for

循环

语法一:遍历数字:

v-for = "item in 数字" :key='唯一的, 有id用id,没有id使用index'

语法二:遍历数组

v-for = "(item,index) in data中的数组" :key='唯一的, 有id用id,没有id使用index'

语法三:遍历对象

v-for = "(value,key) in data中的对象"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值