Vue常見面試題

1.什么是vue的生命周期筷黔?

Vue實例從創(chuàng)建到銷毀的過程恩商,就是生命周期。也就是從開始創(chuàng)建必逆、初始化數(shù)據(jù)怠堪、編譯模板、掛載DOM->渲染名眉、更新->渲染粟矿、卸載等一系列過程,我們稱這是Vue的生命周期损拢。

2.vue生命周期的作用是什么陌粹?

它的生命周期中有多個事件鉤子,讓我們在控制整個vue實例的過程時更容易形成好的邏輯福压。

3.Vue生命周期總共有幾個階段掏秩?

它可以總共分為8個階段:創(chuàng)建前/后,載入前/后,更新前/后荆姆,銷毀前/銷毀后

4.第一次頁面加載會觸發(fā)那幾個鉤子蒙幻?

第一次頁面加載時會觸發(fā)beforeCreate,created,beforeMount,mounted

5.DOM渲染在哪個周期中就已經(jīng)完成?

DOM渲染在mounted中就已經(jīng)完成了

6.生命周期鉤子的一些使用方法:

1.beforecreate:可以在加個loading事件胆筒,在加載實例是觸發(fā)

2.created:初始化完成時的事件寫在這里邮破,如在這結(jié)束loading事件,異步請求也適宜在這里調(diào)用

3.mounted:掛載元素仆救,獲取到dom節(jié)點

4.updated:如果對數(shù)據(jù)統(tǒng)一處理抒和,在這里寫上相應(yīng)函數(shù)

5.beforeDestroy:可以一個確認停止事件的確認框

6.nextTick:更新數(shù)據(jù)后立即操作dom

7.v-show與v-if的區(qū)別

v-show是css切換,v-if是完整的銷毀和重新創(chuàng)建

使用頻繁切換時用v-show,運行時較少改變時用v-if

V-if=’false’v-if是條件渲染彤蔽,當false的時候不會渲染

使用v-if的時候摧莽,如果值為false,那么頁面將不會有這個html標簽生成

v-show則是不管值是為true還是false顿痪,html元素都會存在镊辕,只是css中的display顯示或隱藏

v-show 僅僅控制元素的顯示方式,將 display 屬性在 block 和 none 來回切換员魏;而v-if會控制這個 DOM 節(jié)點的存在與否丑蛤。當我們需要經(jīng)常切換某個元素的顯示/隱藏時,使用v-show會更加節(jié)省性能上的開銷撕阎;當只需要一次顯示或隱藏時受裹,使用v-if更加合理。

8.開發(fā)中常用的指令有哪些?

v-model:一般用在表達輸入,很輕松的實現(xiàn)表單控件和數(shù)據(jù)的雙向綁定

v-html:更新元素的innerHTML

v-show與v-if:條件渲染棉饶,注意二者區(qū)別

v-on:click:可以簡寫為@click,@綁定一個事件厦章。如果事件觸發(fā)了,就可以指定事件的處理函數(shù)

v-for:基于源數(shù)據(jù)多次渲染元素或模板

v-bind:當表達式的值改變時照藻,將其產(chǎn)生的連帶影響袜啃,響應(yīng)式地作用于DOM語法

v-bind:title=”msg”簡寫:title="msg"

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

1.對象方法v-bind:class="{'orange':isRipe, 'green':isNotRipe}”

2.數(shù)組方法v-bind:class="[class1,class2]"

3.行內(nèi)v-bind:style="{color:color,fontSize:fontSize+'px'}”

10.路由跳轉(zhuǎn)方式

1.router-link標簽會渲染為標簽,咋填template中的跳轉(zhuǎn)都是這種幸缕;

2.另一種是編輯是導(dǎo)航群发,也就是通過js跳轉(zhuǎn)比如router.push('/home')

12.computed和watch有什么區(qū)別

computed

computed是計算屬性,也就是計算值发乔,它更多用于計算值的場景

computed具有緩存性熟妓,computed的值在getter執(zhí)行后是會緩存的,只有在它依賴的屬性值改變之后栏尚,下一次獲取computed的值時重新調(diào)用對應(yīng)的getter來計算

computed適用于計算比較消耗性能的計算場景

watch

watch更多的是[觀察]的作用起愈,類似于某些數(shù)據(jù)的監(jiān)聽回調(diào),用于觀察props $emit或者本組件的值译仗,當數(shù)據(jù)變化時來執(zhí)行回調(diào)進行后續(xù)操作

無緩存性抬虽,頁面重新渲染時值不變化也會執(zhí)行

小結(jié)

