当前位置:   article > 正文

2024年最全Vue高频面试问题(含答案),面试官直呼好家伙~,零基础如何成为高级前端开发_vue大厂面试题

vue大厂面试题

web浏览器中的javascript

window对象

  • 计时器

  • 浏览器定位和导航

  • 浏览历史

  • 浏览器和屏幕信息

  • 对话框

  • 错误处理

  • 作为window对象属性的文档元素

最终仅显示第二个span的内容

v-cloak

这个指令是用来保持在元素上直到关联实例结束时进行编译

{{message}}

在页面加载时会闪烁(插值闪烁问题),先显示:

{{message}}

然后才会编译为:

hello world!

可以用v-cloak指令解决插值表达式闪烁问题,v-cloak在css中用属性选择器设置为display: none;

v-once

v-once关联的实例,只会渲染一次。之后的重新渲染,实例极其所有的子节点将被视为静态内容跳过,这可以用于优化更新性能。

This will never change:{{msg}}  //单个元素

//有子元素

comment

{{msg}}

 //组件

    • {{i}}
    • 上面的例子中,msg,list即使产生改变,也不会重新渲染。

      v-if

      v-if可以实现条件渲染,Vue会根据表达式的值的真假条件来渲染元素。

      yes

      如果属性值ok为true,则显示。否则,不会渲染这个元素。

      v-else

      v-else是搭配v-if使用的,它必须紧跟在v-if或者v-else-if后面,否则不起作用。

      yes

      No

      v-else-if

      v-else-if充当v-if的else-if块,可以链式的使用多次。可以更加方便的实现switch语句。

      A

      B

      C

      Not A,B,C

      v-show

      hello world

      也是用于根据条件展示元素。和v-if不同的是,如果v-if的值是false,则这个元素被销毁,不在dom中。但是v-show的元素会始终被渲染并保存在dom中,它只是简单的切换css的dispaly属性。

      注意:v-if有更高的切换开销

      v-show有更高的初始渲染开销。

      因此,如果要非常频繁的切换,则使用v-show较好;如果在运行时条件不太可能改变,则v-if较好

      v-for

      用v-for指令根据遍历数组来进行渲染

      注意:当v-for和v-if同处于一个节点时,v-for的优先级比v-if更高。这意味着v-if将运行在每个v-for循环中

      v-bind

      v-bind用来动态的绑定一个或者多个特性。没有参数时,可以绑定到一个包含键值对的对象。常用于动态绑定class和style。以及href等。

      简写为一个冒号【 

      v-model

      这个指令用于在表单上创建双向数据绑定

      v-model会忽略所有表单元素的value、checked、selected特性的初始值。因为它选择Vue实例数据做为具体的值

          

      hello {{somebody}}

      这个例子中直接在浏览器input中输入别的名字,下面的p的内容会直接跟着变。这就是双向数据绑定。

      v-on

      v-on主要用来监听dom事件,以便执行一些代码块。表达式可以是一个方法名。

      2**、v-if 和 v-show 有什么区别?******

      ==========================================

      共同点:v-if 和 v-show 都能实现元素的显示隐藏

      区别:

      1. v-show 只是简单的控制元素的 display 属性,而 v-if 才是条件渲染(条件为真,元素将会被渲染,条件为假,元素会被销毁);

      2. v-show 有更高的首次渲染开销,而 v-if 的首次渲染开销要小的多;

      3. v-if 有更高的切换开销,v-show 切换开销小;

      4. v-if 有配套的 v-else-if 和 v-else,而 v-show 没有

      5. v-if 可以搭配 template 使用,而 v-show 不行

      3.组件中 data 为什么是一个函数?

      ================================

      为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是一个对象?

      // data

      data() {

      return {

      message: “子组件”,

      childName:this.name

      }

      }

      // new Vue

      new Vue({

      el: ‘#app’,

      router,

      template: ‘’,

      components: {App}

      })

      因为组件是用来复用的,且 JS 里对象是引用关系,如果组件中 data 是一个对象,那么这样作用域没有隔离,子组件中的 data 属性值会相互影响,如果组件中 data 选项是一个函数,那么每个实例可以维护一份被返回对象的独立的拷贝,组件实例之间的 data 属性值不会互相影响;而 new Vue 的实例,是不会被复用的,因此不存在引用对象的问题。

      4.Vue 组件间通信有哪几种方式?

      ==============================

      Vue 组件间通信是面试常考的知识点之一,这题有点类似于开放题,你回答出越多方法当然越加分,表明你对 Vue 掌握的越熟练。Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通信、兄弟组件通信,下面我们分别介绍每种通信方式且会说明此种方法可适用于哪类组件间通信。

      (1)props / $emit 适用 父子组件通信

      这种方法是 Vue 组件的基础,相信大部分同学耳闻能详,所以此处就不举例展开介绍。

      (2)ref 与 $parent / $children 适用 父子组件通信

      ref:如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;如果用在子组件上,引用就指向组件实例

      p a r e n t   /   parent /  parent / children:访问父 / 子实例

      (3)EventBus ($emit / $on) 适用于 父子、隔代、兄弟组件通信

      这种方法通过一个空的 Vue 实例作为中央事件总线(事件中心),用它来触发事件和监听事件,从而实现任何组件间的通信,包括父子、隔代、兄弟组件。

      (4) a t t r s / attrs/ attrs/listeners 适用于 隔代组件通信

      a t t r s :包含了父作用域中不被 p r o p 所识别 ( 且获取 ) 的特性绑定 ( c l a s s 和 s t y l e 除外 ) 。当一个组件没有声明任何 p r o p 时,这里会包含所有父作用域的绑定 ( c l a s s 和 s t y l e 除外 ) ,并且可以通过  v − b i n d = " attrs:包含了父作用域中不被 prop 所识别 (且获取) 的特性绑定 ( class 和 style 除外 )。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 ( class 和 style 除外 ),并且可以通过 v-bind=" attrs:包含了父作用域中不被prop所识别(且获取)的特性绑定(classstyle除外)。当一个组件没有声明任何prop时,这里会包含所有父作用域的绑定(classstyle除外),并且可以通过 vbind="attrs" 传入内部组件。通常配合 inheritAttrs 选项一起使用。

      l i s t e n e r s :包含了父作用域中的 ( 不含 . n a t i v e 修饰器的 ) v − o n 事件监听器。它可以通过  v − o n = " listeners:包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on=" listeners:包含了父作用域中的(不含.native修饰器的)von事件监听器。它可以通过 von="listeners" 传入内部组件

      (5)provide / inject 适用于 隔代组件通信

      祖先组件中通过 provider 来提供变量,然后在子孙组件中通过 inject 来注入变量。 provide / inject API 主要解决了跨级组件间的通信问题,不过它的使用场景,主要是子组件获取上级组件的状态,跨级组件间建立了一种主动提供与依赖注入的关系。

      (6)Vuex 适用于 父子、隔代、兄弟组件通信

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

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

      改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化。

      5**、computed 和 watch 的区别和运用的场景?******

      文末

      如果30岁以前,可以还不知道自己想去做什么的话,那30岁之后,真的觉得时间非常的宝贵,不能再浪费时间在一些碎片化的事情上,比如说看综艺,电视剧。一个人的黄金时间也就二,三十年,不能过得浑浑噩噩。所以花了基本上休息的时间,去不断的完善自己的知识体系,希望可以成为一个领域内的TOP。

      同样是干到30岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。

      这也是为什么大家都说30岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。

      269页《前端大厂面试宝典》

      包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

      开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

      前端面试题汇总

      JavaScript

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/930823
    推荐阅读
    相关标签
      

    闽ICP备14008679号