iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 1
1
Modern Web

30天前端面試題分享系列 第 1

30天前端面試題第一天 Vue

爲什麼Vue子組件中的data需要是一個函數?

我們知道,在一個Vue的項目中,根實中的data可以直接是一個對象,但是在子組件中,就必須是一個函數的形式,這是爲什麼呢?
因爲根實例只有一個,但是子組件會有很多,如果每一個data都是一個對象的時候,很容易在引用的時候,將其重複引用,或者是不同組件中中的相同屬性,會互相影響,這涉及到了閉包的問題。但是如果子組件的data是一個函數的話,那麼獲取data就是執行函數,其中返回的對象是獨一無二的。

v-if和v-show的區別

v-if是操作了DOM,v-show只是操作這個元素的display屬性,所以在大量的操作DOM時,推薦使用show,使用if的話,對性能優化沒有太大的好處。

v-if和v-for可以連用嗎?

答案是建議不要,v-for和v-if在一個標籤中的時候,是會先執行for然後再進行if判斷的,那麼不管有沒有,都會進行一次循環,並且上面提到,if是直接操作DOM的,非常影響性能,所以不要連用。

組件之間的通訊有哪些?

父子組件通訊

props

兄弟組件通訊

$emit / $on

祖孫組件通訊

provide/inject
attrs/listeners

什麼是EventBus

在項目中,的Vue原型中加入一個bus,它是一個Vue的實例,那麼,在所有的子組件中,都可以通過this.$bus.$emit / $on 來進行發佈訂閱通訊,建議是小型項目使用,大型項目還是用vuex

VUe3中的响应式原理是怎么实现的,为什么?

Vue3中的响应式原理是用了ES6中的Proxy實現的,優點是可以進行深度遍歷,節省性能。

今天就到這裏了,寫了太多的話 ,下次就沒得寫啦


下一篇
Day 2 实现Promise的一些API
系列文
30天前端面試題分享4

尚未有邦友留言

立即登入留言