当前位置: 首页 > news >正文

Vue.js高阶学习和常用知识(二)

目录

      • 1. Vue 实例
      • 2. 组件
      • 3. 指令
      • 4. 计算属性
      • 5. 监听器
      • 6. 生命周期钩子

Vue.js 是一个流行的 Web 前端框架,它由 Evan You 于 2014 年创建。Vue.js 的设计目标是简单、灵活和易于使用,同时具有高性能和可扩展性。
Vue.js 基于组件化的思想,将页面划分为多个组件,每个组件代表页面中的一个部分,可以独立开发、测试和部署。组件之间通过数据传递、事件监听和生命周期钩子等方式相互交互,使得开发人员可以更加方便地构建复杂的 Web 应用程序。
Vue.js 的核心库包括 Vue 实例、组件、指令、计算属性、监听器、生命周期钩子等,这些特性共同构成了 Vue.js 的基本功能。除此之外,Vue.js 还提供了很多插件和工具,例如 Vue Router、Vuex、Vue CLI 等,这些插件和工具可以让开发人员更加方便地开发和部署 Vue.js 应用程序。
在本文中,我们将详细介绍 Vue.js 的核心库和一些常用的插件和工具,帮助读者深入理解 Vue.js 的工作原理和应用场景。

1. Vue 实例

Vue.js 的核心概念之一是 Vue 实例,它是一个代表页面中的一个元素的 JavaScript 对象。每个 Vue 实例都包含一个数据对象、一个方法对象和一个渲染函数。开发人员可以通过 new Vue() 创建一个 Vue 实例,并通过 el 属性将该实例挂载到页面中的某个元素上。
例如,下面的代码创建了一个 Vue 实例,并将其挂载到 id 为 “app” 的元素上:

var app = new Vue({  el: '#app',  data: {  message: 'Hello Vue!',  },  methods: {  reverseMessage: function () {  this.message = this.message.split('').reverse().join('')  }  }  
})  

在 Vue.js 中,开发人员可以通过 data 对象定义 Vue 实例的数据,并通过 methods 对象定义 Vue 实例的方法。Vue 实例的数据和方法可以在模板中使用,例如:

<div id="app">  <p>{{ message }}</p>  <button v-on:click="reverseMessage">Reverse Message</button>  
</div>  

上面的模板中,我们使用了{{ message }}语法来显示 Vue 实例的数据,并使用了 v-on 指令来监听按钮的 click 事件,并调用 Vue 实例的方法 reverseMessage。

2. 组件

Vue.js 的另一个核心概念是组件,组件是 Vue.js 的模板中的基本构建块,可以重复使用和组合。组件是一个 JavaScript 对象,它包含一个模板、一个数据对象、一个方法对象和一个渲染函数。开发人员可以通过 Vue.js 的组件库或者自己编写组件来构建页面。
例如,下面的代码创建了一个名为 “HelloWorld” 的组件,该组件包含一个文本 “Hello World!”:

Vue.component('hello-world', {  template: 'Hello World!',  
})  

在上面的代码中,我们使用了 Vue.js 的组件库中的 hello-world 组件,并将其挂载到页面中的某个元素上。在模板中,我们可以使用该组件来构建页面,例如:

<div id="app">  <hello-world></hello-world>  
</div>  

除了使用组件库中的组件之外,开发人员还可以自己编写组件。自己编写的组件需要使用 Vue.js 的单文件组件 (SFC) 格式来编写,例如:

<template>  <div>  Hello World!  </div>  
</template>
<script>  
export default {  name: 'HelloWorld',  template: '#HelloWorld'  
}
</script>  

在上面的代码中,我们使用了 Vue.js 的 SFC 格式来编写一个名为 “HelloWorld” 的组件,该组件包含一个模板,并在 script 标签中定义了组件的 name 和 template。开发人员可以通过 import 语句将组件导入到其他文件中,并使用 Vue.js 的组件生命周期钩子来控制组件的状态和行为。

3. 指令

