Vue-2-前端框架Vue基础入门之二

article/2025/8/7 1:12:09

文章目录

  • 1 计算属性
    • 1.1 计算属性简介
    • 1.2 计算属性示例
  • 2 侦听器
    • 2.1 简单的侦听器
    • 2.2 深度监听
    • 2.3 监听对象单个属性
  • 3 vue-cli
    • 3.1 工程化的Vue项目
    • 3.2 Vue项目的运行流程
  • 4 vue组件
    • 4.1 Vue组件的三个部分
      • 4.1.1 template
      • 4.1.2 script
      • 4.1.3 style
    • 4.2 组件之间的关系
      • 4.2.1 使用组件的三个步骤
      • 4.2.2 通过components注册私有子组件
      • 4.2.3 注册全局组件
  • 5 参考附录

计算属性、侦听器的概念。Vue.js开发的标准工具vue-cli。每个vue组件中必须包含template模板结构,而script行为和style样式是可选的组成部分。

1 计算属性

1.1 计算属性简介

计算属性指的是通过一系列运算之后,最终得到一个属性值。
这个动态计算出来的属性值可以被模板结构或methods方法使用。

① 虽然计算属性在声明的时候被定义为方法,但是计算属性的本质是一个属性。
② 计算属性会缓存计算的结果,只有计算属性依赖的数据变化时,才会重新进行运算。

1.2 计算属性示例

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8"><title>Title</title><!-- 1、导入vue.js的script脚本文件 --><script src="./lib/vue.global.js"></script></head><body><!-- 2、声明将要被Vue控制的Dom区域 --><div id="app"><p>message 的值是:{{ formatMessage }}</p></div><!-- 3、创建Vue实例并挂载到指定的Dom区域 --><script>Vue.createApp({data() {return {message: 'hello vue.js'}},computed: {// 计算属性:将 message 首字母大写formatMessage() {const first = this.message.charAt(0).toUpperCase();const other = this.message.slice(1);return first + other;}}}).mount('#app')</script></body>
</html>

在这里插入图片描述

2 侦听器

