今日-Vue框架

news2024/11/25 10:10:55

什么是VUE框架?

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。Vue 的核心是一个响应的数据绑定系统,它让数据与 DOM 保持同步非常简单。Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。它不仅易于上手,还便于与第三方库或既有项目整合。Vue 也被称为渐进式框架,因为它可以自底向上逐层应用,适用于不同的项目规模和需求,从简单的页面到复杂的单页应用。Vue 的设计非常注重灵活性和“可以被逐步集成”这个特点。关于定义,这个在很多地方都可以搜的到类似的内容,我觉得有点烦这个定义,简单点理解,就是VUE框架就一个软件或网页的结构,就是大楼的内部的墙体,柱子等,我们需要在这个基础上对这个楼进一步进行装修,精加工,开拓出更多的功能、更加美观、甚至是更加坚固。

VUE框架的架构模式(MVVM)

其实,我觉得和python中的Django框架有点像。

  1. Model(模型)
    • 通常指的是数据层,也就是应用程序的状态。在Vue中,这通常是一个JavaScript对象,它包含了应用程序的数据。在单文件组件中,这个模型位于data函数返回的对象中,或者在Vuex中,它位于state对象中。
  2. View(视图)
    • 在Vue中,视图是通过模板(template)来定义的。模板是HTML代码,它使用Vue的模板语法来声明式地绑定数据和指令,从而将模型的数据展示给用户。
  3. ViewModel(视图模型)
    • 在Vue中,ViewModel的概念被组件本身所取代。组件的datacomputedmethodswatch等选项可以看作是ViewModel的一部分,它们定义了如何响应数据变化和如何与视图交互。ViewModel的逻辑部分主要在组件的methodscomputed属性中实现。

简单代码示例:

<template>
  <!-- View(视图): 使用模板语法绑定数据和事件 -->
  <div>
    <h1>{{ message }}</h1>
    <button @click="updateMessage">Change Message</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      // Model(模型): 应用程序的状态
      message: 'Hello, Vue!'
    };
  },
  computed: {
    // ViewModel(视图模型): 计算属性可以看作是ViewModel的一部分
    reversedMessage() {
      return this.message.split('').reverse().join('');
    }
  },
  methods: {
    // ViewModel(视图模型): 方法也可以看作是ViewModel的一部分
    updateMessage() {
      this.message = 'Vue is awesome!';
    }
  }
};
</script>

MVVM 模式的工作原理如下: 用户与视图进行交互,例如点击按钮、输入文本等。 视图将用户的操作传递给视图模型。 视图模型根据用户的操作更新模型。 模型的变化会触发视图模型的更新。 视图模型将更新后的模型数据传递给视图。 视图根据新的数据更新自己的显示。 这种模式的好处是,它允许开发者将业务逻辑和用户界面分离开来,使得代码更加清晰和易于维护。同时,由于视图和模型之间的通信是通过视图模型进行的,这也使得单元测试变得更加容易。 在你的代码示例中,虽然没有直接体现 MVVM 模式的实现,可以通过 Vue 的指令和方法来实现数据的双向绑定和事件处理,这是 MVVM 模式的核心特性之一。说到这里,我更加觉得和python的django框架在特性上很相似。

常见的Vue指令

关于常见的v命令,这里以v-bind、v-on、v-if、v-show、v-model和v-for

v-bind: 绑定的是元素的属性,比如超链接href

v-on:

绑定的是方法(函数),经常用于事件监听机制

v-if:

包括v-else-if、v-else,判断是否符合条件以判断是否进行渲染

v-show:

和v-if类似,但是不一样的是v-show是根据条件决定是否通过 CSS 的 display 属性来显示或隐藏元素。元素始终会被渲染,只是不符合条件的元素会被隐藏。

v-model:

在表单元素上创建双向数据绑定,我觉得这个很有意思

v-for:

实现循环渲染数据,比如数组的数据的渲染

VUE的生命周期

提供了一套生命周期钩子(lifecycle hooks),允许我们在不同阶段执行代码。以下是Vue组件的生命周期钩子及其特点:

这个周期一直搞得我很烦啊!我一直很好奇为什么叫钩子?

创建阶段

挂载阶段

更新阶段

