【Vue】

什么是Vue

Vue是一款用于构建用户界面的JavaScript框架,它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。Vue是一个JS库,无依赖其他JS库,直接引入一个JS文件就可以使用。Vue具有易于入门、方便与第三方库或已有项目整合以及适合做复杂的单页应用等特点,Vue的核心概念包括组件化、MVVM、响应式虚拟DOM和生命周期。组件化使得开发者可以将一个庞大复杂的前端工程拆分为一个个组件,提高了开发的效率。MVVM模式实现了数据双向绑定,减少了DOM操作,使界面、交互和数据层分离。响应式虚拟DOM则通过只重新加载更改的部分,提高了效率。每个Vue组件都有生命周期,开发者可以在不同阶段进行相应的逻辑处理。

插值表达式

在Vue.js中,插值表达式是一种用于在模板中嵌入JavaScript表达式并显示其结果的方式。插值表达式使用双大括号 {{ }} 来包裹JavaScript表达式,当Vue实例的数据变化时,插值表达式的内容会自动更新

<div id="app">  
  <p>Message: {{ message }}</p>  
</div>  
  
<script>  
  var app = new Vue({  
    el: '#app',  
    data: {  
      message: 'Hello Vue!'  
    }  
  });  
</script>

响应式

在Vue中,响应式(Reactivity)是一个核心概念,它允许数据的变化能够驱动视图的自动更新。这是通过Vue的响应式系统实现的,该系统在Vue实例创建时开始工作,并持续追踪所有被Vue实例观察的数据对象

响应式特点:

  1. 数据驱动视图:当Vue实例中的数据发生变化时,相关的视图部分会自动更新。这是通过Vue的响应式系统实现的,该系统追踪数据的变化并触发视图的重新渲染。
  2. 细粒度更新:Vue的响应式系统只更新实际发生变化的部分,而不是整个页面。这意味着只有依赖于更改数据的视图部分才会被重新渲染,这有助于提高性能。
  3. 深度观察:Vue的响应式系统能够深度观察嵌套的对象和数组,并追踪它们的变化。这意味着即使对象或数组的内部属性发生变化,Vue也能检测到并更新相关的视图。
  4. 异步更新队列:为了优化性能,Vue不会每次数据变化都立即更新视图,而是将多个变更放入一个队列中,并在下一个事件循环“tick”中异步地进行更新。这意味着如果你在同一个事件循环中多次修改数据,Vue只会触发一次视图更新。
  5. 批处理更新:当使用v-for指令渲染一个列表时,如果你修改了多个项目,Vue会尝试批量更新这些项目,而不是为每个更改单独触发一次更新。这有助于减少不必要的计算和DOM操作,提高性能。
  6. 计算属性缓存:计算属性是基于它们的依赖进行缓存的。只有在它的相关依赖发生改变时才会重新求值。这意味着只要计算属性依赖的响应式数据没有变化,多次访问计算属性会立即返回之前缓存的结果,而不会重新执行计算逻辑

Vue指令

Vue提供了许多指令(Directives)来帮助我们更方便地操作DOM和实现特定的功能。以下是一些常用的Vue指令:

  • v-bind:用于属性绑定,可以将数据绑定到元素的属性上。例如,v-bind:src="imageSrc"将imageSrc数据绑定到元素的src属性上。
  • v-model:用于在表单元素上创建双向数据绑定。例如,v-model="message"将message数据与输入框的值进行双向绑定。
  • v-if、v-else-if、v-else:用于条件渲染,根据表达式的值来决定是否渲染元素。
  • v-for:用于列表渲染,可以基于数组或对象渲染一系列的元素。例如,v-for="item in items"将遍历items数组并为每个元素渲染一个元素。
  • v-on:用于监听DOM事件,并在触发时执行一些JavaScript代码。例如,v-on:click="handleClick"将在元素被点击时执行handleClick方法。
  • v-show:根据表达式的值来决定是否显示元素。与v-if不同的是,v-show只是通过CSS的display属性来控制元素的显示与隐藏,而不会销毁和重建DOM元素。
  • v-pre:跳过元素和其子元素的编译过程。可以用来显示原始的Mustache标签。
  • v-cloak:这个指令保持在元素上直到关联实例结束编译。和CSS规则如[v-cloak] { display: none }一起用时,这个指令可以隐藏未编译的Mustache标签直到实例准备完毕。
  • v-once:只渲染元素和组件一次。随后的重新渲染, 元素/组件及其所有的子节点将被视为静态内容并跳过

计算属性

计算属性是Vue中的一个重要概念,它允许你声明一个依赖于组件状态的属性,该属性的值会根据其依赖的数据变化而自动更新。计算属性是基于它们的响应式依赖进行缓存的,只有在相关依赖发生改变时才会重新求值

