Vue初学-----模板语法,数据绑定,Object.defineProperty()事件等基础1

简介: Vue初学-----模板语法,数据绑定,Object.defineProperty()事件等基础1

✨初识vue

  • vue工作时,必须先创建Vue实例,且要传入一个配置对象
  • 容器内的代码依然符合html规范,混入了一些特殊的Vue语法
 <div id="root">
        <h1>hello,{{name}}</h1>
  </div>
// 创建一个实例
        new Vue({
            el:'#root',//el用于指定当前vue实例为那个容器使用,值通常为css选择器字符串
            data:{ //data中用于存储数据,数据供el所指定的容器使用
                name:'尚硅谷'
            }
        })
  1. 1.Vue实例和容器是一一对应关系
  2. 2.{{xxx}}中的xxx要写js表达式,xxx可以自动读取到data中的所有属性
  3. 3.data数据一旦发生变化,模板中用到数据的地方也会发生变化

🎈模板语法

插值语法

{{xxx}},常写在标签体内


指令语法
  1. 1.用于解析标签(包括:标签属性、标签体内容、绑定事件…)
  2. 2.形式均为v-xxx,如:v-bind
<div id="root">
      <!-- 指令语法 -->
      <a :href="url.toUpperCase()"></a>//js表达式执行
        <a v-bind:href="url">百度</a>
        <a :href="url">简写,百度</a>
    //使用v-bind指令后,href中的url即为js表达式,此处即为 http://baidu.com
    //v-bind指令可以简写为 :
    </div>
    <script type="text/javascript">
          Vue.config.productionTip = false//防止在vue启动时产生提示
        new Vue({
            el:'#root',
            data:{
                name:'三万小',
                url:'http://baidu.com',
            }
        })
    </script>

🦪数据绑定

单向绑定

v-bind:

  1. 1.数据只能从data流向页面(页面数据改变时,data不改变;data改变页面也改变)
  2. 2.v-bind指令可以简写为 :
双向绑定

v-model:

  1. data数据改变页面数据也改变,修改页面数据也可改变data
  2. 一般应用于表单类元素上(即有value的,如input select等)
    3.v-model:value可简写为 v-model=‘xxx’


👒el和data的两种写法

el

🧨1. new Vue时配置el属性

🧨2.先创建vue实例,通过v.$mount(‘#root’)指定el的值


data

🤞 1. 对象式

🤞2. 函数式(学习组件时必须使用函数式写法)

🤞3. 写函数式时,必须要return返回对象

注:Vue管理的函数,不能写箭头函数,否则this指向不为Vue实例


🍳Object.defineProperty方法

📢1. 定义新属性或修改原有属性

📢2. Object.defineProperty(obj,props,descriptor)

📢3. 返回值是 传入函数的对象

       let person = {
            name:'张三',
            sex:"男"
        }
        // Object.defineProperty(对象名,需添加的属性名,方法属性)
        Object.defineProperty(person,'age',{
            value:'18',//给person添加age:'18'
            // enumerable:true,//控制属性是否可以枚举(遍历),默认值为false
            // writable:true,//控制属性是否可以被修改,默认值为false
            // configurable:true,//控制属性是否可以被删除,默认值为属性
    }


getter函数实现了,读取age时实际读取的是number

setter函数实现了,修改age时,将age值给了number


👕Vue中的数据代理🎉✨

1.通过vm对象代理data对象中属性的操作,能够更加方便的操作data中的数据

2.通过Object.definePropery()把data对象中所有属性添加到vm上

3.为每一个添加到vm上的属性,都指定getter,setter

  在getter和setter内部操作(读/写)data中的属性

4.vm._data相当于data


👣事件处理

📢 1. 使用v-on:click='xxx’或者@click=‘xxx’绑定事件,其中xxx为事件名

📢 2. 事件的回调需要配置在methods对象中,最终在vm上

📢 3. methods中的函数不能用箭头函数,否则this就不是vm

📢 4. 传参时 @click='xxx(参数)'的格式,其中event为@click=‘xxx($event)’


🎀事件修饰符

  • prevent:阻止默认行为

事件修饰符可以连写

  • stop: 阻止事件冒泡
  • once: 事件只触发一次

即按钮只生效一次


  • capture: 使用事件捕捉模式
  • self: 只有event.target时当前操作的元素是才触发事件
  • passive: 事件的默认行为立即执行,无需等待事件回调函数

🥊键盘事件

常用按键名

Vue常用按键名:

  1. 1.回车 => enter
  2. 2.删除 =>delete
  3. 3.退出 => esc
  4. 4.空格 => space
  5. 5.换行 => tab(必须绑定keydown事件才管用)
  6. 6.上 => up
  7. 7.下 => down
  8. 8.左 => left
  9. 9.右 => right

特殊按键(修饰键)名

ctrl、alt、shift、meta的使用

  1. keyup事件:在按下修饰键时,再按下其他键,随后释放其他键,事件被触发
  2. keydown事件:可直接使用

设置只有其他键为y时才能触发事件,其他键都不可以

定义命名(不常用)

Vue.config.keyCodes.自定义键名 = 键名对应的键码

注:Vue未提供别名的按键,可直接使用原始按键名,但注意要写成kebab-case格式(如CapsLock写成caps-lock)

🎉🎉🎉第一部分完结,如有错误,请评论指出,谢谢~👀👀

🍭🍭🍭创作不易,如对您有帮助,欢迎给博主点赞收藏,给予鼓励哟💛

相关文章
|
28天前
|
敏捷开发 人工智能 JavaScript
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
Figma-Low-Code 是一个开源项目,能够直接将 Figma 设计转换为 Vue.js 应用程序,减少设计师与开发者之间的交接时间,支持低代码渲染和数据绑定。
74 3
Figma-Low-Code:快速将Figma设计转换为Vue.js应用,支持低代码渲染、数据绑定
|
1月前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
2月前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
67 8
|
2月前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
2月前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
2月前
|
JavaScript 索引
Vue 3.x 版本中双向数据绑定的底层实现有哪些变化
从Vue 2.x的`Object.defineProperty`到Vue 3.x的`Proxy`,实现了更高效的数据劫持与响应式处理。`Proxy`不仅能够代理整个对象,动态响应属性的增删,还优化了嵌套对象的处理和依赖追踪,减少了不必要的视图更新,提升了性能。同时,Vue 3.x对数组的响应式处理也更加灵活,简化了开发流程。
|
2月前
|
JavaScript
Vue 双向数据绑定原理
Vue的双向数据绑定通过其核心的响应式系统实现,主要由Observer、Compiler和Watcher三个部分组成。Observer负责观察数据对象的所有属性,将其转换为getter和setter;Compiler解析模板指令,初始化视图并订阅数据变化;Watcher作为连接Observer和Compiler的桥梁,当数据变化时触发相应的更新操作。这种机制确保了数据模型与视图之间的自动同步。
|
3月前
|
JavaScript UED
Vue双向数据绑定的原理
【10月更文挑战第7天】
|
3月前
|
JavaScript
Vue组件点击事件不触发的问题,添加事件修饰符native解决
Vue组件点击事件不触发的问题,添加事件修饰符native解决
501 0
|
3月前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
77 0

热门文章

最新文章