销毁阶段 这四个大阶段也可以分为八个阶段:

  1. beforeCreate(创建前)
    • 在实例初始化之后,数据观测(data observer)和event/watcher事件配置之前被调用。
    • 在这个阶段,组件实例的datamethodswatch等属性还未被初始化,因此不能访问。
  2. created(创建后)
    • 实例已经创建完成之后被调用,此时已经完成了数据观测,属性和方法的运算,watch/event事件回调。
    • 这个阶段不能访问$el属性,因为DOM还未被渲染。
    • 可以访问datamethods
  3. beforeMount(挂载前)
    • 在挂载开始之前被调用,相关的render函数首次被调用。
    • $el属性对模板的DOM还未生成,挂载阶段还没开始。
    • 组件的data已经被设置,但是DOM还未渲染,所以$el不可见。
  4. mounted(挂载后)
    • 实例被挂载后调用,$el属性包含了模板的DOM。
    • 可以访问到DOM元素,执行DOM操作。
    • 适用于执行依赖于DOM的操作,如使用this.$refs
  5. beforeUpdate(更新前)
    • 数据更新时调用,发生在虚拟DOM打补丁之前。
    • 可以在这个钩子中进一步地更改状态,这不会触发额外的更新循环。
  6. updated(更新后)
    • 由于数据更改导致的虚拟DOM重新渲染和打补丁后调用。
    • 可以执行依赖于DOM更新后的操作。
    • 此时$el和数据已经更新,可以执行DOM操作。
  7. beforeDestroy(销毁前)
    • 实例销毁之前调用,此时实例仍然完全可用。
    • 在这一步,实例仍然连接到父实例,并且$el仍然存在。
    • 可以执行清理工作,如解绑事件。
  8. destroyed(销毁后)
    • 实例销毁后调用,调用后,Vue实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

    • 这个阶段实例不可用,$el和数据已经不可访问。
  9. activated 和 deactivated(活动/非活动状态切换)
    • 这两个钩子是专门为<keep-alive>元素设计的。
    • activated在组件被激活时调用。
    • deactivated在组件被停用时调用。
  10. errorCaptured(错误捕获)
    • 当捕获一个来自子孙组件的错误时被调用。
    • 可以访问err(错误对象)、vm(抛出错误的组件实例)和info(包含错误来源信息的字符串)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】list模拟实现(详解)

本篇来详细说一下list的模拟实现&#xff0c;list的大体框架实现会比较简单&#xff0c;难的是list的iterator的实现。我们模拟实现的是带哨兵位头结点的list。 1.准备工作 为了不和C库里面的list冲突&#xff0c;我们在实现的时候用命名空间隔开。 //list.h #pragma once #…

shell脚本(6)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shell(6)if条件判断与for循环结构_哔哩哔哩_bilibili 本文主要讲解shell脚本中的if条件判断和for循环结构。 一、if语句 Shell 脚本中的 if 语句…

JavaScript基础 document.write()方法

JavaScript基础 document.write方法 1.简单认识document.write()2.document.write() 的使用 1.简单认识document.write() document.write() 是一种 JavaScript 方法&#xff0c;用于将内容直接写入到 HTML 文档中。它可以用来动态地在页面加载时插入文本、HTML 代码、图片等内…

Linux笔记---进程:进程切换与O(1)调度算法

1. 补充概念 1.1 并行与并发 竞争性&#xff1a;系统进程数目众多&#xff0c;而CPU资源只有少量&#xff0c;甚至只有1个&#xff0c;所以进程之间是具有竞争属性的。为了高效完成任务&#xff0c;更合理竞争相关资源&#xff0c;便具有了优先级。独立性&#xff1a;多进程运…

使用ENSP实现浮动静态路由

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为2.…

GoF设计模式——结构型设计模式分析与应用

文章目录 UML图的结构主要表现为&#xff1a;继承&#xff08;抽象&#xff09;、关联 、组合或聚合 的三种关系。1. 继承&#xff08;抽象&#xff0c;泛化关系&#xff09;2. 关联3. 组合/聚合各种可能的配合&#xff1a;1. 关联后抽象2. 关联的集合3. 组合接口4. 递归聚合接…

【论文复现】深度知识追踪

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀ 深度知识追踪 1. 论文概述2. 论文方法3. 实验部分3.1 数据集3.2 实验步骤3.3 实验结果 4 关键代码 1. 论文概述 知识追踪的任务是对学生的知…

Linux: 进程地址空间(理解虚拟地址和页表)

目录 1. 虚拟地址 2. 进程地址空间分布 3. 描述进程地址空间 4. 内存管理——页表 5. 父子进程的虚拟地址关系 6. 页表标记位 6.1 读写权限 6.2 命中权限 7.为什么存在进程地址空间 1. 虚拟地址 #include <stdio.h> #include <unistd.h> #include <sy…

