《2019Vue全新面試題》值得一看!

目錄:

①v-show 與 v-if 區(qū)別
②動(dòng)態(tài)綁定class的方法
③計(jì)算屬性和 watch 的區(qū)別
④怎樣理解單向數(shù)據(jù)流
⑤keep-alive
⑥自定義組件的語法糖 v-model 是怎樣實(shí)現(xiàn)的
⑦生命周期
⑧組件通信
⑨路由跳轉(zhuǎn)
⑩vue-router 有哪幾種導(dǎo)航鉤子
★Vue.js 2.x 雙向綁定原理
★什么是 MVVM葵硕,與 MVC 有什么區(qū)別
★vuex
★this.$nextTick()

v-show 與 v-if 區(qū)別:

1卖陵、v-hsow和v-if的區(qū)別: v-show是css切換儡嘶,v-if是完整的銷毀和重新創(chuàng)建。
2芜飘、使用 頻繁切換時(shí)用v-show务豺,運(yùn)行時(shí)較少改變時(shí)用v-if
3、v-if=‘false’ v-if是條件渲染燃箭,當(dāng)false的時(shí)候不會(huì)渲染

綁定 class 的數(shù)組用法:

對(duì)象方法 v-bind:class="{'orange': isRipe, 'green': isNotRipe}"
數(shù)組方法 v-bind:class="[class1, class2]"
行內(nèi) v-bind:style="{color: color, fontSize: fontSize+'px' }"

計(jì)算屬性和 watch 的區(qū)別:

計(jì)算屬性是自動(dòng)監(jiān)聽依賴值的變化冲呢,從而動(dòng)態(tài)返回內(nèi)容,監(jiān)聽是一個(gè)過程招狸,在監(jiān)聽的值變化時(shí)敬拓,可以觸發(fā)一個(gè)回調(diào),并做一些事情裙戏。
所以區(qū)別來源于用法乘凸,只是需要?jiǎng)討B(tài)值,那就用計(jì)算屬性累榜;需要知道值的改變后執(zhí)行業(yè)務(wù)邏輯营勤,才用 watch灵嫌,用反或混用雖然可行,但都是不正確的用法葛作。

說出一下區(qū)別會(huì)加分

computed 是一個(gè)對(duì)象時(shí)寿羞,它有哪些選項(xiàng)?
computed 和 methods 有什么區(qū)別赂蠢?
computed 是否能依賴其它組件的數(shù)據(jù)绪穆?
watch 是一個(gè)對(duì)象時(shí),它有哪些選項(xiàng)虱岂?
有g(shù)et和set兩個(gè)選項(xiàng)
2.methods是一個(gè)方法玖院,它可以接受參數(shù),而computed不能第岖,computed是可以緩存的难菌,methods不會(huì)。
3.computed可以依賴其他computed蔑滓,甚至是其他組件的data
4.watch 配置
handler
deep 是否深度
immeditate 是否立即執(zhí)行

總結(jié):

當(dāng)有一些數(shù)據(jù)需要隨著另外一些數(shù)據(jù)變化時(shí)郊酒,建議使用computed。 當(dāng)有一個(gè)通用的響應(yīng)數(shù)據(jù)變化的時(shí)候键袱,要執(zhí)行一些業(yè)務(wù)邏輯或異步操作的時(shí)候建議使用watcher

事件修飾符

1猎塞、綁定一個(gè)原生的click事件, 加native杠纵,
2、其他事件修飾符
3钩骇、stop prevent self
4比藻、組合鍵 click.ctrl.exact 只有ctrl被按下的時(shí)候才觸發(fā)

組件中 data 為什么是函數(shù)

為什么組件中的 data 必須是一個(gè)函數(shù),然后 return 一個(gè)對(duì)象倘屹,而 new Vue 實(shí)例里银亲,data 可以直接是一個(gè)對(duì)象?
因?yàn)榻M件是用來復(fù)用的纽匙,JS 里對(duì)象是引用關(guān)系务蝠,這樣作用域沒有隔離,而 new Vue 的實(shí)例烛缔,是不會(huì)被復(fù)用的馏段,因此不存在引用對(duì)象的問題。

keep-alive

在動(dòng)態(tài)組件上使用

自定義組件的語法糖 v-model 是怎樣實(shí)現(xiàn)的

Vue v-model原理解析

Render 函數(shù) 怎樣理解單向數(shù)據(jù)流

這個(gè)概念出現(xiàn)在組件通信践瓷。父組件是通過 prop 把數(shù)據(jù)傳遞到子組件的院喜,但是這個(gè) prop 只能由父組件修改,子組件不能修改晕翠,否則會(huì)報(bào)錯(cuò)喷舀。子組件想修改時(shí),只能通過 $emit 派發(fā)一個(gè)自定義事件,父組件接收到后硫麻,由父組件修改爸邢。
一般來說,對(duì)于子組件想要更改父組件狀態(tài)的場(chǎng)景拿愧,可以有兩種方案:
在子組件的 data 中拷貝一份 prop杠河,data 是可以修改的,但 prop 不能:

  props: {
    value: String
  },
  data () {
    return {
      currentValue: this.value
    }
  }
}

如果是對(duì) prop 值的轉(zhuǎn)換赶掖,可以使用計(jì)算屬性:

  props: ['size'],
  computed: {
    normalizedSize: function () {
      return this.size.trim().toLowerCase();
    }
  }
}

