2019 vue常見面試題

1. vue 組件的生命周期名党?

vue生命周期.png
vue生命周期.jpeg
beforeCreate() { // 這是我們遇到的第一個生命周期函數(shù),表示實(shí)例完全被創(chuàng)建出來之前您单,會執(zhí)行它
        // console.log(this.msg)
        // this.show()
        // 注意: 在 beforeCreate 生命周期函數(shù)執(zhí)行的時候梯投,data 和 methods 中的 數(shù)據(jù)都還沒有沒初始化
      },
      created() { // 這是遇到的第二個生命周期函數(shù)
        // console.log(this.msg)
        // this.show()
        //  在 created 中稻薇,data 和 methods 都已經(jīng)被初始化好了!
        // 如果要調(diào)用 methods 中的方法葵萎,或者操作 data 中的數(shù)據(jù)导犹,最早,只能在 created 中操作
      },
      beforeMount() { // 這是遇到的第3個生命周期函數(shù)陌宿,表示 模板已經(jīng)在內(nèi)存中編輯完成了锡足,但是尚未把 模板渲染到 頁面中
        // console.log(document.getElementById('h3').innerText)
        // 在 beforeMount 執(zhí)行的時候,頁面中的元素壳坪,還沒有被真正替換過來舶得,只是之前寫的一些模板字符串
      },
      mounted() { // 這是遇到的第4個生命周期函數(shù),表示爽蝴,內(nèi)存中的模板沐批,已經(jīng)真實(shí)的掛載到了頁面中,用戶已經(jīng)可以看到渲染好的頁面了
        // console.log(document.getElementById('h3').innerText)
        // 注意: mounted 是 實(shí)例創(chuàng)建期間的最后一個生命周期函數(shù)蝎亚,當(dāng)執(zhí)行完 mounted 就表示九孩,實(shí)例已經(jīng)被完全創(chuàng)建好了,此時发框,如果沒有其它操作的話躺彬,這個實(shí)例,就靜靜的 躺在我們的內(nèi)存中,一動不動
      },
 
 
      // 接下來的是運(yùn)行中的兩個事件
      beforeUpdate() { // 這時候宪拥,表示 我們的界面還沒有被更新【數(shù)據(jù)被更新了嗎仿野?  數(shù)據(jù)肯定被更新了】
        /* console.log('界面上元素的內(nèi)容:' + document.getElementById('h3').innerText)
        console.log('data 中的 msg 數(shù)據(jù)是:' + this.msg) */
        // 得出結(jié)論: 當(dāng)執(zhí)行 beforeUpdate 的時候,頁面中的顯示的數(shù)據(jù)她君,還是舊的脚作,此時 data 數(shù)據(jù)是最新的,頁面尚未和 最新的數(shù)據(jù)保持同步
      },
      updated() {
        console.log('界面上元素的內(nèi)容:' + document.getElementById('h3').innerText)
        console.log('data 中的 msg 數(shù)據(jù)是:' + this.msg)
        // updated 事件執(zhí)行的時候缔刹,頁面和 data 數(shù)據(jù)已經(jīng)保持同步了球涛,都是最新的
      }


2. created 和 mounted 有什么區(qū)別?(掛載完成之后 this.$el 獲取當(dāng)前組件的 dom 元素)

  1. mounted一般是在html渲染完成后的操作校镐,此時el亿扁,data都已經(jīng)加載完成,一般對dom的操作都寫在mounted中灭翔,例如獲取innerHTML魏烫,初始化echarts的時候辣苏。
  2. created一般是在html渲染前的操作肝箱,此時el還是undefined,data已經(jīng)存在稀蟋。這里不能對dom進(jìn)行操作

3. keep-alive:keep-alive是Vue提供的一個抽象組件煌张,用來對組件進(jìn)行緩存,從而節(jié)省性能退客,由于是一個抽象組件骏融,所以在v頁面渲染完畢后不會被渲染成一個DOM元素。

當(dāng)組件在keep-alive內(nèi)被切換時組件的activated萌狂、deactivated這兩個生命周期鉤子函數(shù)會被執(zhí)行

