前端面试---Vue部分考点梳理

简介: 前端面试---Vue部分考点梳理

一. Vue的使用


1. Vue的基本使用

  1. 指令 插值
  • 插值 表达式
  • 指令 动态属性
  • v-html 会有XSS风险 会覆盖子组件
  1. computed 和 watch
  • computed 有缓存 data不变则不会重新计算
  • watch 如何深度监听
  • watch 监听引用类型时 拿不到oldVal
  1. v-for
  • v-for 和 v-if 不能同时使用
  • :key的值尽量不要使用index或者random
  1. 事件
  • 事件修饰符
  • 按键修饰符
  • 事件被绑定到了哪里:事件会挂载到当前绑定的元素上


2. Vue组件的使用

  1. props

父组件向子组件传递数据

  1. $emit

子组件触发父组件的事件并且传递参数

  1. 组件间的通讯 - 自定义事件

在绑定自定义事件中 第二个参数 是一个方法名称 在beforeDsstoy函数中 需要将方法及时销毁 否则会造成内存泄露

  1. 组件的生命周期
  • 挂载阶段 beforCreate created beforMount mounted
  • 更新阶段 beforUpdate updated
  • 销毁阶段 beforDestroy destroyed


3. Vue的高级特性

  1. 自定义v-model

颜色选择器

  1. $nextTick

Vue 是异步渲染

data 改变之后 DOM不会立刻渲染

$nextTick 会在DOM渲染之后触发 以获取最新DOM节点

  1. slot(插槽)

粗暴的理解成 父组件想要向子组件中插入写东西

  1. 基本使用
  2. 作用域插槽
  3. 具名插槽
  1. 动态、异步组件

动态组件:

  • :is=“component-name”用法

异步组件:

  • import()函数
  • 按需要加载 异步加载大组件
  1. keep-alive

缓存组件

频繁切换但不需要渲染 (tab选项卡)

Vue常见性能优化之一

  1. mixin

多个组件有相同的逻辑 抽离出来

mixin中可能遇到的问题

  • 变量来源不明确 不利于阅读
  • 多mixin可能会曹成命名冲突
  • mixin组件可能会出现多对多的关系 复杂度较高


4. Vuex的使用

  • state的数据结构设计
  • getters
  • action
  • mutation
  • 用于Vue组件
  • dispatch
  • commit
  • mapState
  • mapGetters
  • mapActions
  • mapMutations


5. Vue-router

  1. 路由模式
  • hash
  • H5 history
  1. 路由配置
  • 动态路由
  • 懒加载


二. Vue的原理(大厂必考)

1. 组件化 和 MVVM

  1. 数据驱动试图
  • 传统组件 只是静态渲染 更新还要依赖于操作DOM
  • 数据驱动试图 - Vue MVVM
  • 数据驱动试图 - React setState
  1. MVVM


2. 响应式 原理(重点)

  1. 组件data的数据一旦变化 立刻触发视图的更新
  2. 实现数据驱动试图的第一步
  3. 核心:API-Object.defineProperty

缺点:

  • 深度监听 需要递归到底 一次性计算量大
  • 无法监听新增属性和删除属性(Vue.set Vue.delete)
  • 无法原生监听数组 需要特殊处理

Vue3.0启用proxy 实现响应式 的缺点:

  • proxy的兼容性不好 且无法polyfill


3. vdom和diff

  1. vdon是实现Vue和React的重要基石
  2. diff算法是vdom中最核心 最关键的部分


4. 模板编译


5. 渲染过程


6. 前端路由


三. Vue经典面试题

1. v-show 和 v-if 的区别

v-show:通过css样式来控制 就是两个或多个元素中 让其显示的就直接显示 如果让其隐藏的就为其添加display:none
v-if:通过Vue本身的机制控制 就是两个或多个元素中 让其显示的就显示 其他的就不会被加载到浏览器中
以上两者的使用场景:判断是否为频繁切换 元素的显示 如果需要频繁的切换建议使用v-show 如果是一次性的建议使用v-if


2. 为何 v-for 中要用 key

v-for中必须要有key 并且他不能使用index要取和业务相关的值


3. 描述 Vue 中的生命周期(有父子组件的情况)

单组件的生命周期

有父子组件的情况
初始化Vue实例是从外到内 渲染是从内到外的:父组件初始化(created)---- 子组件初始化(created)---- 子组件渲染(mounted)----父组件渲染(mounted)
更新数据逻辑同上


4. Vue 组件如何通讯

父子通讯 :props和$emit
无关系组件之间通讯:自定义事件
Vuex通讯


5. 描述组件渲染和更新的过程


6. 双向数据绑定 v-model 的实现原理


7. created 和 mounted 的区别

created:把Vue的实例进行初始化 并没有开始渲染
mounted:是组件真正的网页绘制完成了(ajax获取信息 绑定事件等操作需要在这里完成)


8. 在 beforDestroy 中需要做什么?

解除绑定
销毁子组件 以及事件监听器
解除自定义事件的绑定



相关文章
|
9月前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
892 1
|
10月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
585 83
|
11月前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
598 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
9月前
|
JavaScript 前端开发 编译器
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
410 22
|
8月前
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
203 4
|
8月前
|
存储 安全 Java
Java 集合面试题从数据结构到 HashMap 源码剖析详解及长尾考点梳理
本文深入解析Java集合框架,涵盖基础概念、常见集合类型及HashMap的底层数据结构与源码实现。从Collection、Map到Iterator接口,逐一剖析其特性与应用场景。重点解读HashMap在JDK1.7与1.8中的数据结构演变,包括数组+链表+红黑树优化,以及put方法和扩容机制的实现细节。结合订单管理与用户权限管理等实际案例,展示集合框架的应用价值,助你全面掌握相关知识,轻松应对面试与开发需求。
409 3
|
Java 程序员
Java社招面试中的高频考点:Callable、Future与FutureTask详解
大家好,我是小米。本文主要讲解Java多线程编程中的三个重要概念:Callable、Future和FutureTask。它们在实际开发中帮助我们更灵活、高效地处理多线程任务,尤其适合社招面试场景。通过 Callable 可以定义有返回值且可能抛出异常的任务;Future 用于获取任务结果并提供取消和检查状态的功能;FutureTask 则结合了两者的优势,既可执行任务又可获取结果。掌握这些知识不仅能提升你的编程能力,还能让你在面试中脱颖而出。文中结合实例详细介绍了这三个概念的使用方法及其区别与联系。希望对大家有所帮助!
645 60
|
11月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 搜索推荐
Vue的数据驱动视图与其他前端框架的数据驱动方式有何不同?
总的来说,Vue 的数据驱动视图在诸多方面展现出独特的优势,其与其他前端框架的数据驱动方式的不同之处主要体现在绑定方式、性能表现、触发机制、组件化结合、灵活性、语法表达以及与后端数据交互等方面。这些差异使得 Vue 在前端开发领域具有独特的地位和价值。
290 58
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
332 10