1. 程式人生 > >前端面試題整理—Vue篇

前端面試題整理—Vue篇

適合 模式 兼容ie 刪除 splay created prevent 方式 dash

1、對vue的理解,他有什麽特點,vue為什麽不能兼容IE8及以下瀏覽器

  vue是一套用於構建用戶界面的漸進式框架,核心是一個響應的數據綁定系統

  vue是一款MVVM框架,基於雙向綁定數據,當數據發生變化時候,vue自身會進行一些運算

  特點:簡潔輕量、數據驅動、組件化、模塊友好

  vue.js使用了IE8無法模擬的 ECMAScript 5 特性,沒有替代方案

2、簡述Vue雙向數據綁定的原理

  主要是通過Object對象的defineProperty屬性,重寫data的set和get函數來實現的

  vue是通過數據劫持的方式來做數據綁定,最核心的方法就是通過Object.defineProperty()來實現對屬性的劫持

  在設置或者獲取的時候我們就可以在get或者set方法裏加入其他的觸發函數,達到監聽數據變動的目的

3、什麽是MVVM,和MVC的區別

  MVVM是Model-View-ViewModel的縮寫

  Model層代表數據模型

  View代表組件視圖,負責將數據模型轉化成UI展現出來

  ViewModel是一個同步 View 和 Model 的對象(雙向綁定)

  在MVVM中,View和Model之間並沒有直接的聯系,而是通過ViewModel進行交互,

  Model和ViewModel之間的交互是雙向的,因此 通過視圖操作數據,也能通過數據操作視圖

  MVC是Model-View- Controller的簡寫。即模型-視圖-控制器,使用MVC的目的是為了將M和V相分離

  MVVM與MVC最大的區別就是實現了View和Model的自動同步,也就是當Model的屬性改變時

  我們不用再手動操作Dom來改變View,而是改變後該屬性對應View層會自動改變

4、vue.js的兩個核心是什麽

  數據驅動和組件化思想

5、vue與angular的區別

  vue的雙向邦定是基於ES5中getter/setter來實現的,而angular是由自己實現一套模版編譯規則,需要進行所謂的“臟值”檢查,vue則不需要

  vue需要提供一個el對象進行實例化,後續的所有作用範圍也是在el對象之下,而angular而是整個html頁面

6、說下vue的底層原理

  Vue的模式是m-v-vm模式,即(model-view-modelView),通過modelView作為中間層,進行雙向數據的綁定與變化

  1)通過建立虛擬dom樹document.createDocumentFragment(),方法創建虛擬dom樹

  2)一旦被監測的數據改變,會通過Object.defineProperty定義的數據攔截,截取到數據的變化

  3)截取到的數據變化,從而通過訂閱——發布者模式,觸發Watcher(觀察者),從而改變虛擬dom的中的具體數據

  4)最後通過更新虛擬dom的元素值,從而改變最後渲染dom樹的值,完成雙向綁定

7、如何使css只在當前組件起作用

  如果想寫的css只對當前組件起作用,則在style中寫入scoped

8、vue中v-if和v-show的區別

  v-if和v-show都是用來控制元素的渲染

  v-if是根據後面數據的真假,來判斷DOM的添加刪除等操作

  v-show只是在修改元素的css樣式(display屬性值)

  v-if如果初始渲染條件為真,就渲染,反之就不渲染

  v-show不管初始條件是否為真,都會被渲染

  v-if有更高的切換消耗,不適合做頻繁的切換

   v-show有更高的初始渲染消耗,適合做頻繁的切換

9、請舉例vue常用的修飾符

  事件修飾符:stop、prevent、self、once  

  lazy、number、trim、exact

10、v-on可以綁定多個方法嗎?

  可以

<input v-on:keyup.enter="submit" v-on:focus="onFocus">


  

前端面試題整理—Vue篇