4. slot 插槽(就是組件的占位符):slot(匿名插槽档玻,具名插槽)與slot-scope(作用域插槽)

  1. .單個插槽 -> 匿名插槽
  2. 具名插槽:
    需要多個插槽時,可以利用<slot> 元素的一個特殊的特性:name來定義具名插槽
  3. 作用域插槽——帶數(shù)據(jù)的插槽
    單個插槽和具名插槽中插槽上不綁定數(shù)據(jù)茫藏,所以父組件提供的模板既要包括樣式又要包括數(shù)據(jù)误趴,而作用域插槽是子組件提供數(shù)據(jù),父組件只需要提供一套樣式

5. 組件之間傳值

  1. 父傳子:通過屬性進(jìn)行傳遞(在父組件標(biāo)簽上綁定自定義屬性名务傲,值是父組件要傳遞的數(shù)據(jù)凉当,在子組件內(nèi)部通過props屬性接收屬性名)
  2. 子傳父:通過事件派發(fā)(在子組件標(biāo)簽上綁定自定義事件,子組件內(nèi)部通過$emit給該事件推送數(shù)據(jù)售葡,父組件內(nèi)部通過函數(shù)接收)
  3. 平行組件(事件總線):使用eventbus事件總線看杭,在代碼中創(chuàng)建一個空白的vue實(shí)例,所有事件派發(fā)和監(jiān)聽都在此實(shí)例上進(jìn)行挟伙。

6. 計(jì)算屬性楼雹?主要用一些簡單的計(jì)算。--計(jì)算屬性只有在它的相關(guān)依賴發(fā)生改變時才會重新求值。

7. 計(jì)算屬性和 methods 有什么區(qū)別贮缅?-->總結(jié):computed計(jì)算屬性的緩存原理在我們處理大量數(shù)據(jù)的時候使用可以大大提高效率瓜贾,不必在數(shù)據(jù)沒有發(fā)生改變的時候重新獲取數(shù)據(jù)的值,可直接獲取到結(jié)果携悯,并且只執(zhí)行綁定依賴的方法祭芦。methods里方法在依賴的值改變后,只有設(shè)置觸發(fā)才會重新執(zhí)行methods里相關(guān)的方法憔鬼。

  1. 計(jì)算屬性方法調(diào)用不用加();methods需要龟劲;
  2. 執(zhí)行機(jī)制
    computed里的方法在初始化執(zhí)行過后,只要任何值有更新轴或,那么所有在computed計(jì)算屬性里和其相關(guān)的值都會更新昌跌。
    methods只有在調(diào)用的時候才會執(zhí)行對應(yīng)的方法,不會自動同步數(shù)據(jù)照雁。
    computed計(jì)算屬性跟methods在內(nèi)部的函數(shù)寫起來沒有什么區(qū)別蚕愤,只是在調(diào)用的時候不一樣

8. 過濾器?

  1. 過濾就是一個數(shù)據(jù)經(jīng)過了這個過濾之后出來另一樣?xùn)|西,可以是從中取得你想要的饺蚊,或者給那個數(shù)據(jù)添加點(diǎn)什么裝飾萍诱,那么過濾器則是過濾的工具
  2. 過濾器怎么串聯(lián)使用

//在雙花括號中 

{{ message | capitalize }}

//在 `v-bind` 中 

<p v-bind:id="rawId | formatId"></p>

//也可以串聯(lián)多個過濾器 

{{ message | filterA | filterB }}

9. vue 中怎么定義組件,組件定義需要注意什么事情污呼?

10. 在 vue 中如何定義一個類似于 element-ui 的組件庫裕坊?

11. vue-router

路由的兩種模式:history,hash
路由傳參:params燕酷,query
params傳參的時候可以在路由配置的時候設(shè)置占位符
query傳參就是標(biāo)準(zhǔn)的url傳參形式
如果我們想刷新頁面之后路由傳遞的參數(shù)還存在就必須使用query傳參或者params傳參的時候設(shè)置路由占位符
路由守衛(wèi)
beforeEach
afterEach
在路由守衛(wèi)里可以做登錄判斷籍凝?元屬性(meta)

12. vuex

*****
單項(xiàng)數(shù)據(jù)流
vuex中的數(shù)據(jù)流向(參照官網(wǎng)給的圖能說明)
vuex中主要的五大模塊(state,getters,actions,mutations,modules)
mapState
mapActions
mapMutations

13. vue 中的 mvvm 是怎么實(shí)現(xiàn)的:

