关键词不能为空

当前您在: 主页 > 英语 >

前端面试中常见Vue知识点整理

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 05:32
tags:

-

2021年2月28日发(作者:jungle)



看看面试题,


只是为了查漏补缺,

< p>
看看自己那些方面还不懂。


切记不要以为背了


面试 题,


就万事大吉了,


最好是理解背后的原理,

< br>这样面试的时候才能侃侃而谈。


不然,


稍微有水平的面试 官一看就能看出,


是否有真才实学还是刚好背中了这道


面试题。



一、对于


MVVM

< br>的理解?



MVVM




Model-View- ViewModel


的缩写。



?



Model



代表数据模型,也可以在


Model


中定义数据修改和操作的业务逻

辑。



View



代表


UI


组件,它负责将数据模型转化成


UI


展现出来。



?



ViewModel



监听模型数据的 改变和控制视图行为、处理用户交互,简单


理解就是一个同步


V iew




Model


的对象,连接


Model



View




?




MVV M


架构下,


View




Model

之间并没有直接的联系,


而是通过


ViewModel


进行交互,


Model




ViewModel


之间的交互是双向的,



因此


View


数据的变


化会同步到


Model


中,而


Model


数据的变化也会立即反应到


View


上。



ViewModel



通过双向数据绑定把



View


层和



Model


层连接了起来,



View




Model

之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业


务逻辑,不需 要手动操作


DOM


,不需要关注数据状态的同步问题,复杂的数 据


状态维护完全由



MVVM


来统一管理。



二、

< br>Vue


的生命周期



befor eCreate


(创建前),在数据观测和初始化事件还未开始



created


(创建后),完成数据观测,属性和方法的运算 ,初始化事件,



$$el



性还没有显示出来



beforeMount


(载入前),在挂载开始之前被调用,相关的


render


函数首次被


调用。


实例已完成以下的配置:


编译模板,



data


里面的数据和模板生成


html



注意此时还没有挂载


html

到页面上。



mounted


(载入后),在


el


被新创建的



vm.$$el


替换,并挂载到实例上去之后


调用。


实例已完成 以下的配置:


用上面编译好的


html


内容替换


el


属性指向的


DOM


对象。完成模板中的


html


渲染到


html


页面中。此过程中进行


ajax


交互。



beforeUpdate


(更新前),在数据更新之前调用,发生在虚拟


DOM

< br>重新渲染


和打补丁之前。


可以在该钩子中进一步地更改状 态,


不会触发附加的重渲染过程。




updated


(更新后),在由于数据更改导致的虚拟


DOM


重新渲染和打补丁之后


调用。调用时, 组件


DOM


已经更新,所以可以执行依赖于

DOM


的操作。然而


在大多数情况下,

应该避免在此期间更改状态,


因为这可能会导致更新无限循环。

该钩子在服务器端渲染期间不被调用。



beforeDe stroy


(销毁前),在实例销毁之前调用。实例仍然完全可用。


destroyed


(销毁后),在实例销毁之后调用。 调用后,所有的事件监听器会被


移除,所有的子实例也会被销毁。该钩子在服务器端渲染 期间不被调用。



1


、什么是


vue


生命周期?



答:



Vue


实例从创建到销毁的过程,


就是生命周期。


从开始创建、


初始化数据、


编译模板、挂载


Dom→


渲染、更新



渲染、销毁等一系列过程,称 之为



Vue



生命周期。



2



vue


生命周期的作用是什么?



答:它的生命周期中有多个事件钩子,让我们在控制整个


Vue


实例的过程时更


容易形成好的逻辑。



3



vue


生命周期总共有几个阶段?



答:它可 以总共分为


8


个阶段:创建前


/


后、载入前


/


后、更新前

/


后、销毁前


/



毁后。



4


、第一次页面加载 会触发哪几个钩子?



答:会触发下面这几个

< br>beforeCreate



created

< p>


beforeMount


mounted




5



DOM


渲染在哪个周期中就已经完成?



答:


DOM


渲染在



mounted


中就已经完成了。



三、



Vue


实现数据双向绑定的原理:


Property()


< p>
vue


实现数据双向绑定主要是:采


用数据劫持结 合发布者


-


订阅者模式


的方式,


通过



Property()


来劫持各个属性的


setter


< br>getter


,在数据变动时


发布消息给订阅者,触发相 应监听回调。当把一个普通



Java


对象传给



Vue



例来作为它的



data


选项时,


Vue


将遍历它的属性,用



Property()



将它们转为



getter/sett er



用户看不到


< br>getter/setter



但是在内部它们让



Vue



踪依赖 ,在属性被访问和修改时通知变化。



vue


的数据双向绑定




MVVM


作为数据绑定的入口,整合


Observer



Compile



Watcher


三者,


通过


Observer


来监听自己的


mod el


的数据变化,


通过


Compile


来解析编译模板指令



vue


中是用来解析



{{}}




最终利用


watcher


搭起


observer


Compile


之间的通信桥梁,


达到数据变化

< p>



>


视图更新;


视图交互变化



input

< br>)



>


数据

model


变更双向绑定效果。



js


实现简单的双向绑定:



.





.




.





.




.



id



.



=



.





.



>



.




.





.




.



type



.



=



.





.




.



id



.



=



.





.



>



.




.





.




.



id



.



=



.





.



>



.





.





.



<



.




.



type




.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



=





>




var



obj = {}




Object



.defineProperty(obj,



'txt'



, {




get



:



function



() {




return



obj



},




set



:



function



(newValue) {



mentById(



'txt'



).value = newValue



mentById(



'show'



).innerHTML = newValue



}



})