new Vue({  
  el: '#app',  
  data: {  
    firstName: 'John',  
    lastName: 'Doe'  
  },  
  computed: {  
    fullName: function() {  
      return this.firstName + ' ' + this.lastName;  
    }  
  }  
});

watch监视器

在Vue中,watch选项用于观察和响应Vue实例上的数据变化。当你想要在数据变化时执行异步操作或复杂操作时,可以使用watch

new Vue({  
  el: '#app',  
  data: {  
    message: 'Hello Vue!'  
  },  
  watch: {  
    // 当message数据变化时,这个函数将被调用  
    message: function(newVal, oldVal) {  
      // newVal是数据变化后的新值  
      // oldVal是数据变化前的旧值  
      console.log('Message changed from', oldVal, 'to', newVal);  
      // 你可以在这里执行任何你需要的操作,例如发送请求到服务器  
    }  
  }  
});
watch: {  
  // 监听计算属性的变化  
  computedPropertyName: {  
    handler(newVal, oldVal) {  
      // 执行你的逻辑  
    },  
    // 可以指定深度监听,当嵌套对象发生变化时也会触发  
    deep: true,  
    // 可以指定立即执行监听回调,即在初始化时立即执行一次  
    immediate: true  
  }  
}

生命周期

生命周期指的是 Vue 实例从创建到销毁的整个过程

1.创建阶段:

  • beforeCreate:在实例初始化之后,数据观测 (data observer) 和事件/监听的配置之前被调用。此时,组件的实例已经创建,但尚未挂载到 DOM,$el 属性目前不可见。
  • created:实例创建完成后调用,此阶段完成了数据观测,属性和方法的运算,以及事件监听,$el 属性还没有显示出来。

2.挂载阶段:

  • beforeMount:在挂载开始之前被调用,相关的 render 函数首次被调用。此时模板已经编译完成,但尚未挂载到 DOM。
  • mounted:el 被新创建的 vm.el替换,并挂载到实例上去之后调用该钩子。如果实例被挂载到一个文档内元素上,当mounted被调用时vm.el 也在文档内。

3.更新阶段:

  • beforeUpdate:数据更新时调用,发生在虚拟 DOM 打补丁之前。
  • updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。

4.销毁阶段:

  • beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
  • destroyed:Vue 实例销毁后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/412082.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据可视化--了解数据可视化和Excel数据可视化

目录 1.1科学可视化&#xff1a; 可视化是模式、关系、异常 1.2三基色原理&#xff1a; 三基色:红色、绿色和蓝色 1.3Excel数据可视化 1.3.1 excel数据分析-13个图表可视化技巧 1.3.2 excel数据分析-28个常用可视化图表&#xff08;video&#xff09; 1.3.3Excel可视化…

适配器模式(Adapter Pattern) C++

上一节&#xff1a;原型模式&#xff08;Prototype Pattern&#xff09; C 文章目录 0.理论1.组件2.类型3.什么时候使用 1.实践1.基础接口和类2.类适配器实现3.对象适配器实现 0.理论 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允…

基于JAVA的就医保险管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

B站项目-基于Pytorch的ResNet垃圾图片分类

基于Pytorch的ResNet垃圾图片分类 数据集预处理 画图片的宽高分布散点图 import osimport matplotlib.pyplot as plt import PIL.Image as Imagedef plot_resolution(dataset_root_path):image_size_list []#存放图片尺寸for root, dirs, files in os.walk(dataset_root_pa…

提升Vue3应用效率的秘诀:深入比较ref与reactive!

ref 和 reactive 是 Vue3 中实现响应式数据的核心 API。ref 用于包装基本数据类型&#xff0c;而 reactive 用于处理对象和数组。尽管 reactive 似乎更适合处理对象&#xff0c;但 Vue3 官方文档更推荐使用 ref。 我的想法&#xff0c;ref就是比reactive好用&#xff0c;官方也…

【深度学习】Pytorch教程(十三):PyTorch数据结构:5、张量的梯度计算:变量(Variable)、自动微分、计算图及其可视化

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor&#xff08;张量&#xff09;1. 维度&#xff08;Dimensions&#xff09;2. 数据类型&#xff08;Data Types&#xff09;3. GPU加速&#xff08;GPU Acceleration&#xff09; 2、张量的数学运算1. 向量运算2. 矩阵…

Netty NIO 非阻塞模式

1.概要 1.1 说明 使用非阻塞的模式&#xff0c;就可以用一个现场&#xff0c;处理多个客户端的请求了 1.2 要点 ssc.configureBlocking(false);if(sc!null){ sc.configureBlocking(false); channels.add(sc); }if(len>0){ byteBuffer.flip(); 2.代码 2.1 服务端代码 …

mini-spring|定义标记类型Aware接口,实现感知容器对象

