当前位置: 首页 > 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需要判断是应用程序掉线了还…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...