Vue.js 的指令是一个特殊的语法,它用于在模板中绑定数据和方法。指令是一个字符串,它包含一个冒号 (😃 和一个方法名称,例如:

<div id="app">  <p v-bind:message="message"></p>  
</div>  

在上面的代码中,我们使用了 v-bind 指令来将 Vue 实例的 message 数据绑定到 p 元素的 message 属性上。这样,当 Vue 实例的 message 数据发生变化时,p 元素的 message 属性也会自动更新。
Vue.js 还提供了许多其他指令,例如 v-if、v-else-if、v-else、v-for、v-show 等,这些指令可以帮助开发人员更方便地操作 DOM 元素和数据。

4. 计算属性

Vue.js 的计算属性是一个特殊的属性,它用于在 Vue 实例中计算和更新数据。计算属性的值可以基于其他属性或者方法的值进行计算,当这些属性或方法的值发生变化时,计算属性的值也会自动更新。
例如,下面的代码定义了一个名为 message 的计算属性,它基于 Vue 实例的 name 属性计算出一个问候语:

var app = new Vue({  el: '#app',  data: {  name: 'John'  },  computed: {  message: function () {  return 'Hello, ' + this.name + '!'  }  }  
})  

在上面的代码中,我们定义了一个 message 计算属性,它基于 Vue 实例的 name 属性计算出一个问候语。当 Vue 实例的 name 属性发生变化时,message 计算属性的值也会自动更新。在模板中,我们可以使用 {{ message }} 语法来显示 message 计算属性的值。

5. 监听器

Vue.js 的监听器是一个特殊的函数,它用于监听 Vue 实例的数据变化。当 Vue 实例的数据发生变化时,监听器函数会被自动调用。监听器函数可以接受一个或多个参数,这些参数表示发生变化的数据。
例如,下面的代码定义了一个名为 message 的监听器,它用于监听 Vue 实例的 message 数据变化:

var app = new Vue({  el: '#app',  data: {  message: 'Hello Vue!'  },  methods: {  reverseMessage: function () {  this.message = this.message.split('').reverse().join('')  }  },  watch: {  message: function (value) {  console.log('Message has changed to: ' + value)  }  }  
})  

在上面的代码中,我们定义了一个 message 监听器,它用于监听 Vue 实例的 message 数据变化。当 Vue 实例的 message 数据发生变化时,watch 函数会被自动调用,并传入发生变化的数据作为参数。

6. 生命周期钩子

Vue.js 的生命周期钩子是一个特殊的函数,它用于控制 Vue 实例的生命周期。生命周期钩子函数可以在 Vue 实例的创建、挂载、更新、销毁等不同阶段被调用。
例如,下面的代码定义了一个名为 beforeCreate 的生命周期钩子,它用于在 Vue 实例创建之前做些准备工作:

var app = new Vue({  el: '#app',  data: {  message: 'Hello Vue!'  },  beforeCreate: function () {  console.log('Before create')  },  created: function () {  console.log('Created')  },  beforeMount: function () {  console.log('Before mount')  },  mounted: function () {  console.log('Mounted')  },  beforeUpdate: function () {  console.log('Before update')  },  updated: function () {  console.log('Updated')  },  beforeDestroy: function () {  console.log('Before destroy')  },  destroyed: function () {  console.log('Destroyed')  }  
})  

在上面的代码中,我们定义了一系列生命周期钩子函数,这些函数分别在 Vue 实例的创建、挂载、更新、销毁等不同阶段被调用。下面是这些生命周期钩子函数的具体调用顺序:

  1. beforeCreate:在 Vue 实例创建之前被调用。此时,组件的 data、methods、computed 等数据都已初始化,但 DOM 元素还未被创建。
  2. created:在 Vue 实例创建完成之后被调用。此时,组件的 data、methods、computed 等数据都已初始化,且 DOM 元素已被创建。
  3. beforeMount:在 Vue 实例的模板编译完成并挂载到页面中之前被调用。此时,组件的模板已经被编译成渲染函数,但尚未将渲染函数挂载到页面中。
  4. mounted:在 Vue 实例的模板编译完成并挂载到页面中之后被调用。此时,组件的模板已经被编译成渲染函数,且渲染函数已被挂载到页面中。
  5. beforeUpdate:在 Vue 实例的数据更新之前被调用。此时,组件的 data 数据即将发生变化,但尚未重新渲染模板。
  6. updated:在 Vue 实例的数据更新之后被调用。此时,组件的 data 数据已经发生变化,且模板已经重新渲染。
  7. beforeDestroy:在 Vue 实例销毁之前被调用。此时,组件实例仍然完全可用,可以访问 data、methods 等数据。
  8. destroyed:在 Vue 实例销毁之后被调用。此时,组件实例已经完全销毁,无法访问 data、methods 等数据。
    通过在这些生命周期钩子函数中添加相应的逻辑,我们可以控制 Vue 实例在不同阶段的行为,例如在创建时做一些初始化操作,在销毁时做一些清理工作等。

相关文章:

Vue.js高阶学习和常用知识(二)

目录 1. Vue 实例2. 组件3. 指令4. 计算属性5. 监听器6. 生命周期钩子 Vue.js 是一个流行的 Web 前端框架&#xff0c;它由 Evan You 于 2014 年创建。Vue.js 的设计目标是简单、灵活和易于使用&#xff0c;同时具有高性能和可扩展性。 Vue.js 基于组件化的思想&#xff0c;将页…...

html实现蜂窝菜单

效果图 CSS样式 keyframes _fade-in_mkmxd_1 {0% {filter: blur(20px);opacity: 0}to {filter: none;opacity: 1} } keyframes _drop-in_mkmxd_1 {0% {transform: var(--transform) translateY(-100px) translateZ(400px)}to {transform: var(--transform)} } ._examples_mkmx…...

云原生训练营课程大纲

第一部分&#xff1a;Go 语****言基础 模块一&#xff1a;Go 语言特性 教学目标&#xff1a; 理解 Go 语言基本语法 理解 Go 语言常用数据类型 理解 Go 语言常用小技巧 深入理解 Go 语言的多线程编程 针对的用户痛点&#xff1a; 云原生从业者因为未熟练掌握 Go 语言&#…...

【Ajax】笔记-同源策略

同源策略(Same-Origin Policy)&#xff0c;是浏览器的一种安全策略 同源&#xff08;即url相同&#xff09;&#xff1a;协议、域名、端口号 必须完全相同。&#xff08;请求是来自同一个服务&#xff09; 跨域&#xff1a;违背了同源策略&#xff0c;即跨域。 ajax请求是遵循…...

Java使用FFmpeg实现mp4转m3u8

Java使用FFmpeg实现mp4转m3u8 前言FFmpegM3U8 一、需求及思路分析二、安装FFmpeg1.windows下安装FFmpeg2.linux下安装FFmpegUbuntuCentOS 三、代码实现1.引入依赖2.修改配置文件3.工具类4.Controlle调用5.Url转换MultipartFile的工具类 四、播放测试1.html2.nginx配置3.效果展示…...

【JavaEE初阶】Servlet (三)MessageWall

在我们之前博客中写到的留言墙页面,有很严重的问题:(留言墙博客) 如果刷新页面/关闭页面重开,之前输入的消息就不见了.如果一个机器上输入了数据,第二个机器上是看不到的. 针对以上问题,我们的解决思如如下: 让服务器来存储用户提交的数据,由服务器保存. 当有新的浏览器打开页…...

D. Make It Round

在Berlandia发生了通货膨胀&#xff0c;所以商店需要改变商品的价格。 商品n的当前价格已经给出。允许将该商品的价格提高k倍&#xff0c;1≤k≤m&#xff0c;k为整数。输出商品的最圆的可能的新价格。也就是在最后有最大数量的零的那个。 例如&#xff0c;数字481000比数字1…...

Python网站页面开发HTML总结

Python网站页面开发HTML总结 一、HTML基础语法 1.HTML是什么&#xff1f; ●HTML是HyperText Mark-up Language的首字母简写&#xff0c;即超文本标记语言。 ●HTML不是一种编程语言&#xff0c;而是一种标记语言。 ●超文本指的是超链接&#xff0c;标记指的是标签&#xf…...

[个人笔记] vCenter设置时区和NTP同步

VMware虚拟化 - 运维篇 第三章 vCenter设置时区和NTP同步 VMware虚拟化 - 运维篇系列文章回顾vCenter设置时区和NTP同步&#xff08;附加&#xff09;ESXi设置alias参考链接 系列文章回顾 第一章 vCenter给虚机添加RDM磁盘 第二章 vCenter回收活跃虚拟机的剩余可用空间 vCente…...

(原创)Flutter与Native通信的方式:EventChannel和BasicMessageChannel

前言 上一篇博客主要介绍了MethodChannel的使用方式 Flutter与Native通信的方式&#xff1a;MethodChannel 这篇博客接着讲另外两种通信方式 EventChannel和BasicMessageChannel EventChannel用于从native向flutter发送通知事件&#xff0c;例如flutter通过其监听Android的重…...

【解决】el-tree报Cannot read property ‘getCheckedKeys‘ of undefined

如果你报错 Cannot read property getCheckedKeys of undefined 或者 Cannot read property getCheckedNodes of undefined 只要在你的在<el-tree>上加个这个&#xff0c;就可以了 ref"tree"...

车载软件架构 —— 信息安全与基础软件

车载软件架构 —— 信息安全与基础软件 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕…...

C\C++内存管理

目录 1.C/C内存分布2.C语言中动态内存管理方式3.C中动态内存管理3.1new/delete内置类型3.2new和delete操作自定义类型 4.operator new与operator delete函数4.2重载operator new与operator delete&#xff08;了解&#xff09; 5.new和delete的实现原理5.1内置类型5.2 自定义类…...

会议室预约系统-检验是否被预约核心SQL

会议室预约时&#xff0c;判断能否被预约&#xff0c;即查询是否已经有预约记录&#xff0c;存在不能被预约。 s,e&#xff1b;表示已经预约的开始结束时间&#xff1b; ns,ne&#xff0c;表示表单提交的预约时间&#xff1b; 只需要(ns,ne)与(s,e)区间没有交集&#xff0c;可…...

C++11类模板

类模板是用来生成类的蓝图&#xff0c;与函数模板的不同之处是&#xff0c;编译器不能为类模板推断模板参数类型。 所以我们在使用类的时候要带上<>并且指定类型如下 vector<int> v; // 需要带上<int> 哦定义类模板 如下&#xff0c;和函数模板差不多都是…...

SpiderFlow爬虫平台(爬虫学习)

申明 作为自己学习的记录,方面后期查阅 官网 SpiderFlow官网 简介 spider-flow 是一个爬虫平台&#xff0c;以图形化方式定义爬虫流程&#xff0c;无需代码即可实现一个爬虫 是使用springboot开发的项目,后端代码直接运行即可使用...

Rime输入法配置

Rime输入法在我电脑上&#xff0c;删了装&#xff0c;装了删&#xff0c;已经反复好几次了。就像是Vim&#xff0c;用它的时候&#xff0c;感觉各种配置太麻烦&#xff0c;想要的功能不知道怎么实现。转用其它编辑器的时候&#xff0c;却又念着它的快捷键和可定制性&#xff0c…...

R语言学习笔记--列表list、数据框

列表 1-列表 列表可以包含不同类型的对象&#xff0c;也就是说&#xff0c;列表不是将某些具体的值组织起来&#xff0c;而是组织R对象。列表将数据组织在一个一维集合中。 列表非常好用&#xff0c;因为它可以装任何类型的对象&#xff0c;不要求数据之间是同质的。 创建列…...

电磁波定义、特性以及信道相关知识

文章目录 前言一、电磁波的定义、特性、波谱1、电磁波的特性2、电磁波谱的划分及用途 二、地球大气层的结构三、电磁波的传播方式1、地波&#xff08;ground-wave&#xff09;2、天波&#xff08;sky-wave&#xff09;3、视线传播&#xff08;line-of-sight&#xff09;①、相关…...

TCP KeepAlive与HTTP Keep-Alive

TCP KeepAlive与HTTP Keep-Alive TCP KeepAliveHTTP Keep-AliveTCP服务器怎么检测客户端断开连接 TCP KeepAlive TCP连接建立之后&#xff0c;如果应用程序或者上层协议一直不发送数据&#xff0c;或者隔很长时间才发送一次数据&#xff0c;那么TCP需要判断是应用程序掉线了还…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...