MVVM拆開來即為Model-View-ViewModel,有View苗缩,ViewModel饵蒂,Model三部分組成。View層代表的是視圖酱讶、模版退盯,負(fù)責(zé)將數(shù)據(jù)模型轉(zhuǎn)化為UI展現(xiàn)出來。Model層代表的是模型浴麻、數(shù)據(jù)得问,可以在Model層中定義數(shù)據(jù)修改和操作的業(yè)務(wù)邏輯。ViewModel層連接Model和View软免。
對數(shù)據(jù)(Model)進(jìn)行劫持宫纬,當(dāng)數(shù)據(jù)變動時,數(shù)據(jù)會出發(fā)劫持時綁定的方法膏萧,對視圖進(jìn)行更新漓骚。

14. diff 算法:當(dāng)數(shù)據(jù)發(fā)生改變時蝌衔,set方法會讓調(diào)用Dep.notify通知所有訂閱者Watcher,訂閱者就會調(diào)用patch給真實(shí)的DOM打補(bǔ)丁蝌蹂,更新相應(yīng)的視圖噩斟。

15. 虛擬dom:virtual DOM是將真實(shí)的DOM的數(shù)據(jù)抽取出來,以對象的形式模擬樹形結(jié)構(gòu)

16. vue 中為什么不用 jQuery

17. vue 中怎么操作 dom 元素(el,refs)

18. vue 中怎么獲取父組件的內(nèi)容($root)

19. vue 中父組件怎么調(diào)用子組件的方法($refs 選中子組件孤个,直接調(diào)用方法名)

20. 當(dāng)頁面應(yīng)用程序刷新之后怎么保證數(shù)據(jù)還是存在的剃允?你怎么緩存頁面數(shù)據(jù)(sessionStorage,localStorage)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市齐鲤,隨后出現(xiàn)的幾起案子斥废,更是在濱河造成了極大的恐慌,老刑警劉巖给郊,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牡肉,死亡現(xiàn)場離奇詭異,居然都是意外死亡淆九,警方通過查閱死者的電腦和手機(jī)统锤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炭庙,“玉大人饲窿,你說我怎么就攤上這事∶核眩” “怎么了免绿?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長擦盾。 經(jīng)常有香客問我,道長淌哟,這世上最難降的妖魔是什么迹卢? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮徒仓,結(jié)果婚禮上腐碱,老公的妹妹穿的比我還像新娘。我一直安慰自己掉弛,他們只是感情好症见,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著殃饿,像睡著了一般谋作。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乎芳,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天遵蚜,我揣著相機(jī)與錄音帖池,去河邊找鬼。 笑死吭净,一個胖子當(dāng)著我的面吹牛睡汹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播寂殉,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼囚巴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了友扰?” 一聲冷哼從身側(cè)響起文兢,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焕檬,沒想到半個月后姆坚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡实愚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年兼呵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腊敲。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡击喂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碰辅,到底是詐尸還是另有隱情懂昂,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布没宾,位于F島的核電站凌彬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏循衰。R本人自食惡果不足惜铲敛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望会钝。 院中可真熱鬧伐蒋,春花似錦、人聲如沸迁酸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奸鬓。三九已至焙畔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間全蝶,已是汗流浹背闹蒜。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工寺枉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绷落。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓姥闪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親砌烁。 傳聞我的和親對象是個殘疾皇子筐喳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

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

  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,193評論 0 25
  • VUE介紹 Vue的特點(diǎn)構(gòu)建用戶界面函喉,只關(guān)注View層簡單易學(xué)避归,簡潔、輕量管呵、快速漸進(jìn)式框架 框架VS庫庫梳毙,是一封裝...
    多多醬_DuoDuo_閱讀 2,692評論 1 17
  • 一:什么是閉包?閉包的用處捐下? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)账锹。在本質(zhì)上,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,556評論 1 52
  • HTML5有哪些新特性坷襟?如何處理HTML5新標(biāo)簽的瀏覽器兼容問題奸柬?如何區(qū)分HTML和HTML5? *HTML5 現(xiàn)...
    小程要謙虛閱讀 757評論 1 8
  • vue是什么婴程? vue是構(gòu)建數(shù)據(jù)驅(qū)動的web界面的漸進(jìn)式框架廓奕。Vue.js 的目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)...
    九四年的風(fēng)閱讀 8,697評論 2 131