常见前端面试之VUE面试题汇总九

 26. Vue-router 跳转和 location.href 有什么区别

使用 location.href= /url 来跳转,简单方便,但是刷新了页面;

使用 history.pushState( /url ) ,无刷新页面,静态跳转;

引进 router ,然后使用 router.push( /url ) 来跳转,使用了 diff 算法,实现了按需加载,减少了 dom 的消耗。其实使用 router 跳 转和使用 history.pushState() 没什么差别的,因为 vue-router 就 是用了 history.pushState() ,尤其是在 history 模式下。

27. Vuex 的原理

Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个 容器,它包含着你的应用中大部分的状态 ( state )。

Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的 时候,若 store 中的状态发生变化,那么相应的组件也会相应地得 到高效更新。

改 变store 中 的 状 态 的 唯 一 途 径 就 是 显 式 地 提 交(commit)

mutation。这样可以方便地跟踪每一个状态的变化。

Vuex 为 Vue Components 建立起了一个完整的生态圈,包括开发中的 API 调用一环。

(1)核心流程中的主要功能:

Vue Components 是 vue 组件,组件会触发(dispatch)一些事件或 动作,也就是图中的 Actions;

在组件中发出的动作,肯定是想获取或者改变数据的,但是在 vuex 中,数据是集中管理的,不能直接去更改数据,所以会把这个动作提 交(Commit)到 Mutations 中;

然后 Mutations 就去改变(Mutate)State 中的数据;

当 State 中的数据被改变之后,就会重新渲染(Render)到 Vue Components 中去,组件展示更新后的数据,完成一个流程。

(2)各模块在核心流程中的主要功能:

Vue Components∶ Vue 组件。HTML 页面上,负责接收用户操作等交 互行为,执行 dispatch 方法触发对应 action 进行回应。

dispatch∶操作行为触发方法,是唯一能执行 action 的方法。

actions∶ 操作行为处理模块。负责处理 Vue Components 接收到的 所有交互行为。包含同步/异步操作,支持多个同名方法,按照注册 的顺序依次触发。向后台 API 请求的操作就在这个模块中进行,包括 触发其他 action 以及提交 mutation 的操作。该模块提供了 Promise 的封装,以支持 action 的链式触发。

commit∶状态改变提交操作方法。对 mutation 进行提交,是唯一能 执行 mutation 的方法。

mutations∶状态改变操作方法。是 Vuex 修改 state 的唯一推荐方法,其他修改方式在严格模式下将会报错。该方法只能进行同步操作,且 方法名只能全局唯一。操作之中会有一些 hook 暴露出来,以进行 state 的监控等。

state∶ 页面状态管理容器对象。集中存储 Vuecomponents 中 data 对象的零散数据,全局唯一,以进行统一的状态管理。页面显示所需 的数据从该对象中进行读取,利用 Vue 的细粒度数据响应机制来进行 高效的状态更新。

getters∶ state 对象读取方法。图中没有单独列出该模块,应该被 包含在了 render 中,Vue Components 通过该方法读取全局 state 对 象。

总结:

Vuex 实现了一个单向数据流,在全局拥有一个 State 存放数据,当 组件要更改 State 中的数据时,必须通过 Mutation 提交修改信息,Mutation 同时提供了订阅者模式供外部插件调用获取 State 数据 的更新。而当所有异步操作(常见于调用后端接口异步获取更新数据) 或批量的同步操作需要走 Action ,但 Action 也是无法直接修改 State 的,还是需要通过 Mutation 来修改 State 的数据。最后,根 据 State 的变化,渲染到视图上。


http://www.niftyadmin.cn/n/4976924.html

相关文章

云计算和Docker分别适用场景

在大规模网络爬虫系统中,通过使用云计算和Docker技术,可以实现大规模网络爬虫系统的高效架构设计和部署。这种架构能够提供可扩展性、高可用性和灵活性,为爬虫系统的运行和管理带来便利。 云计算和Docker在大规模网络爬虫系统中有不同的业务…

Linux各类性能分析工具用法详解

文章目录 静态性能分析工具文件系统观测工具虚拟文件系统(VFS)分析工具磁盘管理工具进程资源占用监测系统库调用分析工具网络配置防火墙配置多路径配置进程调度系统命令操作查看硬件信息磁盘管理网络端口硬件信息 监测工具内核调用监测系统调用监测系统函数调用监测系统性能监测…

RuntimeError: Dataset ‘coco128-seg.yaml‘ error ❌ mapping values are not allowed

关于Linux和windows的深度学习训练时,数据加载配置文件yaml的映射格式不同 在服务器Ubuntu中yaml error ❌ mapping values are not allowed here 还有路径“/”和“\”的区别 windows train: yolov8\ultralytics-main\mydata\images\train val: yolov8\ultra…

第三方支付国内知名企业及主要业务领域介绍

第三方支付国内知名企业及主要业务领域介绍 支付宝:成立于2004年,是中国最大的第三方支付公司之一,主要提供在线支付、转账、财务管理、信用卡还款、生活支付等服务。 微信支付:随着微信的普及,微信支付已成为一种非常…

网络服务第三次作业

正向解析 1.关闭服务端与客户端防火墙和SElinux 2.修改服务端与客户端的IP为静态IP地址 3.安装DNS软件 服务端IP客户端IP 网址 192.168.50.128192.168.50.131www.openlab.com. ##服务端: [rootquantou ~]# setenforce 0 ##关闭SELinux [rootquantou ~]# syste…

React钩子函数之forwardRef

React是一个非常流行的JavaScript库,用于构建用户界面。它提供了一种简单而强大的方式来管理组件的状态和行为。其中一个非常有用的功能是钩子函数,它们允许我们在组件的生命周期中执行代码。 在本文中,我们将探讨React的一个重要钩子函数—…

[Go版]算法通关村第十五关青铜——用4KB内存寻找重复元素

目录 题目:用4KB内存寻找重复元素思路分析:使用位存储如何存储这32000个整数?每个整数对应在位图中的存储状态举例如何判断是重复的?具体的步骤 复杂度:时间复杂度 O ( n ) O(n) O(n)、空间复杂度 O ( 1 ) O(1) O(1)Go…

postman-使用Postman的模拟服务来模拟(mock)后端数据,完成前端模拟API调用

最近项目上比较忙,任务多时间紧,导致后端开发任务繁多,无法及时开发完毕,但是前端同学已经把对应功能开发完成,需要进行前后端联调来验证API及一些交互问题;这不能因为后端的进度来影响前端的工作完成情况&…