每天10个vue面试题(八)

devtools/2024/11/13 13:45:56/

1、Vue如何监听页面url中hash变化?

  • 监听 $route 的变化:在Vue中,你可以使用watch属性来监听$route的变化。当路由发生变化时,会执行相应的处理函数。
  • 使用 window.location.hash:直接读取window.location.hash的值。这个属性可读可写。绑定一个hashChange事件即可监听到。

2、$route 和 $router 的区别?

  • $route 和 $router 是Vue Router提供的两个对象。
  • $route 是一个只读对象,代表了当前活动的路由信息,包括路径、参数、查询字符串等。它用于获取路由的信息。
  • $router 是 Vue Router 的实例,提供了一些方法用于导航路由,如 push、replace 和 go。它用于在应用程序中进行路由导航操作

3、params和query的区别?

  • params 是通过路径的一部分来传递参数,用于捕获和处理特定的路由请求。参数是必需的,出现在路径中,可以通过 $route.params 访问。
  • query 是通过查询字符串来传递参数,用于配置和过滤路由请求。参数是可选的,出现在 URL 的查询字符串中,可以通过 $route.query 访问。
  • 监听 hashchange 事件可获取页面哈希的变化;$route 用于获取当前路由信息,$router 用于进行路由导航;params 通过路径传递参数,query 通过查询字符串传递参数。

4、刷新页面时,params和query的差异?

  • 对于params,当页面刷新时,参数会丢失,因为参数只存在于URL路径中,并不会被浏览器记忆。
  • 对于query,当页面刷新时,参数不会丢失,因为参数是作为查询字符串出现在URL中,浏览器会自动保留这些参数。

5、Vue-router你们用的哪个版本?

  • v3和v4版本都用了,老项目使用了vue2 + vue-router3.x,新项目使用vue3 + vue-router4.x

6、Vue动态路由传参有几种方法?

动态路由:就是不确定的路由,需要传递动态参数来拼接为真实的路由
1. params 方式

  • 配置路由格式:/router/:id
  • 传递的方式:在path后面跟上对应的值
  • 传递后形成的路径:/router/123

2. query 方式

  • 配置路由格式:/router,也就是普通配置
  • 传递的方式:对象中使用query的key作为传递方式
  • 传递后形成的路径:/route?id=123

7、Vue动态路由传参具体用法?

params 方式具体用法:

  • 路由定义
  • 路由跳转
  • 参数获取:通过 $route.params.userid 获取传递的值

query 方式具体用法:

  • 路由定义
  • 跳转方法
  • 参数获取:通过$route.query 获取传递的值

8、Vue-router 路由钩子函数有哪些?

简单的回答:

  • 全局前置/钩子:beforeEach、beforeResolve、afterEach
  • 路由独享的守卫:beforeEnter
  • 组件内的守卫:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave

详细的回答:
1. 全局有三个路由钩子:

  • router.beforeEach:全局前置守卫 进入路由之前,接收参数(to, from, next)
  • router.beforeResolve:全局解析守卫在 beforeRouteEnter 调用之后调用,接收参数(to, from, next)
  • router.afterEach:全局后置钩子 进入路由之后调用,接收参数(to, from)

2. 路由独享的守卫

  • 可以在路由配置上直接定义 beforeEnter 守卫

3. 组件内的守卫

  • beforeRouteEnter:在渲染该组件的对应路由被 confirm 前调用,不能获取组件实例this,因为当守卫执行前,组件实例还没被创建
  • beforeRouteUpdate (2.2 新增):在当前路由改变,但是该组件被复用时调用,可以访问组件实例this
  • beforeRouteLeave:导航离开该组件的对应路由时调用,可以访问组件实例this

9、导航守卫,完整的导航解析流程?

  • 导航被触发。
  • 在失活的组件里调用 beforeRouteLeave 守卫。
  • 调用全局的 beforeEach 守卫。
  • 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。
  • 在路由配置里调用 beforeEnter。
  • 解析异步路由组件。
  • 在被激活的组件里调用 beforeRouteEnter。
  • 调用全局的 beforeResolve 守卫 (2.5+)。
  • 导航被确认。
  • 调用全局的 afterEach 钩子。
  • 触发 DOM 更新。
  • 调用 beforeRouteEnter 守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。

10、路由守卫:参数 to、from、next 的含义?

  • to: Route: 即将要进入的目标 路由对象
  • from: Route: 当前导航正要离开的路由
  • next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。
  • next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
  • next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
  • next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。你可以向 next 传递任意位置对象,且允许设置诸如 replace: true、name: 'home' 之类的选项以及任何用在 router-link 的 to prop 或 router.push 中的选项。
  • next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

      


http://www.ppmy.cn/devtools/133373.html

相关文章

MATLAB和Python及R潜变量模型和降维

MATLAB片段 在 MATLAB 中,潜变量模型 (Latent Variable Models, LVMs) 和降维技术被广泛用于复杂数据的分析,例如基因表达数据或其他高维数据集。这些工具有助于揭示隐藏的结构并检测扰动(例如基因敲除或化学处理)在数据中的影响…

基于SSM(Spring + Spring MVC + MyBatis)框架的药房管理系统

基于SSM(Spring Spring MVC MyBatis)框架的药房管理系统 项目概述 功能需求 用户管理:管理员可以添加、删除、修改和查询用户信息。药品管理:支持对药品信息的增删改查操作,包括药品名称、价格、库存量等。供应商…

Bash Shell - 获取日期、时间

1. 使用date获取日期 以下代码将date的执行结果存储在today变量中。date 是获取日期和时间的命令。 选择使用 quotes()或$ #!/bin/bashtodaydate echo $todaytoday$(date) echo $today 2. 使用 Format 输出所需日期和时间 date FORMAT 2.1 "MM-DD-YY" 形式输出…

hadoop 3.x 伪分布式搭建

hadoop 伪分布式搭建 环境 CentOS 7jdk 1.8hadoop 3.3.6 1. 准备 准备环境所需包上传所有压缩包到服务器 2. 安装jdk # 解压jdk到/usr/local目录下 tar -xvf jdk-8u431-linux-x64.tar.gz -C /usr/local先不着急配置java环境变量,后面和hadoop一起配置 3. 安装had…

WPF自定义翻页控件

XAML文件如下&#xff1a; <UserControlx:Class"CTMVVMDemo.View.UserControls.DataPager"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://s…

如何稳定操作网站及稳定排名

稳定操作网站及排名的方法包括提升主题性、增加用户黏度、维护服务器稳定性等。稳定网站排名是一个长期且复杂的过程&#xff0c;需要从多个方面入手&#xff0c;确保网站在搜索引擎中的表现持续优秀。 稳定操作网站&#xff1a; 提升主题性&#xff1a;通过丰富与网站核心业务…

第十五天 数据可视化

Python 数据可视化是利用 Python 编程语言及其相关库来创建图形、图表和其他视觉表示&#xff0c;以便更好地理解和分析数据的过程。Python 提供了多种强大的数据可视化工具和库&#xff0c;使得数据科学家和分析师能够轻松地将复杂的数据集转化为易于理解的图形表示。 以下是…

Spring Boot与Spring Data JPA:简化数据库操作

在现代软件开发中&#xff0c;数据库操作是应用程序不可或缺的一部分。Spring Boot与Spring Data JPA提供了一种简洁而强大的方式&#xff0c;使得开发者可以轻松地实现数据库的增删改查&#xff08;CRUD&#xff09;操作&#xff0c;以及更复杂的查询需求。本文将介绍如何使用…