前端面試題(六)--高頻面試題

1.什么是Vuex讨越?詳述Vuex的工作流程

答:

官方介紹:Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài)抚垄,并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化齐遵。

1. Vuex其實(shí)就是一個(gè)Vue的集中狀態(tài)管理工具戒良,類似于redux体捏,但使用方法很明顯優(yōu)化了許多

2. 什么時(shí)候使用Vuex?

官方的話說蔬墩,在你需要用的時(shí)候自然而然就知道自己什么時(shí)候要用了

在我看來,當(dāng)項(xiàng)目需要使用公共數(shù)據(jù)耗拓,并且這個(gè)公共數(shù)據(jù)的訪問量較大的時(shí)候拇颅,我們可以使用Vuex,用來集中管理公共的數(shù)據(jù)乔询,而一些小型的項(xiàng)目樟插,我們可以靠中央通信總線的發(fā)布訂閱模式來實(shí)現(xiàn)數(shù)據(jù)管理與通信

3. Vuex的工作流程

首先通過dispatch提交一個(gè)action

在action中我們可以執(zhí)行一些異步的操作,或者根據(jù)不同的情況分發(fā)不同的mutation

接著在action中調(diào)用commit竿刁,觸發(fā)一個(gè)mutation

所有修改state的操作黄锤,全部應(yīng)該放在mutation中來做

而state更新之后,會(huì)調(diào)用Vue的底層方法食拜,通知視圖進(jìn)行更新渲染

4. Vuex不像redux鸵熟,redux在任何項(xiàng)目工程內(nèi)都可以使用,不僅限于react负甸,但是Vuex是基于Vue的底層實(shí)現(xiàn)的一個(gè)狀態(tài)管理工具流强,其實(shí)Vuex中的store本質(zhì)就是沒有template的隱藏著的vue組件


2.詳述Vuex的核心屬性及使用

答:state

state存儲(chǔ)了Vuex的基本數(shù)據(jù),在state中存儲(chǔ)的數(shù)據(jù)都是經(jīng)過Vue底層watcher偵聽的數(shù)據(jù)呻待,可以實(shí)現(xiàn)響應(yīng)式數(shù)據(jù)

actions

actions存放了Vuex中所有的異步操作打月,可以在actions中通過commit分發(fā)不同的mutation,在不同的情況下執(zhí)行不同的方法

mutations

mutations存放了Vuex中所有關(guān)于state的操作蚕捉,修改state只能通過mutations奏篙,否則的話數(shù)據(jù)不會(huì)響應(yīng)式更新

getters

getters就類似與Vue實(shí)例中的computed,計(jì)算屬性迫淹,所有關(guān)于數(shù)據(jù)的復(fù)雜計(jì)算應(yīng)該放在getters中來操作

modules

modules秘通,類似于redux中的reducer,每一個(gè)module都擁有自己的state敛熬、mutations充易、actions、getters荸型;將整個(gè)store根據(jù)功能或者數(shù)據(jù)分解成不同的模塊盹靴,最后合并在一個(gè)Store中

Vuex的使用

import Vue from 'vue'

import Vuex from 'vuex'

Vue.use(Vuex);

// 這里我就不貼出對(duì)應(yīng)模塊的代碼了

export default new Vuex.Store({

? ? modules: {

? ? ? ? shopCart, // 購物車模塊

? ? ? ? user // 用戶模塊

? ? }

})

// 使用模塊

import {mapState,mapActions,mapMutations,mapGetters} from 'vuex';

// Vue實(shí)例

export default {

? ? computed: {

? ? ? ? ...mapState(['user','shopCart']), // 拿到store中的user模塊和shopCart模塊

? ? ? ? ...mapGetters(['total']) // 拿到getters計(jì)算屬性中的總價(jià)炸茧,不區(qū)分模塊

? ? },

? ? methods: {

? ? ? ? ...mapActions(['getUserData']), // 拿到actions中的getUserData方法,不區(qū)分模塊

? ? ? ? ...mapMutations(['addGoodsToShopCart']) // 拿到mutations中的addGoodsToShopCart方法

? ? }

}



3.vue和jquery的區(qū)別

答:Jquery直接操作DOM稿静,使用選擇器以及便捷的DOM操作方式來修改視圖以及數(shù)據(jù)

Vue不直接操作DOM梭冠,而是通過雙向數(shù)據(jù)綁定的方式,將DOM節(jié)點(diǎn)在Vue內(nèi)部轉(zhuǎn)化對(duì)象的形式改备,通過修改數(shù)據(jù)直接修改視圖

Jquery是一個(gè)前端類庫控漠,只是提供了很多便捷操作DOM的方法,而Vue是一個(gè)框架悬钳,有一套完整的體系


4.vue中的slot是什么盐捷?

答:? 在Vue中,我們一般使用UI界面來劃分組件默勾,而每一個(gè)UI界面可以劃分很多個(gè)組件碉渡,不同的UI界面中難免會(huì)有相似之處,

這種相似的地方母剥,我們?nèi)绾瓮ㄟ^一種優(yōu)雅的方式來達(dá)到復(fù)用這個(gè)UI組件呢滞诺?就是使用slot插槽了

slot插槽,其實(shí)就是用來做內(nèi)容分發(fā)环疼,使得可以最大程度的復(fù)用組件习霹,達(dá)到每次使用同一個(gè)組件的時(shí)候可以根據(jù)情況創(chuàng)建不同的內(nèi)容的功能

匿名插槽

