Vue学习笔记 - 互动教程 01

为了快速熟悉Vue,学习下互动教程。

早上出门有事情,没学完,学到哪算哪

互动教程(Vue3)

声明式渲染

Vue 的核心功能是声明式渲染:通过扩展于标准 HTML 的模板语法,我们可以根据 JavaScript 的状态来描述 HTML 应该是什么样子的。当状态改变时,HTML 会自动更新。

能在改变时触发更新的状态被认为是响应式的。在 Vue 中,响应式状态被保存在组件中。

小结

  1. 使用 data 组件选项来声明响应式状态,该选项应该是一个返回对象的函数
  2. 使用双花括号"{{ “状态值” }}"渲染文本(双大括号写法又名:mustache语法)
  3. 双花括号中的内容并不只限于标识符或路径——我们可以使用任何有效的 JavaScript 表达式
<script>
export default {
  // 返回一个Object,其中name属性的"状态"/值是字符串"张三"
  data() {
    return {
        name:"Zhangsan",
        gender:"male"
    }
  }
}
</script>

<template>
  // 渲染name属性
  <h1>{{ name }}</h1>
  <h1>{{ gender }}</h1>
  <h1>{{ this.gender.split('') }}</h1>
</template>

2025-04-07 08.53.40.png

Attribute 绑定

在 Vue 中,mustache 语法 (即双大括号) 只能用于文本插值。为了给 attribute 绑定一个动态值,需要使用 v-bind 指令:

<div v-bind:id="dynamicId"></div>

示例代码
要求: 把一个动态的 class 绑定添加到这个 <h1> 上,并使用 titleClass 的数据属性作为它的值。如果绑定正确,文字将会变为红色

<div v-bind:id="dynamicId"></div>
# 简写
<div :id="dynamicId"></div>
<script>
export default {
  data() {
    return {
      titleClass: 'title'
    }
  }
}
</script>

<template>
  <h1>Make me red</h1> <!-- 此处添加一个动态 class 绑定 -->
</template>

<style>
.title {
  color: red;
}
</style>

这个一开始没理解

# 这样写没有效果,看了参考答案明白了
<h1 :id="titleClass">Make me red</h1>

要延伸一下,JS可以通过 id,class,name 等找到页面的元素,示例只是以id为例,所以有个title的样式,就明白v:bind绑定了

<h1 :class="titleClass">Make me red</h1> 

2025-04-07 09.11.50.png

再验证下,绑定id

<script>
export default {
  data() {
    return {
      titleClass: 'title',
      today:'mondy'
    }
  }
}
</script>

<template>
  <h1 :class="titleClass">Make me red</h1> 
  <h1 :id="today">Make me green</h1> 
</template>

<style>
.title {
  color: red;
}
#mondy {
	color: green;    
}
</style>

2025-04-07 09.22.19.png

小结:

  1. 使用 v-bind:id=“dynamicId” 绑定元素,可以给属性一个动态值
  2. v-bind:id=“dynamicId” 可以简写为 :id=“dynamicId”

事件监听

可以使用 v-on 指令监听 DOM 事件

<button v-on:click="increment">{{ count }}</button>

简写

<button @click="increment">{{ count }}</button>

实现一个点击自增的按钮效果

<script>
export default {
  data() {
    return {
      count: 0
    }
  },
  methods: {
    increment() {
      this.count++
    },
    incremetMore() {
      this.count += 2
    }
  }
}
</script>

<template>
  <button @click="incremetMore">Count is: {{ count }}</button>
</template>

2025-04-07 09.33.58.png

小结:

  1. 使用 v-on:click=“方法名” 监听点击事件
  2. v-on:click="方法名"可以简写为 @click=“方法名”
  3. methods里定义方法列表

表单绑定

可以同时使用 v-bind 和 v-on 来在表单的输入元素上创建双向绑定

<input :value="text" @input="onInput">
methods: {
  onInput(e) {
    // v-on 处理函数会接收原生 DOM 事件
    // 作为其参数。
    this.text = e.target.value
  }
}

为了简化双向绑定,Vue 提供了一个 v-model 指令,它实际上是上述操作的语法糖:

<input v-model="text">

示例代码

<script>
export default {
  data() {
    return {
      text: ''
    }
  },
  methods: {
    onInput(e) {
      this.text = e.target.value
    }
  }
}
</script>