當我們要進行數(shù)值計算,而且依賴于其他數(shù)據(jù)纵菌,那么把這個數(shù)據(jù)設(shè)計為computed

如果你需要在某個數(shù)據(jù)變化時做一些事情阐污,使用watch來觀察這個數(shù)據(jù)變化。

13.vue組件的scoped屬性的作用

在style標簽上添加scoped屬性产艾,以表示它的樣式作用于當下的模塊疤剑,很好的實現(xiàn)了樣式私有化的目的;

但是也得慎用:樣式不易(可)修改闷堡,而很多時候,我們是需要對公共組件的樣式做微調(diào)的疑故;

解決辦法:

①:使用混合型的css樣式:(混合使用全局跟本地的樣式)? /* 全局樣式 */? /* 本地樣式 */

②:深度作用選擇器(>>>)如果你希望 scoped 樣式中的一個選擇器能夠作用得“更深”杠览,例如影響子組件,你可以使用 >>> 操作符: .a >>> .b { /* ... */ }

14.vue是漸進式的框架的理解:(主張最少,沒有多做職責(zé)之外的事)

Vue的核心的功能纵势,是一個視圖模板引擎踱阿,但這不是說Vue就不能成為一個框架。如下圖所示钦铁,這里包含了Vue的所有部件软舌,在聲明式渲染(視圖模板引擎)的基礎(chǔ)上,我們可以通過添加組件系統(tǒng)牛曹、客戶端路由佛点、大規(guī)模狀態(tài)管理來構(gòu)建一個完整的框架。更重要的是,這些功能相互獨立超营,你可以在核心功能的基礎(chǔ)上任意選用其他的部件鸳玩,不一定要全部整合在一起⊙荼眨可以看到不跟,所說的“漸進式”,其實就是Vue的使用方式米碰,同時也體現(xiàn)了Vue的設(shè)計的理念

在我看來窝革,漸進式代表的含義是:主張最少。視圖模板引擎

每個框架都不可避免會有自己的一些特點吕座,從而會對使用者有一定的要求聊闯,這些要求就是主張,主張有強有弱米诉,它的強勢程度會影響在業(yè)務(wù)開發(fā)中的使用方式菱蔬。

比如說,Angular史侣,它兩個版本都是強主張的拴泌,如果你用它,必須接受以下東西:

必須使用它的模塊機制- 必須使用它的依賴注入- 必須使用它的特殊形式定義組件(這一點每個視圖框架都有惊橱,難以避免)

所以Angular是帶有比較強的排它性的蚪腐,如果你的應(yīng)用不是從頭開始,而是要不斷考慮是否跟其他東西集成税朴,這些主張會帶來一些困擾回季。

Vue可能有些方面是不如React,不如Angular正林,但它是漸進的泡一,沒有強主張,你可以在原有大系統(tǒng)的上面觅廓,把一兩個組件改用它實現(xiàn)鼻忠,當jQuery用;也可以整個用它全家桶開發(fā)杈绸,當Angular用帖蔓;還可以用它的視圖,搭配你自己設(shè)計的整個下層用瞳脓。也可以函數(shù)式塑娇,都可以,它只是個輕量視圖而已劫侧,只做了自己該做的事埋酬,沒有做不該做的事,僅此而已。

漸進式的含義奇瘦,我的理解是:沒有多做職責(zé)之外的事棘催。

15.vue.js的兩個核心是什么(數(shù)據(jù)驅(qū)動、組件系統(tǒng)耳标。)

數(shù)據(jù)驅(qū)動:Object.defineProperty和存儲器屬性: getter和setter(所以只兼容IE9及以上版本)醇坝,可稱為基于依賴收集的觀測機制,核心是VM,即ViewModel次坡,保證數(shù)據(jù)和視圖的一致性呼猪。

16.vue常用修飾符

修飾符分為:一般修飾符,事件修身符砸琅,按鍵宋距、系統(tǒng)

①一般修飾符:

.lazy:v-model 在每次 input 事件觸發(fā)后將輸入框的值與數(shù)據(jù)進行同步 。你可以添加 lazy 修飾符症脂,從而轉(zhuǎn)變?yōu)槭褂?change 事件進行同步

<inputv-model.lazy="msg">

.number

.trim

1.如果要自動過濾用戶輸入的首尾空白字符

② 事件修飾符

<av-on:click.stop="doThis"></a><!-- 阻止單擊事件繼續(xù)傳播 -->

<formv-on:submit.prevent="onSubmit"></form> <!-- 提交事件不再重載頁面 -->