watch侦听器允许开发者监视数据的变化,从而针对数据的变化做特定的操作。
语法格式如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title><!-- 1、导入vue.js的script脚本文件 --><script src="./lib/vue.global.js"></script></head><body><!-- 2、声明将要被Vue控制的Dom区域 --><div id="app"><p>用户名的值是:{{ username }}</p></div><!-- 3、创建Vue实例并挂载到指定的Dom区域 --><script>Vue.createApp({data() {return {username: 'lucy'}},// 所有的侦听器,都应该被定义到 watch 节点下watch: {// 侦听器本质上是一个函数,要监视哪个数据的变化,就把数据名作为方法名即可// 新值在前,旧值在后username(newVal, oldVal) {cons.log( newVal, oldVal )}}}).mount('#app')</script></body>
</html>

2.1 简单的侦听器

实现了一个简单的侦听器来响应数据的变化!

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title><!-- 1、导入vue.js的script脚本文件 --><script src="./lib/vue.global.js"></script></head><body><!-- 2、声明将要被Vue控制的Dom区域 --><div id="app"><input v-model="inputText" placeholder="输入一些内容"><p>你输入的内容是:{{ inputText }}</p><p>内容的反转版本是:{{ reversedText }}</p></div><!-- 3、创建Vue实例并挂载到指定的Dom区域 --><script>Vue.createApp({data() {return {inputText: '',reversedText: ''}},// 所有的侦听器,都应该被定义到 watch 节点下watch: {// 当 inputText 改变时,触发该函数inputText(newVal) {// 反转输入内容并更新 reversedTextthis.reversedText = newVal.split('').reverse().join('');}}}).mount('#app')</script></body>
</html>

在这里插入图片描述

2.2 深度监听

如果watch侦听的是一个对象,如果对象中的属性值发生了变化,则无法被监听到。此时需要使用deep选项。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title><!-- 1、导入vue.js的script脚本文件 --><script src="./lib/vue.global.js"></script></head><body><!-- 2、声明将要被Vue控制的Dom区域 --><div id="app"><input v-model="user.name" placeholder="输入用户名"><p>当前用户名:{{ user.name }}</p></div><!-- 3、创建Vue实例并挂载到指定的Dom区域 --><script>Vue.createApp({data() {return {user: {name: '张三'}}},// 所有的侦听器,都应该被定义到 watch 节点下watch: {// 深度监听 user 对象user: {handler(newVal) {console.log('user 发生了变化:', newVal);},deep: true, // 开启深度监听immediate: false // 可根据需要设置为 true}}}).mount('#app')</script></body>
</html>

在这里插入图片描述
注意:对象中任何一个属性变化了,都会触发“对象的侦听器”。

2.3 监听对象单个属性

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title><!-- 1、导入vue.js的script脚本文件 --><script src="./lib/vue.global.js"></script></head><body><!-- 2、声明将要被Vue控制的Dom区域 --><div id="app"><input v-model="user.name" placeholder="输入用户名"><hr><input v-model="user.company" placeholder="输入公司"><p>当前用户名:{{ user.name }}</p><p>当前公司:{{ user.company }}</p></div><!-- 3、创建Vue实例并挂载到指定的Dom区域 --><script>Vue.createApp({data() {return {user: {name: '张三', company: '字节跳动'}}},// 所有的侦听器,都应该被定义到 watch 节点下watch: {// 如果要侦听的是对象的子属性的变化,则必须包裹一层单引号'user.name'(newVal) {console.log(newVal)}}}).mount('#app')</script></body>
</html>

在这里插入图片描述

3 vue-cli

单页面应用程序(Single Page Application)简称SPA,顾名
思义,指的是一个Web网站中只有唯一的一个HTML页面,所有的功能与交互都在这唯一的一个页面内完成。

vue-cli是Vue.js开发的标准工具,它简化了程序员基于webpack创建工程化的Vue项目的过程。

3.1 工程化的Vue项目

vue-cli是npm上的一个全局包,使用npm install命令,即可方便的把它安装到自己的电脑上:

npm install -g @vue/cli

基于vue-cli快速生成工程化的Vue项目:

vue create 项目的名称

3.2 Vue项目的运行流程

在工程化的项目中,vue要做的事情很单纯:通过main.js把App.vue渲染到index.html的指定区域中。

其中:
① App.vue用来编写待渲染的模板结构。
② index.html中预留被Vue控制的Dom区域。
③ main.js把App.vue渲染到了index.html所预留的区域中。
在这里插入图片描述

4 vue组件

组件化开发指的是:根据封装的思想,把页面上可重用的UI结构封装为组件,从而方便项目的开发和维护。

vue是一个支持组件化开发的前端框架。
vue中规定:组件的后缀名是.vue。
App.vue文件本质上就是一个vue的组件。

4.1 Vue组件的三个部分

每个.vue组件都由3部分构成,分别是:
template -> 组件的模板结构。
script -> 组件的JavaScript行为。
style -> 组件的样式。
其中,每个组件中必须包含template模板结构,而script行为和style样式是可选的组成部分。

4.1.1 template

vue规定:每个组件对应的模板结构,需要定义到 template节点中。

<template>//模板内容
</template>

(1)template是vue提供的容器标签,只起到包裹性质的作用,它不会被渲染为真正的DOM元素。
(2)template中只能包含唯一的根节点。

4.1.2 script

vue规定:开发者可以在script节点中封装组件的JavaScript业务逻辑。

<script>
// 默认导出。这是固定写法!
export default {// data 数据源// 注意:.vue 组件中的 data 不能像之前一样,不能指向对象。// 注意:组件中的 data 必须是一个函数data() {// 这个 return 出去的 { } 中,可以定义数据return {username: ''}},methods: {changeName() {// 在组件中, this 就表示当前组件的实例对象console.log(this)this.username = '哇哈哈'}},// 当前组件中的侦听器watch: {},// 当前组件中的计算属性computed: {},
}
</script>

4.1.3 style

vue 规定:组件内的style节点是可选的,开发者可以在style节点中编写样式美化当前组件的UI结构。

<style>
.test-box {background-color: pink;
}
</style>

4.2 组件之间的关系

(1)组件在被封装好之后,彼此之间是相互独立的,不存在父子关系。
(2)在使用组件的时候,根据彼此的嵌套关系,形成了父子关系、兄弟关系。

4.2.1 使用组件的三个步骤

在这里插入图片描述

4.2.2 通过components注册私有子组件

在组件A的components节点下,注册了组件F。
则组件F只能用在组件A中;不能被用在组件C中。

4.2.3 注册全局组件

在vue项目的main.js入口文件中,通过Vue.component()方法,可以注册全局组件。
示例代码如下:

// 导入全局组件
import Count from './components/count.vue'
// 注册全局组件
Vue.component('MyCount',Count)

注意:在组件中无需导入注册,即可以标签形式使用main.js中注册的全局组件。

<template><div><MyCount></MyCount></div>
</template>

5 参考附录

参考vue基础入门


http://www.hkcw.cn/article/fJCMEngnQR.shtml

相关文章

LTSPICE仿真电路:(三十二)差动放大器电流源

1.差动放大器电流源 本来是和HOWLAND电流源在一起的&#xff0c;后面想着以后不一定好查找&#xff0c;不如重新另起一篇算了&#xff0c;和前一章的电流源有比较接近的地方&#xff0c;四个电阻直接变成差动放大器内部的东西。 方框中的就是差动放大器&#xff0c;也是负反馈…

Redis 缓存穿透、缓存击穿、缓存雪崩详解与解决方案

在分布式系统中&#xff0c;Redis 凭借高性能和高并发处理能力&#xff0c;成为常用的缓存组件。然而&#xff0c;在实际应用中&#xff0c;缓存穿透、缓存击穿、缓存雪崩这三大问题会严重影响系统的性能与稳定性。本文将详细解析这三个问题的成因&#xff0c;并提供对应的解决…

论文阅读笔记——Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

I3D 论文 UCF-101&#xff08;13000多个视频&#xff09;和 HMDB-51&#xff08;7000多个视频&#xff09;数据集过小&#xff0c;提出了 Kinetics 数据集&#xff0c;并且在其之上预训练之后能够迁移到其他小的数据集。 2DLSTM&#xff1a;使用2D CNN的好处是可以直接从 Ima…

Azure devops 系统之五-部署ASP.NET web app

今天介绍如何通过vscode 来创建一个asp.net web app,并部署到azure 上。 创建 ASP.NET Web 应用 在您的计算机上打开一个终端窗口并进入工作目录。使用 dotnet new webapp 命令创建一个新的 .NET Web 应用,然后将目录切换到新创建的应用。 dotnet new webapp -n MyFirstAzu…

slider滑块async await

isselectionrangeenabled 特色属性 实际场景 视频缓存进度和观看进度 scrollbar 也可以 <StackPanel> <!-- 选择范围头尾相同&#xff0c;但 Slider 仍可操作 --> <Slider IsSelectionRangeEnabled"True" SelectionStart"30" SelectionEn…

LangChain-结合GLM+SQL+函数调用实现数据库查询(一)

业务流程 实现步骤 1. 加载数据库配置 在项目的根目录下创建.env 文件&#xff0c;设置文件内容&#xff1a; DB_HOSTxxx DB_PORT3306 DB_USERxxx DB_PASSWORDxxx DB_NAMExxx DB_CHARSETutf8mb4 加载环境变量&#xff0c;从 .env 文件中读取数据库配置信息 使用 os.getenv…

性能优化 - 工具篇:常用的性能测试工具

文章目录 Pre1. 常用的性能测试工具2. nmon —— 获取系统级性能数据2.1 安装与启动2.2 采样并生成报表 3. jvisualvm —— 获取 JVM 性能数据3.1 启动与连接3.2 CPU 分析&#xff08;Sampler & Profiler&#xff09;3.3 内存监视与 Heap Dump3.4 线程分析 4. JMC&#xff…

箱式不确定集

“箱式不确定集&#xff08;Box Uncertainty Set&#xff09;”可以被认为是一种 相对简单但实用的不确定集建模方式。 ✅ 一、什么是“简单的不确定集”&#xff1f; 在鲁棒优化领域&#xff0c;“简单不确定集”通常指的是&#xff1a; 特点描述形式直观数学表达简洁&#…

GoldenEye

GoldenEye: 1 About Release Back to the Top Name: GoldenEye: 1Date release: 4 May 2018Author: creosoteSeries: GoldenEye 下载&#xff1a; GoldenEye-v1.ova (Size: 805 MB)Download: https://drive.google.com/open?id1M7mMdSMHHpiFKW3JLqq8boNrI95Nv4tqDownload (Mir…

[AI算法] 什么事RoPE scaling

文章目录 RopeScaling 的作用&#x1f4a1; RopeScaling 的核心思想&#xff1a; 常见的 RoPE Scaling 方法Dynamic NTK-Aware Scaling核心原理实现方式&#xff08;伪代码示例&#xff09;优点与效果应用场景总结对比表 YaRN技术 RopeScaling 的作用 ✅ 场景背景&#xff1a;…

功能丰富的PDF处理免费软件推荐

软件介绍 今天给大家介绍一款超棒的PDF工具箱&#xff0c;它处理PDF文档的能力超强&#xff0c;而且是完全免费使用的&#xff0c;没有任何限制。 TinyTools&#xff08;PC&#xff09;这款软件&#xff0c;下载完成后即可直接打开使用。在使用过程中&#xff0c;操作完毕后&a…

统一多模态预训练中的涌现特性

25年5月来自字节、深圳先进技术研究院、Monash 大学、香港科大和 UC Santa Cruz 的论文“Emerging Properties in Unified Multimodal Pretraining”。 统一多模态理解与生成已在尖端专有系统中展现出令人瞩目的能力。本研究的 BAGEL&#xff0c;是一个原生支持多模态理解与生…

从认识AI开始-----Transformer:大模型的核心架构

前言 在NLP领域中&#xff0c;RNN、LSTM及GRU曾是处理序列问题的主力模型&#xff0c;但它们都面临着两个关键问题&#xff1a; 无法并行计算&#xff1a;序列数据需要完成前一步后再处理下一步&#xff0c;这会使得训练效率低下长期依赖问题&#xff1a;即使是LSTM、GRU&…

Mnist手写数字

运行实现&#xff1a; import torch from torch.utils.data import DataLoader from torchvision import transforms from torchvision.datasets import MNIST import matplotlib.pyplot as pltclass Net(torch.nn.Module):#net类神经网络主体def __init__(self):#4个全链接层…

win32相关(互斥体)

互斥体 内核级临界资源怎么处理&#xff1f; 有两个不同进程中的线程&#xff0c;访问内核中的临界资源&#xff0c;该怎么实现线程安全 互斥体其实就是一个内核级的跨进程访问令牌&#xff0c;与在同一个进程中的临界区不同的是&#xff0c;同一个进程中的不同线程&#xff0c…

【配置vscode默认终端为git bash】

配置vscode默认终端为git bash 点击左下角小齿轮&#xff0c;点击设置&#xff0c;搜索terminal.integrated.profiles.windows&#xff0c;点击在setting.json中编辑 第一部分是当前的所有的终端&#xff0c;第二部分是配置默认的终端"terminal.integrated.defaultProfi…

C# 序列化技术全面解析:原理、实现与应用场景

在软件开发中&#xff0c;数据持久化和网络通信是两个至关重要的环节。想象一下&#xff0c;当我们需要将一个复杂的对象保存到文件中&#xff0c;或者通过网络发送到另一台计算机时&#xff0c;如何有效地表示这个对象&#xff1f;这就是序列化技术要解决的问题。序列化&#…

如何检查popover气泡组件样式?调试悬停元素CSS样式的解决方案

1. 问题 当我们要检查这种弹出层的CSS样式时&#xff0c;会发现特别棘手&#xff0c;因为鼠标移走就消失了。如果是display:none控制的&#xff0c;可能还能找到&#xff0c;如果是用js通过v-if控制的&#xff0c;就无法调试了。 2. 解决方案 使用 setTimeout debugger 就…

DDR5 ECC详细原理介绍与基于协议讲解

本文篇幅较长,涉及背景原理介绍方便大家理解其运作方式 以及 基于DDR5协议具体展开介绍。 背景原理介绍 上图参考:DDR 内存中的 ECC 写入操作时,On-die ECC的工作过程如下: SoC将需要写入到Memory中的数据发送给控制器控制器将需要写入的数据直接发送给DRAM芯片在DDR5 DR…

设计模式——外观设计模式(结构型)

摘要 本文介绍了外观设计模式&#xff0c;它是一种结构型设计模式&#xff0c;通过引入一个外观类来封装复杂子系统的调用细节&#xff0c;对外提供简单统一的接口。文中通过生活类比、关键角色介绍、使用场景分析以及结构说明等方面对这一模式进行了全面阐述&#xff0c;还涉…