博客文章連接:管中窺Vuevue
Vue
和Angular
、React.js
的相同點和不一樣點?
與React
的相同:git
Virtual DOM
與React
的區別:github
組件的響應式渲染vue-router
React
的組件的數據狀態發生變化時,它會以該組件爲根,從新渲染整個組件子樹;而Vue
不僅去渲染須要渲染的組件。HTML+CSS
的編寫vuex
React
使用的JSX
語法,將HTML
、CSS
和JS
混寫;而Vue
使用的是templates
模板方式,徹底融合與經典的Web
技術。與Angular
的區別:瀏覽器
Angular 1
對比,Vue
的性能更加優越,Angular
性能會隨着watcher
的增長而變慢,並且Angular
中一些watcher
會觸發另外一個更新,使得「髒檢查循環」可能會運行屢次。Angular
事實上必須用TypeScript
來開發,並且Angular
對於TS
的支持很是全面,而Vue
暫時對於TS
的支持還在改進階段。Vue
的體積更小,一個包含了 vuex + vue-router
的 Vue
項目 (30kb gzipped
) 相比使用了這些優化的 angular-cli
生成的默認項目尺寸 (~130kb
) 仍是要小得多。Vue
中的MVVM
模型?
Vue
是以數據爲驅動的,Vue
自身將DOM
和數據進行綁定,一旦建立綁定,DOM
和數據將保持同步,每當數據發生變化,DOM
會跟着變化。ViewModel
是Vue
的核心,它是Vue
的一個實例。Vue
實例是做用在某個HTML
元素上的,這個HTML
元素能夠是body
,也能夠是某個id
所指代的元素。 DOM Listeners
和Data Bindings
是實現雙向綁定的關鍵。DOM Listeners
監聽頁面全部View
層DOM
元素的變化,當View
發生變化,Model
層的數據隨之變化;Data Bindings
監聽Model
層的數據,當數據發生變化,View
層的DOM
元素隨之變化。v-if
和v-show
指令有什麼區別?
v-show
對應的值不管是true
仍是false
,對應Html
元素都會存在於瀏覽器的文檔中;而v-if
若是是false
的話,直接不在文檔中了。
如何阻止
Vue
中的綁定事件不發生冒泡?
v-on:click.stop
阻止事件冒泡或v-on:submit.prevent
阻止默認事件。父、子組件間是如何通訊的?
Vue
中,每一個組件實例的做用域是孤立的。這也意味着不能(也不該該)在子組件的模板內直接應用父組件的數據。父組件經過Props
向子組件傳遞數據,而子組件經過Events
向父組件傳遞數據。非父子層級的組件如何實現通訊?
Vue
實例做爲中央事件總線。Vue
官方提供的狀態管理模式——Vuex
來進行管理。什麼是動態組件?它的做用是什麼?
<component>
元素,動態地綁定到它的 is
特性,咱們讓多個組件可使用同一個掛載點,並能夠動態地切換。Vue
還提供了keep-alve
指令。keep-alive
指令容許把切換出去的組件保留在內存中,並保留它的狀態或避免從新渲染。
爲何組件中的
data
屬性的值必須是一個函數?
data
的值是一個Object
的話,那麼因爲Object
是一個引用類型,因此即便是該組件被屢次引用,而其實操做的是同一個對象,最終致使了引用該組件的全部位置都同步的顯示了。