Vue面试题(一)

2023-11-12

目录

一、vue2和vue3的区别

二、mixin混入对象

三、hooks 特点

四、keep-alive

五、生命周期

六、el、template、render

七、vue-router 有哪几种导航钩子( 路由守卫 )?

八、HTTP和TCP的关系


一、vue2和vue3的区别

1、双向数据绑定的原理不同
   vue2使用的是Object.defineProperty(不能监控数组下标变化的能力的、以及对象的属性值
   vue3使用的是proxy代理

2、vue2选项式API:在中小项目中,vue2的选项式API也是不错的选择,但是在大型项目中,vue3的组合式API会表现的更加优秀。
      vue3组合式API优势  :一个业务需要的数据方法,生命周期函数都在一起,配合hooks函数的使用,能让代码的复用性,条理性都很高,维护起来也很方便

3、vue3 其他的运行时增强 
    支持fragment(一个组件包含多个根节点)、Teleport (传送门)

4、vue3底层是由typescript编写的,完美适配typescript编写,适配的ui组件库由element-plus
      vue2组件库element-ui


二、mixin混入对象

混入对象 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能
作用:抽取组件中相同的属性和方法到独立的文件,以便公用。
缺点:mixins对象会被混入该组件本身,所以可能会有命名冲突

三、hooks 特点

1、vue3 中的 hooks 函数相当于 vue2 里面的 mixin 混入,不同在于 hooks 是函数。
2、vue3 中的 hooks 函数可以提高代码的复用性,能够在不同的组件当中都利用 hooks 函数。
3、hooks 函数可以与 mixin 连用,但是不建议


四、keep-alive

1、用来缓存动态组件,它是一个抽象组件,所以在页面渲染完毕后不会被渲染成一个DOM元素
2、属性exclude/include/max
3、两个生命周期:activated: 页 面 第 一 次 进 入 的 时 候 , 钩 子 触 发 的 顺 序 是created->mounted->activated
                       deactivated: 页面退出的时候会触发 deactivated,当再次前进或者后退的时候只触发 activated


五、生命周期

vue实例从创建到销毁的过程,就是生命周期
       1、beforeCreate:实例初始化之后,data和watcher事件配置被调用之前
       2、created:在实例创建完成之后。此时已经完成的配置有:data、methods的运算,watcher/event事件回调。但挂载还没开始,$el属性不可见
       3、beforeMount:开始挂载之前;相关的render函数首次调用
       4、mounted:el被新创建的vm.$el替换,并挂载到实例上去之后调用该钩子
                              如果root实例挂在了一个文档内的元素,当mounted被调用时vm.$el也在文档内
       5、beforeUpadate:数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前。
         这里适合在更新之前访问现有的DOM,例如 手动移出处已添加的事件监听器,该钩子在服务器端渲染期间不被调用,因为只有初次渲染才会在服务端进行    
  6、updated:由于数据更改导致虚拟的DOM重新渲染和打补丁  
  7、activated:keep-alive 组件激活时调用。该钩子在服务器端渲染期间不被调用
  8、deactivated:keep-alive 组件停用时调用。该钩子在服务器端渲染期间不被调用
  9、beforeDestory(销毁前):组件销毁之前调用 ,在这一步,实例仍然完全可用。
  10、destoryed(销毁后):实例销毁后调用,调用后,vue实例指示的所有东西都会解绑定,所有的事件监听器都会被移除、所有的子实力也会被销毁。该钩子在服务器端渲染期间不被调用
  11、errorCaptured(2.5.0+ 新增):当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生 错误的组件实例以及一个包含错误来源信息的字符串,此钩子可以返回 false 以阻止该 错误继续向上传播

六、el、template、render

el:提供一个已存在的DOM元素作为vue实例挂载的目标
template:实例模板,可以是.vue 中的 template, 也可以是 template 选项, 最终会编译成 render 函数
render:不需要通过编译的可执行函数

在进行DOM树的渲染时,render渲染函数的优先级最高,template次之且需编译成渲染函数,而挂载点el属性对应的元素若存在,则在前两者均不存在时,其outerHTML才会用于编译与渲染

七、vue-router 有哪几种导航钩子( 路由守卫 )?

全局前置钩子:router.beforeEach((to, from, next) =>{})一般用于登录验证

全局解析钩子:router.beforeResolve((to, from, next) =>{}),组件初始化,用法和前置区别不大

全局后置钩子:router.afterEach((to, from) =>{})  一般路由跳转以后用window把窗口调上去

路由独享钩子:beforEnter((to, from, next) =>{})

组件内:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave

导航守卫执行顺序:beforeRouteLeave < beforeEach < beforeRouteUpdate < beforeEnter < beforeRouteEnter < beforeResolve < afterEach

八、HTTP和TCP的关系

  • TCP是传输层协议,而HTTP是应用层协议
  • HTTP是要基于TCP连接基础上的
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue面试题(一) 的相关文章

随机推荐

  • 项目答辩PPT(一)

    以 运动APP 为例展开 1 项目整体介绍 定位和需求 在银行工作的王小姐是个健身爱好者 从制订健身计划 到约人一起跑步 再到周末预订场地和家人打一场羽毛球赛 她用一部手机轻松搞定 现在有了手机APP 运动方便多了 王小姐的运动方式是如今都
  • QT创建右键快捷菜单

    0 目标 在Qcommbobox右键出来菜单 点击BCC校验 自动算出校验值填入编辑框 1 UI界面选择Action editor 新建action 记住对象名 actionBCC 右键action 点击转到槽 选择triggered 点击
  • 指针(一)——指针与二级指针

    一 指针理解 指针是一个变量 用来存放地址的变量 指针变量 是一个变量 是指有一个存储空间 里面放的是指针 变量指针 变量的地址 指针的存在是为了方便计算机的内存管理 经过计算和权衡 我们发现 一个字节给一个地址是比较合适的 在32位的机器
  • 给wangeditor添加上标、下标功能

    我使用的wangeditor没有上标和下标功能 以下是自己添加功能的方法 1 设计功能的函数和原型 Sup menu 构造函数 function Sup editor this editor editor this elem div cla
  • 高性能MySQL实战(一):表结构

    最近因需求改动新增了一些数据库表 但是在定义表结构时 具体列属性的选择有些不知其所以然 索引的添加也有遗漏和不规范的地方 所以我打算为创建一个高性能表的过程以实战的形式写一个专题 以此来学习和巩固这些知识 1 实战 我使用的 MySQL 版
  • 【深度学习】 Python 和 NumPy 系列教程(七):Python函数

    目录 一 前言 二 实验环境 三 Python函数基础 1 定义函数 2 参数传递 3 函数调用 4 返回值 5 函数文档字符串 四 将函数存储在模块中 1 创建模块 2 导入模块 a import 模块名 b from 模块名 impor
  • github.io出现的问题及解决方案

    github io出现的问题及解决方案 个人博客 github io出现的问题及解决方案 1 你的连接不是专用连接 放假回家后打开自己的博客 发现无法打开博客 一开始以为是调样式时不小心搞坏了 打开别人的githunb io博客发现都会出问
  • Python删除字符串中连续重复字符,保留所有去重后字符

    看了很多攻略 但都是全部去除字符串中所有的重复字符或者全部去除字符串所有相邻的重复字符 如果希望得到字符串中相邻字符去重后的全部字符 比如字符串a abbcccd222aaabbbddfff6e 去重后能得到 abcd2abdf6e 那可以
  • CMake中if的使用

    CMake中的if命令用于有条件地执行一组命令 其格式如下 if
  • 判断字符串是否为回文串的Java实现方法(收藏自力扣)

    先把字符串转成字符数组 可以调用toCharArray 方法 public char toCharArray 将此字符串转换为一个新的字符数组 Returns 一种新分配的字符数组 其长度是该字符串的长度 其内容被初始化为包含由该字符串表示
  • 时间序列模型Prophet使用详细讲解

    之前我们已经讲过了如何在Windows系统下安装Python版本的Prophet 详细见这里 接下来的几个部分 我们说下如何使用Prophet 以此来体验下Prophet的丰富内容 内容会比较多 主要翻译自官方文档 教程中使用的数据集可在
  • DAP数据分析平台权限体系说明

    数据对于企业来说是非常重要的 所以产品的安全性需要有所保证 而权限分配就是一种保障方式 通过不同权限查看到不同的数据进行数据隔离 保障数据的安全性 DAP数据分析平台通过授权管理进行角色授权 配置授权 业务授权实现三权分立 不同的用户能看到
  • 后端解决跨域

    对于跨域 相信同学们都有所了解 前端的跨域的若干种方式 大家也都知道 什么 JSONP iframe domain 等等 但是我们今天的主题 不是前端跨域 而是后端跨域 一旦提及到跨域 就会想到同源策略 那我们就先来回顾跨域和同源策略 什么
  • upload-labs第五关 pass-05 大小写绕过

    六 pass 05 大小写绕过 源码 is upload false msg null if isset POST submit if file exists UPLOAD ADDR deny ext array php php5 php4
  • 封装浏览器外壳

    Net本身包含WebBrower控件 可惜内核是IE http www cnblogs com M Silencer p 5846494 html 参考以上文章 通过一些控件可以再窗体中嵌入webkit内核的浏览器 目前在尝试CefShar
  • 快手广告推广效果由哪些因素决定?快手广告能满足哪些推广目标?

    快手广告用户与你的行业用户一致快手用户为三线城市 95后年轻用户为主 同时其用户人群也在大城市进行渗透 那么快手广告推广效果由哪些因素决定 快手广告能满足哪些推广目标 一 快手广告推广效果由哪些因素决定 1 广告的推广效果可以分为曝光效果
  • 大数据代表技术:Hadoop、Spark、Flink、Beam

    大数据代表技术 Hadoop Spark Flink Beam Hadoop 从2005年到2015年 说到大数据都是讲hadoop Hadoop是一整套的技术框架 不是一个单一软件 它是一个生态系统 Hadoop有两大核心 第一个是它解决
  • ubuntu系统安装pangolin

    ubuntu 安装 pangolin 1 安装pangolin依赖项以及安装过程中用到的工具 2 创建安装目录 3 下载pangolin源文件 4 安装pangolin 1 安装pangolin依赖项以及安装过程中用到的工具 ctrl al
  • LeetCode_BinaryTree_1129. Shortest Path with Alternating Colors 颜色交替的最短路径【BFS求最短路径】【java】【中等】

    一 题目描述 英文描述 You are given an integer n the number of nodes in a directed graph where the nodes are labeled from 0 to n 1
  • Vue面试题(一)

    目录 一 vue2和vue3的区别 二 mixin混入对象 三 hooks 特点 四 keep alive 五 生命周期 六 el template render 七 vue router 有哪几种导航钩子 路由守卫 八 HTTP和TCP的