不具有name屬性的slot就是匿名插槽,也可以叫默認(rèn)插槽

由父組件提供樣式和內(nèi)容炫隶,子組件只負(fù)責(zé)顯示

匿名插槽/默認(rèn)插槽只可以使用一次

<slot>里邊寫的是默認(rèn)值</slot>

在子組件內(nèi)定義slot時(shí)淋叶,內(nèi)部可以定義默認(rèn)值,當(dāng)父組件有內(nèi)容分發(fā)的時(shí)候伪阶,顯示父組件的內(nèi)容爸吮,沒有的時(shí)候,顯示默認(rèn)內(nèi)容

具名插槽

有name屬性

在組件中可以使用N次(name值不同的情況下)

父組件通過html模板上的slot屬性關(guān)聯(lián)具名插槽

<template v-slot:插槽名稱><div>插槽內(nèi)容</div></template>

沒有slot屬性的html模板默認(rèn)關(guān)聯(lián)匿名模板

父組件提供樣式和內(nèi)容

<slot name="插槽名稱"></slot>

作用域插槽(帶數(shù)據(jù)的插槽)

父組件只提供樣式望门,子組件提供內(nèi)容

在slot上面綁定數(shù)據(jù)

子組件的值可以傳給父組件使用

父組件展示子組件數(shù)據(jù)有3種方式:flex顯示形娇、列表顯示、直接顯示

使用v-slot必須使用template;之前使用的是slot-scope筹误,但是這個(gè)屬性已經(jīng)在2.6.0廢棄了桐早,現(xiàn)在使用v-slot指令來代替原有的slot-scope屬性

scope返回的值是slot標(biāo)簽上返回的所有屬性值,并且是一個(gè)對(duì)象的形式保存起來

// 子組件中

? <slot :data="data" :message="message"></slot>

// 父組件中

? ? <template? v-slot="scope">

? ? ? <div class="data-list">

? ? ? ? ? <span v-for="(item,index) in scope.data" :key="index">{{item}}</span>

? ? ? </div>

? ? ? <div class="data-message">

? ? ? ? ? {{scope.message}}

? ? ? </div>? ? ? ? ? ? ? ?

? </template>

·



5.SPA首屏加載慢厨剪,該如何解決哄酝?

答: ? 抽取css文件

????????使用CDN資源

????????使用路由模塊化加載

????????按照頁面或者組件分塊懶加載

????????使用gzip減小網(wǎng)絡(luò)傳輸?shù)牧髁看笮?/p>

? ? ? ? 使用服務(wù)端渲染的方式

????????使用預(yù)渲染的方式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市祷膳,隨后出現(xiàn)的幾起案子陶衅,更是在濱河造成了極大的恐慌,老刑警劉巖直晨,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搀军,死亡現(xiàn)場(chǎng)離奇詭異膨俐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)罩句,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門焚刺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人门烂,你說我怎么就攤上這事乳愉。” “怎么了屯远?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蔓姚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我慨丐,道長(zhǎng)坡脐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任咖气,我火速辦了婚禮挨措,結(jié)果婚禮上挖滤,老公的妹妹穿的比我還像新娘崩溪。我一直安慰自己,他們只是感情好斩松,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布伶唯。 她就那樣靜靜地躺著,像睡著了一般惧盹。 火紅的嫁衣襯著肌膚如雪乳幸。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天钧椰,我揣著相機(jī)與錄音粹断,去河邊找鬼。 笑死嫡霞,一個(gè)胖子當(dāng)著我的面吹牛瓶埋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诊沪,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼养筒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了端姚?” 一聲冷哼從身側(cè)響起晕粪,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渐裸,沒想到半個(gè)月后巫湘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體装悲,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年剩膘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衅斩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怠褐,死狀恐怖畏梆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情奈懒,我是刑警寧澤奠涌,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站磷杏,受9級(jí)特大地震影響溜畅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜极祸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一慈格、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遥金,春花似錦浴捆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至美莫,卻和暖如春页眯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厢呵。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工窝撵, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人襟铭。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓碌奉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蝌矛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子道批,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

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

  • 什么是Vuex?詳述Vuex的工作流程 官方介紹:Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式入撒。...
    郝晨光閱讀 1,531評(píng)論 1 18
  • 計(jì)算屬性如何使用 一般我們?cè)趯憊ue的時(shí)候隆豹,在模板內(nèi)寫的表達(dá)式非常便利,它運(yùn)用于簡(jiǎn)單的運(yùn)算茅逮,但是他也有一些復(fù)雜的邏...
    X秀秀閱讀 13,754評(píng)論 1 19
  • 原文:http://www.reibang.com/p/0cdf51904afb 計(jì)算屬性如何使用 一般我們?cè)趯?..
    L_b115閱讀 768評(píng)論 0 0
  • vuex 場(chǎng)景重現(xiàn):一個(gè)用戶在注冊(cè)頁面注冊(cè)了手機(jī)號(hào)碼璃赡,跳轉(zhuǎn)到登錄頁面也想拿到這個(gè)手機(jī)號(hào)碼判哥,你可以通過vue的組件化...
    sunny519111閱讀 8,015評(píng)論 4 111
  • 說明:以下內(nèi)容僅是個(gè)人無責(zé)任猜測(cè)腦補(bǔ)塌计。如有不妥,肯定是我的錯(cuò)侯谁。如有雷同锌仅,肯定是你的錯(cuò)。 前日冬至墙贱。 像我這種單身老...
    Lochaiching閱讀 1,575評(píng)論 5 6