<template>
  // 双向绑定: input通过:value绑定(bind)了状态值里的text,input事件触发methods里的onInput方法
  <input :value="text" @input="onInput" placeholder="Type here">
  <p>{{ text }}</p>
</template>

使用v-model进行简写

<script>
export default {
  data() {
    return {
      text: ''
    }
  }
}
</script>

<template>
  // 双向绑定: input通过:value绑定(bind)了状态值里的text,input事件触发methods里的onInput方法
  <input v-model="text" placeholder="Type here">
  <p>{{ text }}</p>
</template>

2025-04-07 09.42.03.png

小结:

  1. 使用 v-model=“状态值”,可以实现双向绑定,支持文本输入框,多选框、单选框、下拉框 – 开发时更关注状态的变化,建立绑定很多时候是必要的苦力活

条件渲染

可以使用 v-if 指令来有条件地渲染元素

<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no 😢</h1>

这个没啥好说的,很自然的逻辑,过一下用例即可

<script>
export default {
  data() {
    return {
      awesome: true
    }
  },
  methods: {
    toggle() {
      // ...
    }
  }
}
</script>

<template>
  <button @click="toggle">Toggle</button>
  <h1>Vue is awesome!</h1>
  <h1>Oh no 😢</h1>
</template>

示例程序同时展示了两个 <h1> 标签,并且按钮不执行任何操作。尝试给它们添加 v-ifv-else 指令,并实现 toggle() 方法,让我们可以使用按钮在它们之间切换。

<script>
export default {
  data() {
    return {
      awesome: true
    }
  },
  methods: {
    toggle() {
      // 值取反
      this.awesome = !this.awesome
    }
  }
}
</script>

<template>
  <button @click="toggle">Toggle</button>
  <h1 v-if="awesome">Vue is awesome!</h1>
  <h1 v-else>Oh no 😢</h1>
</template>

小结:

  1. 可以使用v-if="状态值",v-else 实现根据状态值来执行不同的操作

参考

  1. Vue互动教程
### Vue3 和腾讯云学习教程 #### 使用腾讯云存储服务优化图片管理 为了提高应用性能并降低自建服务器的压力,在开发过程中可以考虑利用第三方云服务平台来处理多媒体资源。对于图片这类静态文件而言,腾讯云提供了专门的对象存储解决方案 COS (Cloud Object Storage),能够有效解决大规模图像托管的需求[^1]。 #### 部署基于Vue.js的应用至腾讯云环境 当构建完成了一个完整的Web应用程序之后,将其部署上线成为了一项重要工作。针对前后端分离架构下的项目,如采用Vue作为前端框架的情况,可以选择将前端部分通过腾讯云提供的静态网站托管功能发布出去;而后端则继续探索如何借助该平台实现Spring Boot微服务及其关联数据库的有效部署[^2]。 #### 实现直播互动特性——监听播放状态变化事件 随着在线教育、娱乐等行业的发展壮大,“直播”逐渐成为了不可或缺的功能模块之一。在集成此类组件时可能会遇到一些挑战,比如怎样捕捉到视频流结束这一特定时刻?此时可以通过结合JavaScript中的防抖机制与TcPlayer API所提供的回调函数共同作用达成目标[^3]。 #### 解决常见兼容性问题——确保跨浏览器一致性体验 由于不同版本浏览器间存在差异,因此在实际编码阶段难免会碰到诸如`cannot read property 'nodeName' of null`这样的报错提示。为了避免上述情况的发生,应当遵循先加载外部依赖库再创建DOM节点最后执行初始化逻辑的原则来进行页面渲染流程的设计[^4]。 ```javascript // 正确顺序示例代码 import { onMounted } from 'vue'; onMounted(() => { // 加载腾讯视频代码... const videoContainer = document.getElementById('video-container'); if (!videoContainer) throw new Error('Video container not found!'); // 初始化 TCPlayer ... }); ``` #### 探索更多实践案例和技术文档 除了以上提到的知识点外,还有许多值得深入探讨的主题等待着开发者们去挖掘。例如:如何更好地运用CDN加速分发网络提升用户体验;或是掌握Serverless无服务器计算模式下快速搭建RESTful API接口的方法论等等。官方技术博客和社区论坛都是获取最新资讯的理想场所。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值