C语言:深入理解指针

一.内存和地址 我们知道计算机上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;需要的数据是在内存中读取的&#xff0c;处理后的数据也会放回内存中&#xff0c;那我们买电脑的时候&#xff0c;电脑上内存是 8GB/16GB/32GB 等&#xff0c;那这些内存空间…

transformer.js(一):这个前端大模型运行框架的可运行环境、使用方式、代码示例以及适合与不适合的场景

随着大模型的广泛应用&#xff0c;越来越多的开发者希望在前端直接运行机器学习模型&#xff0c;从而减少对后端的依赖&#xff0c;并提升用户体验。Transformer.js 是一个专为前端环境设计的框架&#xff0c;它支持运行基于 Transformer 架构的深度学习模型&#xff0c;尤其是…

uni-app 发布媒介功能(自由选择媒介类型的内容) 设计

1.首先明确需求 我想做一个可以选择媒介的内容&#xff0c;来进行发布媒介的功能 &#xff08;媒介包含&#xff1a;图片、文本、视频&#xff09; 2.原型设计 发布-编辑界面 通过点击下方的加号&#xff0c;可以自由选择添加的媒介类型 但是因为预览中无法看到视频的效果&…

行业分析---2024年小鹏汽车AI Day及三季度财报

1 背景 在之前的博客中&#xff0c;笔者撰写了多篇行业类分析的文章&#xff08;科技新能源&#xff09;&#xff1a; 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 《行业分析-…

数据可视化复习1-Matplotlib简介属性和创建子图

1.Matplotlib简介 Matplotlib是一个Python的2D绘图库&#xff0c;它可以在各种平台上以各种硬拷贝格式和交互环境生成具有出版品质的图形。通过Matplotlib&#xff0c;开发者可以仅需要几行代码&#xff0c;便可以生成绘图、直方图、功率谱、条形图、错误图、散点图等。 以下…

WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理

WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理 1. 标题识别elementUI组件爆红 这个原因是&#xff1a; 在官网说明里&#xff0c;才版本2024.1开始&#xff0c;默认启用的 Vue Language Server&#xff0c;但是在 Vue 2 项目…

如何安全删除 Linux 用户帐户和主目录 ?

Linux 以其健壮性和灵活性而闻名&#xff0c;是全球服务器和桌面的首选。管理用户帐户是系统管理的一个基本方面&#xff0c;包括创建、修改和删除用户帐户及其相关数据。本指南全面概述了如何在 Linux 中安全地删除用户帐户及其主目录&#xff0c;以确保系统的安全性和完整性。…

如何利用ros搭建虚拟场景通过仿真机器人完成一次简单的SLAM建图、导航规划(超简单)?——学习来源:机器人工匠阿杰

一&#xff1a;什么是SLAM&#xff0c;SLAM和导航规划又有什么关系&#xff1f; SLAM&#xff08;Simultaneous Localization and Mapping&#xff0c;即同时定位与建图&#xff09;是一种在未知或动态环境中自行驶的重要技术。主要通过设备上的传感器&#xff08;如激光雷达、…

shell脚本(完结)

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shell编程&#xff08;完结&#xff09;_哔哩哔哩_bilibili 本文主要讲解不同shell脚本中的相互调用以及输入输出重定向操作。 一、不同脚本之间…

禁用达梦DEM的agent

agent占用内存较多&#xff0c;实际没什么使用&#xff0c;考虑停止agent 应该切换到root执行停止 cd /dm/dmdbms/tool/dmagent/service/ ./DmAgentService stop禁用

使用ChatGPT生成和优化电子商务用户需求规格说明书

在电子商务项目开发中&#xff0c;用户需求规格说明书&#xff08;User Requirement Specification, URS&#xff09;是团队沟通与项目成功的基石。然而&#xff0c;面对复杂多变的需求&#xff0c;如何快速生成清晰、完整且具备说服力的文档&#xff1f;这正是AI工具的用武之地…

产品研发管理和研发项目管理的区别是什么

产品研发管理与研发项目管理有显著的区别&#xff0c;主要体现在管理范围、目标导向和执行方法上。产品研发管理侧重于产品生命周期的规划与执行&#xff0c;强调产品的创新性和市场需求对接&#xff0c;而研发项目管理则更注重具体项目的执行过程&#xff0c;聚焦项目时间、成…