<av-on:click.stop.prevent="doThat"></a> <!-- 修飾符可以串聯(lián) -->

<formv-on:submit.prevent></form>? <!-- 只有修飾符 -->

<divv-on:click.capture="doThis">...</div>? <!-- 添加事件監(jiān)聽器時使用事件捕獲模式 -->?<!-- 即元素自身觸發(fā)的事件先在此處處理谚赎,然后才交由內(nèi)部元素進行處理 -->

<divv-on:click.self="doThat">...</div>? <!-- 只當在 event.target 是當前元素自身時觸發(fā)處理函數(shù) --> <!-- 即事件不是從內(nèi)部元素觸發(fā)的 -->

<av-on:click.once="doThis"></a> <!-- 點擊事件將只會觸發(fā)一次 -->

③按鍵修飾符

全部的按鍵別名:

.enter.tab.delete(捕獲“刪除”和“退格”鍵).esc.space.up.down.left.right.ctrl.alt.shift.meta

或者

④系統(tǒng)修飾鍵 (可以用如下修飾符來實現(xiàn)僅在按下相應(yīng)按鍵時才觸發(fā)鼠標或鍵盤事件的監(jiān)聽器。)

.ctrl.alt.shift.meta

或者Dosomething

20.Vue 組件中 data 為什么必須是函數(shù)

vue組件中data值不能為對象诱篷,因為對象是引用類型壶唤,組件可能會被多個實例同時引用。

如果data值為對象棕所,將導(dǎo)致多個實例共享一個對象闸盔,其中一個組件改變data屬性值,其它實例也會受到影響琳省。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末迎吵,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子针贬,更是在濱河造成了極大的恐慌击费,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坚踩,死亡現(xiàn)場離奇詭異荡灾,居然都是意外死亡,警方通過查閱死者的電腦和手機瞬铸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來础锐,“玉大人嗓节,你說我怎么就攤上這事〗跃” “怎么了拦宣?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我鸵隧,道長绸罗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任豆瘫,我火速辦了婚禮珊蟀,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘外驱。我一直安慰自己育灸,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布昵宇。 她就那樣靜靜地躺著磅崭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瓦哎。 梳的紋絲不亂的頭發(fā)上砸喻,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音蒋譬,去河邊找鬼割岛。 笑死,一個胖子當著我的面吹牛羡铲,可吹牛的內(nèi)容都是我干的蜂桶。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼也切,長吁一口氣:“原來是場噩夢啊……” “哼扑媚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起雷恃,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤疆股,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后倒槐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旬痹,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年讨越,在試婚紗的時候發(fā)現(xiàn)自己被綠了两残。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡把跨,死狀恐怖人弓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情着逐,我是刑警寧澤崔赌,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布意蛀,位于F島的核電站,受9級特大地震影響健芭,放射性物質(zhì)發(fā)生泄漏县钥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一慈迈、第九天 我趴在偏房一處隱蔽的房頂上張望若贮。 院中可真熱鬧,春花似錦吩翻、人聲如沸兜看。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽细移。三九已至,卻和暖如春熊锭,著一層夾襖步出監(jiān)牢的瞬間弧轧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工碗殷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留精绎,地道東北人。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓锌妻,卻偏偏與公主長得像代乃,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仿粹,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

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

  • 1.什么是vue的生命周期搁吓? Vue實例從創(chuàng)建到銷毀的過程,就是生命周期吭历。也就是從開始創(chuàng)建堕仔、初始化數(shù)據(jù)、編譯模板晌区、...
    桔子TJ閱讀 192評論 0 0
  • 1摩骨、對vue的理解,有什么特點朗若,vue為什么不能兼容IE8及以下瀏覽器 vue是一套用于構(gòu)建用戶界面的漸進式框架恼五,...
    GGYY丶閱讀 10,813評論 0 11
  • 1.什么是vue的生命周期? Vue實例從創(chuàng)建到銷毀的過程哭懈,就是生命周期唤冈。也就是從開始創(chuàng)建、初始化數(shù)據(jù)银伟、編譯模板你虹、...
    清風(fēng)伴酒__閱讀 268評論 0 0
  • vue.js的兩個核心:數(shù)據(jù)驅(qū)動、組件系統(tǒng) 1.什么是MVVM彤避? MVVM是Model-View-ViewMode...
    小薇同學(xué)v閱讀 752評論 1 6
  • 1.vue優(yōu)點 1. 輕量化 使用 Vue.js 來開發(fā)生產(chǎn)應(yīng)用或個人項目的一個顯著優(yōu)勢是它是一個相對輕量化的框架...