**前言&#xff1a;**如果我们想获得 Spring 框架提供的 BeanFactory、ApplicationContext、BeanClassLoader等这些能力做一些扩展框架的使用时该怎么操作呢。所以我们本章节希望在 Spring 框架中提供一种能感知容器操作的接口&#xff0c;如果谁实现了这样的一个接口&#xff…

智慧城市与数字孪生:共创未来城市新篇章

一、引言 随着科技的飞速发展&#xff0c;智慧城市与数字孪生已成为现代城市建设的核心议题。智慧城市注重利用先进的信息通信技术&#xff0c;提升城市治理水平&#xff0c;改善市民生活品质。而数字孪生则通过建立物理城市与数字模型之间的连接&#xff0c;为城市管理、规划…

docker容器技术(2)

docker容器数据卷 什么是数据卷&#xff1f; 在Docker中&#xff0c;数据卷&#xff08;Data Volumes&#xff09;是一种特殊的目录&#xff0c;可以在容器和主机之间共享数据。它允许容器内的文件持久存在&#xff0c;并且可以被多个容器共享和访问。 数据卷的主要作用如下&am…

jdk21本地执行flink出现不兼容问题

环境说明&#xff1a;换电脑尝尝鲜&#xff0c;jdk&#xff0c;flink都是最新的&#xff0c;千辛万苦把之前的项目编译通过&#xff0c;跑一下之前的flink项目发现启动失败&#xff0c;啥都不说了上异常 Exception in thread "main" java.lang.IllegalAccessError: …

贝叶斯核机器回归拓展R包:bkmrhat

1.摘要 bkmrhat包是用于扩展bkmr包的贝叶斯核机器回归&#xff08;Bayesian Kernel Machine Regression, BKMR&#xff09;分析工具&#xff0c;支持多链推断和诊断。该包利用future, rstan, 和coda包的功能&#xff0c;提供了在贝叶斯半参数广义线性模型下进行identity链接和 …

【kubernetes】二进制部署k8s集群之cni网络插件flannel和calico工作原理

k8s集群的三种接口 k8s集群有三大接口&#xff1a; CRI&#xff1a;容器进行时接口&#xff0c;连接容器引擎--docker、containerd、cri-o、podman CNI&#xff1a;容器网络接口&#xff0c;用于连接网络插件如&#xff1a;flannel、calico、cilium CSI&#xff1a;容器存储…

SPI技术实现对比Java SPI、Spring SPI、Dubbo SPI

概念 SPI机制&#xff0c;全称为Service Provider Interface&#xff0c;是一种服务提供发现机制。 SPI的核心思想是面向接口编程&#xff0c;它允许程序员定义接口&#xff0c;并由第三方实现这些接口。在运行时&#xff0c;SPI机制能够发现并加载所有可用的实现&#xff0c…

文献速递:深度学习--深度学习方法用于帕金森病的脑电图诊断

文献速递&#xff1a;深度学习–深度学习方法用于帕金森病的脑电图诊断 01 文献速递介绍 人类大脑在出生时含有最多的神经细胞&#xff0c;也称为神经元。这些神经细胞无法像我们身体的其他细胞那样自我修复。随着年龄的增长&#xff0c;神经元逐渐死亡&#xff0c;因此变得…

docker小知识:linux环境安装docker

安装必要软件包&#xff0c;执行如下命令 yum install -y yum-utils device-mapper-persistent-data lvm2目的是确保在安装 Docker 之前&#xff0c;系统已经安装了必要的软件包和服务&#xff0c;以支持 Docker 的正常运行。设置yum源&#xff0c;添加Docker官方的CentOS存储…

Open CASCADE学习|GC_MakeArcOfCircle构造圆弧

目录 1、通过圆及圆的两个参数创建圆弧&#xff0c;参数为弧度角 2、通过圆及圆上的一点、圆的1个参数创建圆弧&#xff0c;参数为弧度角&#xff0c;Sense决定方向 3、通过圆及圆上的两个点创建圆弧&#xff0c;Sense决定方向 4、通过三点创建圆弧&#xff0c;最后一点应安…

Mysql 常用数据类型

数值型(整数)的基本使用 如何定义一个无符号的整数 数值型(bit)的使用 数值型(小数)的基本使用 字符串的基本使用 字符串使用细节 日期类型的基本使用

用html编写的小广告板

用html编写的小广告板 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…

【练习——打印每一位数】

打印一个数的每一位 举个例子&#xff1a;我们现在要求打印出123的每一位数字。我们需要去想123%10等于3&#xff0c;就可以把3单独打印出来了&#xff0c;然后再将123/10可以得到12&#xff0c;将12%10就可以打印出2&#xff0c;而我们最后想打印出1&#xff0c;只需要1%10就…