生命周期

創(chuàng)建前后 beforeCreate/created在beforeCreate 階段感猛,vue實(shí)例的掛載元素el和數(shù)據(jù)對(duì)象data都為undefined,還未初始化奢赂。在created階段陪白,vue實(shí)例的數(shù)據(jù)對(duì)象有了,el還沒有膳灶。
載入前后 beforeMount/mounted在beforeMount階段咱士,vue實(shí)例的$el和data都初始化了,但還是掛載之前未虛擬的DOM節(jié)點(diǎn)轧钓,data尚未替換序厉。在mounted階段,vue實(shí)例掛載完成毕箍,data成功渲染弛房。
更新前后 beforeUpdate/updated當(dāng)data變化時(shí),會(huì)觸發(fā)beforeUpdate和updated方法而柑。這兩個(gè)不常用文捶,不推薦使用。
銷毀前后beforeDestory/destoryed beforeDestory是在vue實(shí)例銷毀前觸發(fā)媒咳,一般在這里要通過removeEventListener解除手動(dòng)綁定的事件粹排。實(shí)例銷毀后,觸發(fā)的destroyed涩澡。

組件間的通信

  1. 父子 props/event parentchildren ref provide/inject
  2. 兄弟 bus vuex
  3. 跨級(jí) bus vuex provide.inject

路由的跳轉(zhuǎn)方式

一般有兩種

<router-link to='home'> router-link標(biāo)簽會(huì)渲染為<a>標(biāo)簽顽耳,咋填template中的跳轉(zhuǎn)都是這種;
另一種是編程是導(dǎo)航 也就是通過js跳轉(zhuǎn) 比如 router.push('/home')

Vue.js 2.x 雙向綁定原理

這個(gè)問題幾乎是面試必問的妙同,回答也是有深有淺射富。基本上要知道核心的 API 是通過 Object.defineProperty() 來劫持各個(gè)屬性的setter / getter粥帚,在數(shù)據(jù)變動(dòng)時(shí)發(fā)布消息給訂閱者辉浦,觸發(fā)相應(yīng)的監(jiān)聽回調(diào),這也是為什么 Vue.js 2.x 不支持 IE8 的原因(IE 8 不支持此 API茎辐,且無法通過 polyfill 實(shí)現(xiàn))宪郊。 cn.vuejs.org/v2/guide/re…

什么是 MVVM掂恕,與 MVC 有什么區(qū)別

www.ruanyifeng.com/blog/2015/0…

nextTick()

在下次 DOM 更新循環(huán)結(jié)束之后執(zhí)行延遲回調(diào)。在修改數(shù)據(jù)之后弛槐,立即使用這個(gè)回調(diào)函數(shù)懊亡,獲取更新后的 DOM。

vm.msg = 'Hello'
// DOM 還未更新
Vue.nextTick(function () {
  // DOM 更新
})
                                    web前端☆喜歡就關(guān)注我吧乎串!
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末店枣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子叹誉,更是在濱河造成了極大的恐慌鸯两,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件长豁,死亡現(xiàn)場(chǎng)離奇詭異钧唐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)匠襟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門钝侠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酸舍,你說我怎么就攤上這事帅韧。” “怎么了啃勉?”我有些...
    開封第一講書人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵忽舟,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我淮阐,道長(zhǎng)萧诫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任枝嘶,我火速辦了婚禮,結(jié)果婚禮上哑诊,老公的妹妹穿的比我還像新娘群扶。我一直安慰自己,他們只是感情好镀裤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開白布竞阐。 她就那樣靜靜地躺著,像睡著了一般暑劝。 火紅的嫁衣襯著肌膚如雪骆莹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評(píng)論 1 302
  • 那天担猛,我揣著相機(jī)與錄音幕垦,去河邊找鬼丢氢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛先改,可吹牛的內(nèi)容都是我干的疚察。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仇奶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼貌嫡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起该溯,我...
    開封第一講書人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤岛抄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后狈茉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夫椭,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年论皆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了益楼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡点晴,死狀恐怖感凤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情粒督,我是刑警寧澤陪竿,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站屠橄,受9級(jí)特大地震影響族跛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜锐墙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一礁哄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧溪北,春花似錦桐绒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蚀乔,卻和暖如春烁竭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吉挣。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工派撕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留婉弹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓腥刹,卻偏偏與公主長(zhǎng)得像马胧,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子衔峰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一:什么是閉包佩脊?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)垫卤。在本質(zhì)上威彰,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,603評(píng)論 1 52
  • VUE Vue :數(shù)據(jù)驅(qū)動(dòng)的M V Vm框架 m :model(后臺(tái)提供數(shù)據(jù)),v :view(頁面)穴肘,vM(模板...
    wudongyu閱讀 5,401評(píng)論 0 11
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容歇盼,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,050評(píng)論 0 29
  • vue概述 在官方文檔中评抚,有一句話對(duì)Vue的定位說的很明確:Vue.js 的核心是一個(gè)允許采用簡(jiǎn)潔的模板語法來聲明...
    li4065閱讀 7,216評(píng)論 0 25
  • 序言:亂七八糟一鍋粥豹缀! 基于Vue.js 教程、介紹— Vue.js 心得: 在vue中慨代,推薦始終使用 kebab...
    苦苦修行閱讀 651評(píng)論 0 1