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 实例的创建、挂载、更新、销毁等不同阶段被调用。下面是这些生命周期钩子函数的具体调用顺序:
- beforeCreate:在 Vue 实例创建之前被调用。此时,组件的 data、methods、computed 等数据都已初始化,但 DOM 元素还未被创建。
- created:在 Vue 实例创建完成之后被调用。此时,组件的 data、methods、computed 等数据都已初始化,且 DOM 元素已被创建。
- beforeMount:在 Vue 实例的模板编译完成并挂载到页面中之前被调用。此时,组件的模板已经被编译成渲染函数,但尚未将渲染函数挂载到页面中。
- mounted:在 Vue 实例的模板编译完成并挂载到页面中之后被调用。此时,组件的模板已经被编译成渲染函数,且渲染函数已被挂载到页面中。
- beforeUpdate:在 Vue 实例的数据更新之前被调用。此时,组件的 data 数据即将发生变化,但尚未重新渲染模板。
- updated:在 Vue 实例的数据更新之后被调用。此时,组件的 data 数据已经发生变化,且模板已经重新渲染。
- beforeDestroy:在 Vue 实例销毁之前被调用。此时,组件实例仍然完全可用,可以访问 data、methods 等数据。
- destroyed:在 Vue 实例销毁之后被调用。此时,组件实例已经完全销毁,无法访问 data、methods 等数据。
通过在这些生命周期钩子函数中添加相应的逻辑,我们可以控制 Vue 实例在不同阶段的行为,例如在创建时做一些初始化操作,在销毁时做一些清理工作等。
相关文章:
Vue.js高阶学习和常用知识(二)
目录 1. Vue 实例2. 组件3. 指令4. 计算属性5. 监听器6. 生命周期钩子 Vue.js 是一个流行的 Web 前端框架,它由 Evan You 于 2014 年创建。Vue.js 的设计目标是简单、灵活和易于使用,同时具有高性能和可扩展性。 Vue.js 基于组件化的思想,将页…...
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…...
云原生训练营课程大纲
第一部分:Go 语****言基础 模块一:Go 语言特性 教学目标: 理解 Go 语言基本语法 理解 Go 语言常用数据类型 理解 Go 语言常用小技巧 深入理解 Go 语言的多线程编程 针对的用户痛点: 云原生从业者因为未熟练掌握 Go 语言&#…...
【Ajax】笔记-同源策略
同源策略(Same-Origin Policy),是浏览器的一种安全策略 同源(即url相同):协议、域名、端口号 必须完全相同。(请求是来自同一个服务) 跨域:违背了同源策略,即跨域。 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发生了通货膨胀,所以商店需要改变商品的价格。 商品n的当前价格已经给出。允许将该商品的价格提高k倍,1≤k≤m,k为整数。输出商品的最圆的可能的新价格。也就是在最后有最大数量的零的那个。 例如,数字481000比数字1…...
Python网站页面开发HTML总结
Python网站页面开发HTML总结 一、HTML基础语法 1.HTML是什么? ●HTML是HyperText Mark-up Language的首字母简写,即超文本标记语言。 ●HTML不是一种编程语言,而是一种标记语言。 ●超文本指的是超链接,标记指的是标签…...
[个人笔记] vCenter设置时区和NTP同步
VMware虚拟化 - 运维篇 第三章 vCenter设置时区和NTP同步 VMware虚拟化 - 运维篇系列文章回顾vCenter设置时区和NTP同步(附加)ESXi设置alias参考链接 系列文章回顾 第一章 vCenter给虚机添加RDM磁盘 第二章 vCenter回收活跃虚拟机的剩余可用空间 vCente…...
(原创)Flutter与Native通信的方式:EventChannel和BasicMessageChannel
前言 上一篇博客主要介绍了MethodChannel的使用方式 Flutter与Native通信的方式:MethodChannel 这篇博客接着讲另外两种通信方式 EventChannel和BasicMessageChannel EventChannel用于从native向flutter发送通知事件,例如flutter通过其监听Android的重…...
【解决】el-tree报Cannot read property ‘getCheckedKeys‘ of undefined
如果你报错 Cannot read property getCheckedKeys of undefined 或者 Cannot read property getCheckedNodes of undefined 只要在你的在<el-tree>上加个这个,就可以了 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(了解) 5.new和delete的实现原理5.1内置类型5.2 自定义类…...
会议室预约系统-检验是否被预约核心SQL
会议室预约时,判断能否被预约,即查询是否已经有预约记录,存在不能被预约。 s,e;表示已经预约的开始结束时间; ns,ne,表示表单提交的预约时间; 只需要(ns,ne)与(s,e)区间没有交集,可…...
C++11类模板
类模板是用来生成类的蓝图,与函数模板的不同之处是,编译器不能为类模板推断模板参数类型。 所以我们在使用类的时候要带上<>并且指定类型如下 vector<int> v; // 需要带上<int> 哦定义类模板 如下,和函数模板差不多都是…...
SpiderFlow爬虫平台(爬虫学习)
申明 作为自己学习的记录,方面后期查阅 官网 SpiderFlow官网 简介 spider-flow 是一个爬虫平台,以图形化方式定义爬虫流程,无需代码即可实现一个爬虫 是使用springboot开发的项目,后端代码直接运行即可使用...
Rime输入法配置
Rime输入法在我电脑上,删了装,装了删,已经反复好几次了。就像是Vim,用它的时候,感觉各种配置太麻烦,想要的功能不知道怎么实现。转用其它编辑器的时候,却又念着它的快捷键和可定制性,…...
R语言学习笔记--列表list、数据框
列表 1-列表 列表可以包含不同类型的对象,也就是说,列表不是将某些具体的值组织起来,而是组织R对象。列表将数据组织在一个一维集合中。 列表非常好用,因为它可以装任何类型的对象,不要求数据之间是同质的。 创建列…...
电磁波定义、特性以及信道相关知识
文章目录 前言一、电磁波的定义、特性、波谱1、电磁波的特性2、电磁波谱的划分及用途 二、地球大气层的结构三、电磁波的传播方式1、地波(ground-wave)2、天波(sky-wave)3、视线传播(line-of-sight)①、相关…...
TCP KeepAlive与HTTP Keep-Alive
TCP KeepAlive与HTTP Keep-Alive TCP KeepAliveHTTP Keep-AliveTCP服务器怎么检测客户端断开连接 TCP KeepAlive TCP连接建立之后,如果应用程序或者上层协议一直不发送数据,或者隔很长时间才发送一次数据,那么TCP需要判断是应用程序掉线了还…...
Taotoken的稳定性与低延迟在实时对话应用中的实际体验
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的稳定性与低延迟在实时对话应用中的实际体验 在开发需要快速响应的AI聊天应用时,后端API的稳定性和延迟表现是…...
CA-CFAR、GO-CFAR、SO-CFAR怎么选?一张图看懂三种恒虚警检测算法的适用场景与避坑指南
CA-CFAR、GO-CFAR、SO-CFAR工程选型指南:从算法原理到场景适配 雷达信号处理工程师常常面临一个经典难题:在复杂环境中如何选择合适的恒虚警检测算法?当海面杂波、多目标干扰或低信噪比条件同时出现时,CA、GO、SO三种CFAR变体的性…...
3步开启Windows 11安卓应用新体验:WSA完整使用指南
3步开启Windows 11安卓应用新体验:WSA完整使用指南 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for Android(简…...
AI 如何改变软件工程:Martin Fowler 视角 + 实战洞见
AI 如何改变软件工程:Martin Fowler 视角 实战洞见 AI(尤其是 LLM)是软件工程自高级语言(从汇编到 C/Fortran)以来最大的转变。它引入了非确定性(Non-deterministic)编程,改变了从编…...
失传34年的南极DOS游戏LAN - LOK重见天日,背后藏着怎样的历史?
LAN - LOK:失传34年的南极DOS破坏游戏这是一次对历史进行重构(或许还会进行现代化改造)的尝试。AlphaPixel常处理遗留代码库,接触到80年代和90年代用各种方言和语言编写、存储在难处理容器和介质中的代码。因保密协议,…...
Oracle数据库的DBCA界面创建数据库
一、采用DBCA界面方式创建数据库搜索dbca用管理员去运行疯狂的点下一步采用默认就行到监听这里会出有一些问题出问题了先把Enterprise Manager关掉就行,出问题了能自己找出来就行,一般不建议关掉,我这里直接图方便了这里选择所有账号使用同一…...
为什么iOS越狱依然充满魔力?揭秘现代越狱技术的创新突破
为什么iOS越狱依然充满魔力?揭秘现代越狱技术的创新突破 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder 👇 项目地址…...
Construct3新手避坑指南:为什么你的射击游戏角色总卡住动不了?
Construct3射击游戏开发实战:角色卡顿问题深度排查手册刚完成第一个Construct3射击游戏demo的兴奋感,往往会被运行时角色突然卡住的尴尬瞬间浇灭。这不是教程里承诺的流畅体验——你的主角在关键时刻僵在原地,子弹发射延迟,敌人却…...
2026年装订机工厂选择:最新权威排名与专业推荐。
在当前的广东装订机工厂领域,市场环境正经历着前所未有的变革。随着技术进步和市场需求的不断变化,传统的选择标准已经难以满足现代企业的复杂需求。许多企业在选择装订机供应商时,往往陷入“价值陷阱”或“认知误区”,导致投资回…...
为什么你需要一个独立的PCK文件处理工具?3个自动化工作流解析
为什么你需要一个独立的PCK文件处理工具?3个自动化工作流解析 【免费下载链接】GodotPckTool Standalone tool for extracting and creating Godot .pck files 项目地址: https://gitcode.com/gh_mirrors/go/GodotPckTool 在Godot游戏开发中,PCK资…...