ntListener(



'keyup'



,



function



(e) {



=



})





四、


Vue


组件间的参数传递




1


、父组件与子组件传值


< p>
父组件传给子组件:子组件通过


props


方法接 受数据;



子组件传给父组件:



$$emit


方法传递参数



2


、非父子组件间的数据传递,兄弟组件传值



eventBus


,就是创建一个事件中心,相当于中转站,可 以用它来传递事件和接


收事件。项目比较小时,用这个比较合适(虽然也有不少人推荐直 接用


VUEX



具体来说看需求咯。技 术只是手段,目的达到才是王道)。



五、

Vue


的路由实现:


hash


模式





history


模式



hash








< br>中




“#”

< br>,


#




#










hash






读取。特点:


hash


虽然在


URL


中,但不被包括在

HTTP


请求中;用来指导浏览器动作,对服务端安全无用,


hash


不会重加载页面。



his tory





history




HTML5













< br>方





pushState()




replaceState()


可以对浏览器历史记录栈进行修改,


以及


popState


事件的监听到状态变 更。



六、


Vue


Angular


以及


React


的区别?



版本在不断更新,以下的区 别有可能不是很正确。我工作中只用到


vue


,对


angular



react


不怎么熟。



1


、与


AngularJS


的区别



相同点:都支持指令:内置指令和自定义指令;都支持过滤器:内置过滤器和自


定义过滤 器;都支持双向数据绑定;都不支持低端浏览器。



不同点:< /p>


AngularJS


的学习成本高,比如增加了

< br>Dependency Injection


特性,而


< /p>


本身提供的


API


都比较简单、直观;在 性能上,


AngularJS


依赖对数据做

脏检查,所以


Watcher


越多越慢;

< br>


使用基于依赖追踪的观察并且使用异


步队列更新,所有的 数据都是独立触发的。



2


、与


React


的区别




相同点:


React


采用特殊的


JSX


语法,



在组件 开发中也推崇编写


.vue



殊文件格 式,


对文件内容都有一些约定,


两者都需要编译后使用;


中心思想相同:


一切都是组件,


组件实例之间 可以嵌套;


都提供合理的钩子函数,


可以让开发者


定制化地去处理需求;都不内置列数


AJAX



Route


等功能到核心包,而是以插


件的 方式加载;在组件开发中都支持


mixins


的特性。



不同点:


React


采用的


Virtual DOM


会对渲染出来的结果做脏检查;



在模


板中提供了指令,过滤器等,可以 非常方便,快捷地操作


Virtual DOM




七、


vue


路由的钩子函数



首页可以控 制导航跳转,


beforeEach



afterEach


等,


一般用于页面


title


的修改。


一些需要登录才能调整页面的重定向功能。



beforeEach


主要有


3


个参数


to



from



next




?



t o



route


即将进入的目标路由对 象。



?



f rom



route


当前导航正要离开 的路由。



?



next



function


一定要 调用该方法


resolve


这个钩子。执行效果依赖

< p>
next


方法的调用参数。可以控制网页的跳转。



?



八、


vu ex


是什么?怎么使用?哪种功能场景使用它?



只用来读取的状态集中放在


store


中;



改变状态的方式是提交


mutations< /p>


,这是


个同步的事物;



异步逻辑应该封装在


action


中。





引入

store


,注入。新建了一个目录


store

< p>


… export




场景有:单页应用中,组件之间的状态、音乐播放、登录状态、加入购物车




state



Vuex


使用单一状态树


,


即每个应用将仅仅包含一个


store


实例,但单一


状态树和模块化并 不冲突。存放的数据状态,不可以直接修改里面的数据。



mu tations



mutations


定义的方法动态修改


Vuex




store


中的状态或数据。



getters


:类似


vue


的计算属性,主要用来过滤一些数据。



actio n



actions


可以理解为通过将


mutations


里面处里数据的方法变成可异步

< p>
的处理数据的方法,


简单的说就是异步操作数据。


view


层通过



h



分发



action




.



.



const



store =




.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



new




Vuex



.



Store



({



//store


实例



state: {



count:



0



},



mutations: {



increment (state) {



++



}



},



actions: {



increment (context) {



(



'increment'



)



}



}



})



modules



项目特别复杂的时候 ,


可以让每一个模块拥有自己的


state


mutation



actio n



getters


,使得结构非常清 晰,方便管理。



.



.



.



.



.



.



.



.



.



.



.



.



.



.



.



const



moduleA = {



state: { ... },



mutations: { ... },



actions: { ... },



getters: { ... }



}



const



moduleB = {



state: { ... },



mutations: { ... },



actions: { ... }



}



const



store =




.



.



.



.



.



.



.



.



.



.



new




Vuex



.



Store



({



modules: {



a: moduleA,



b: moduleB



})



九、其它小知识点



1



css


只在当前组件起作用



答:在


style


标签中写入


scoped


即可



例如:




2



v-if




v-show


区别



答:


v -if


按照条件是否渲染,


v-show



display



block



none



< /p>


3



$$route



$$router


的区别



答:


$$route




路由信息对象



,包括


path



params


,< /p>


hash



query

< br>,


fullPath



matc hed



name


等路由信息参数。而


$$router



< br>路由实例



对象包括了路由的跳


转方法,钩子函数等。




-


-


-


-


-


-


-


-



本文更新与2021-02-28 05:32,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/678931.html

前端面试中常见Vue知识点整理的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文