58 道 Vue 常見面試題集錦菩佑,涵蓋入門到精通自晰,自測 Vue 掌握程度

來自:知乎
作者:Lucky Girl
原文鏈接

1. Vue的優(yōu)點?

  • 輕量級框架:只關(guān)注視圖層稍坯,是一個構(gòu)建數(shù)據(jù)的視圖集合酬荞,大小只有幾十 kb 搓劫;
  • 簡單易學(xué):國人開發(fā),中文文檔混巧,不存在語言障礙 枪向,易于理解和學(xué)習(xí);
  • 雙向數(shù)據(jù)綁定:保留了 angular 的特點咧党,在數(shù)據(jù)操作方面更為簡單秘蛔;
  • 組件化:保留了 react 的優(yōu)點,實現(xiàn)了 html 的封裝和重用傍衡,在構(gòu)建單頁面應(yīng)用方面有著獨特的優(yōu)勢缠犀;
  • 視圖,數(shù)據(jù)聪舒,結(jié)構(gòu)分離:使數(shù)據(jù)的更改更為簡單辨液,不需要進行邏輯代碼的修改,只需要操作數(shù)據(jù)就能完成相關(guān)操作箱残;
  • 虛擬DOM:dom 操作是非常耗費性能的滔迈, 不再使用原生的 dom 操作節(jié)點,極大解放 dom 操作被辑,但具體操作的還是 dom 不過是換了另一種方式燎悍;
  • 運行速度更快:相比較與 react 而言,同樣是操作虛擬 dom 盼理,就性能而言谈山, vue 存在很大的優(yōu)勢。

2. vue父組件如何向子組件傳遞數(shù)據(jù)奏路?

通過 props

3. 子組件如何向父組件傳遞事件鸽粉?

$emit方法

4. v-show 和 v-if指令的共同點和不同點?

共同點:

都能控制元素的顯示和隱藏

不同點:

實現(xiàn)本質(zhì)方法不同

  • v-show 本質(zhì)就是通過控制 css 中的 display 設(shè)置為 none 儡首,控制隱藏蔬胯,只會編譯一次笔宿;
  • v-if 是動態(tài)的向 DOM 樹內(nèi)添加或者刪除 DOM 元素泼橘,若初始值為 false 醋粟,就不會編譯了米愿。而且 v-if 不停的銷毀和創(chuàng)建比較消耗性能育苟。

總結(jié):如果要頻繁切換某節(jié)點违柏,使用 v-show (切換開銷比較小,初始開銷較大)馍惹。如果不需要頻繁切換某節(jié)點使用 v-if(初始渲染開銷較小万矾,切換開銷比較大)勤众。

5. 如何讓CSS只在當(dāng)前組件中起作用?

為組件的style標(biāo)簽添加scoped屬性

6. <keep-alive></keep-alive> 的作用是什么?

keep-alive 是 Vue 內(nèi)置的一個組件吕朵,可以使被包含的組件保留狀態(tài)努溃,或避免重新渲染沦疾。

7. 如何獲取dom?

添加ref屬性

使用$refs獲取

例子:

<template>
    <div>
        <h1 ref="headOne">Vue</h1>
    </div>
</template>

<script>
    export default {
        created() {
            console.log(this.$refs.headOne)
        }
    }
</script>

8. 說出幾種vue當(dāng)中的指令和它的用法哮塞?

  • v-model 雙向數(shù)據(jù)綁定
  • v-for 循環(huán)
  • v-if忆畅, v-show 顯示與隱藏
  • v-on 事件缓醋;v-once : 只綁定一次

9. vue-loader是什么送粱?使用它的用途有哪些葫督?

vue 文件的一個加載器橄镜,將 template/js/style 轉(zhuǎn)換成 js 模塊洽胶。

用途:

js 可以寫 es6 、 style樣式可以 scss 或 less 喷好、 template 可以加 jade 等

10. 為什么使用key?

需要使用 key 來給每個節(jié)點做一個唯一標(biāo)識梗搅, Diff 算法就可以正確的識別此節(jié)點无切。作用主要是為了高效的更新虛擬 DOM哆键。

11. axios及安裝?

請求后臺資源的模塊闪盔。

npm install axios —save 裝好, js中使用 import 進來听绳,然后 .get 或 .post 辫红。返回結(jié)果在 .then 函數(shù)中贴妻,如果失敗則是在 .catch 函數(shù)中。

12. v-modal的使用

v-model 用于表單數(shù)據(jù)的雙向綁定娩鹉,其實它就是一個語法糖弯予,這個背后就做了兩個操作:v-bind 綁定一個 value 屬性锈嫩;v-on 指令給當(dāng)前元素綁定 input 事件

13. 請說出vue.cli項目中src目錄每個文件夾和文件的用法呼寸?

assets 文件夾是放靜態(tài)資源对雪;
components 是放組件;
router 是定義路由相關(guān)的配置;
app.vue 是一個應(yīng)用主組件蝶柿;
main.js 是入口文件。

14. 分別簡述computed和watch的使用場景

  • computed : 當(dāng)一個屬性受多個屬性影響的時候就需要用到 computed 劫笙,最典型的例子:購物車商品結(jié)算的時候
  • watch : 當(dāng)一條數(shù)據(jù)影響多條數(shù)據(jù)的時候就需要用 watch 填大,例子:搜索數(shù)據(jù)

15. v-on可以監(jiān)聽多個方法嗎允华?

可以

    <input type="text" v-on="{ input:onInput,focus:onFocus,blur:onBlur, }">

16. $nextTick的使用

當(dāng)你修改了data 的值然后馬上獲取這個 dom 元素的值磷蜀,是不能獲取到更新后的值百炬, 你需要使用 $nextTick 這個回調(diào)庶弃,讓修改后的 data 值渲染更新到 dom 元素之后再獲取歇攻,才能成功缴守。

17. vue組件中data為什么必須是一個函數(shù)斧散?

因為 JavaScript 的特性所導(dǎo)致,在 component 中箍镜,data 必須以函數(shù)的形式存在色迂,不可以是對象。組件中的 data 寫成一個函數(shù)诈悍,數(shù)據(jù)以函數(shù)返回值的形式定義适袜,這樣每次復(fù)用組件的時候苦酱,都會返回一份新的 data 疫萤,相當(dāng)于每個組件實例都有自己私有的數(shù)據(jù)空間,它們只負(fù)責(zé)各自維護的數(shù)據(jù)帝际,不會造成混亂蹲诀。而單純的寫成對象形式,就是所有的組件實例共用了一個 data 弃揽,這樣改一個全都改了脯爪。

18. 漸進式框架的理解

  • 主張最少
  • 可以根據(jù)不同的需求選擇不同的層級

19. Vue中雙向數(shù)據(jù)綁定是如何實現(xiàn)的?

vue 雙向數(shù)據(jù)綁定是通過 數(shù)據(jù)劫持 結(jié)合 發(fā)布訂閱模式的方式來實現(xiàn)的矿微, 也就是說數(shù)據(jù)和視圖同步痕慢,數(shù)據(jù)發(fā)生變化,視圖跟著變化涌矢,視圖變化掖举,數(shù)據(jù)也隨之發(fā)生改變;核心:關(guān)于VUE雙向數(shù)據(jù)綁定娜庇,其核心是 Object.defineProperty() 方法。

20. 單頁面應(yīng)用和多頁面應(yīng)用區(qū)別及優(yōu)缺點

單頁面應(yīng)用(SPA),通俗一點說就是指只有一個主頁面的應(yīng)用调塌,瀏覽器一開始要加載所有必須的 html, js, css姜凄。所有的頁面內(nèi)容都包含在這個所謂的主頁面中申鱼。但在寫的時候匣砖,還是會分開寫(頁面片段)拂共,然后在交互的時候由路由程序動態(tài)載入培慌,單頁面的頁面跳轉(zhuǎn)祥诽,僅刷新局部資源维哈。多應(yīng)用于pc端。

多頁面(MPA)狞甚,就是指一個應(yīng)用中有多個頁面,頁面跳轉(zhuǎn)時是整頁刷新

單頁面的優(yōu)點:用戶體驗好,快鸳慈,內(nèi)容的改變不需要重新加載整個頁面肋杖,基于這一點spa對服務(wù)器壓力較小靠益;前后端分離;頁面效果會比較炫酷(比如切換頁面內(nèi)容時的專場動畫)七婴。

單頁面缺點:不利于seo艰管;導(dǎo)航不可用,如果一定要導(dǎo)航需要自行實現(xiàn)前進、后退。(由于是單頁面不能用瀏覽器的前進后退功能诞外,所以需要自己建立堆棧管理)正什;初次加載時耗時多斯棒;頁面復(fù)雜度提高很多护赊。

21. v-if和v-for的優(yōu)先級

當(dāng) v-if 與 v-for 一起使用時厨内,v-for 具有比 v-if 更高的優(yōu)先級,這意味著 v-if 將分別重復(fù)運行于每個 v-for 循環(huán)中汁汗。所以衷畦,不推薦 v-if 和 v-for 同時使用。如果 v-if 和 v-for 一起用的話知牌,vue會自動提示 v-if 應(yīng)該放到外層去祈争。

22. assets和static的區(qū)別

相同點: assets 和 static 兩個都是存放靜態(tài)資源文件。項目中所需要的資源文件圖片角寸,字體圖標(biāo)菩混,樣式文件等都可以放在這兩個文件下

不同點:assets 中存放的靜態(tài)資源文件在項目打包時忿墅,也就是運行 npm run build 時會將 assets 中放置的靜態(tài)資源文件進行打包上傳,所謂打包簡單點可以理解為壓縮體積沮峡,代碼格式化疚脐。而壓縮后的靜態(tài)資源文件最終也都會放置在 static 文件中跟著 index.html 一同上傳至服務(wù)器。static 中放置的靜態(tài)資源文件就不會要走打包壓縮格式化等流程帖烘,而是直接進入打包好的目錄炮障,直接上傳至服務(wù)器。因為避免了壓縮直接進行上傳片习,在打包時會提高一定的效率蔑赘,但是 static 中的資源文件由于沒有進行壓縮等操作,所以文件的體積也就相對于 assets 中打包后的文件提交較大點乡摹。在服務(wù)器中就會占據(jù)更大的空間役耕。

建議: 將項目中 template需要的樣式文件js文件等都可以放置在 assets 中,走打包這一流程聪廉。減少體積瞬痘。而項目中引入的第三方的資源文件如iconfoont.css 等文件可以放置在 static 中,因為這些引入的第三方文件已經(jīng)經(jīng)過處理板熊,我們不再需要處理框全,直接上傳。

23. vue常用的修飾符

  • .stop:等同于 JavaScript 中的 event.stopPropagation() 干签,防止事件冒泡津辩;

  • .prevent :等同于 JavaScript 中的 event.preventDefault() ,防止執(zhí)行預(yù)設(shè)的行為(如果事件可取消容劳,則取消該事件喘沿,而不停止事件的進一步傳播);

  • .capture :與事件冒泡的方向相反竭贩,事件捕獲由外到內(nèi)蚜印;

  • .self :只會觸發(fā)自己范圍內(nèi)的事件,不包含子元素留量;

  • .once :只會觸發(fā)一次窄赋。

24. vue的兩個核心點

數(shù)據(jù)驅(qū)動、組件系統(tǒng)

數(shù)據(jù)驅(qū)動: ViewModel肪获,保證數(shù)據(jù)和視圖的一致性寝凌。

**組件系統(tǒng): **應(yīng)用類UI可以看作全部是由組件樹構(gòu)成的。

25. vue和jQuery的區(qū)別

jQuery是使用選擇器( )選取DOM對象孝赫,對其進行賦值较木、取值、事件綁定等操作青柄,其實和原生的HTML的區(qū)別只在于可以更方便的選取和操作DOM對象伐债,而數(shù)據(jù)和界面是在一起的预侯。比如需要獲取label標(biāo)簽的內(nèi)容:("lable").val(); ,它還是依賴DOM元素的值。

Vue則是通過Vue對象將數(shù)據(jù)和View完全分離開來了峰锁。對數(shù)據(jù)進行操作不再需要引用相應(yīng)的DOM對象萎馅,可以說數(shù)據(jù)和View是分離的,他們通過Vue對象這個vm實現(xiàn)相互的綁定虹蒋。這就是傳說中的MVVM糜芳。

26. 引進組件的步驟

在template中引入組件;在script的第一行用import引入路徑魄衅;用component中寫上組件名稱峭竣。

27. delete和Vue.delete刪除數(shù)組的區(qū)別

delete 只是被刪除的元素變成了 empty/undefined 其他的元素的鍵值還是不變。Vue.delete 直接刪除了數(shù)組 改變了數(shù)組的鍵值晃虫。

28. SPA首屏加載慢如何解決

安裝動態(tài)懶加載所需插件皆撩;
使用CDN資源。

29. Vue-router跳轉(zhuǎn)和location.href有什么區(qū)別

使用 location.href= /url 來跳轉(zhuǎn)哲银,簡單方便扛吞,但是刷新了頁面;

使用 history.pushState( /url ) 荆责,無刷新頁面滥比,靜態(tài)跳轉(zhuǎn);

引進 router 做院,然后使用 router.push( /url ) 來跳轉(zhuǎn)守呜,使用了 diff 算法,實現(xiàn)了按需加載山憨,減少了 dom 的消耗。其實使用 router 跳轉(zhuǎn)和使用 history.pushState() 沒什么差別的弥喉,因為vue-router就是用了 history.pushState() 郁竟,尤其是在history模式下。

30. vue slot

簡單來說由境,假如父組件需要在子組件內(nèi)放一些DOM棚亩,那么這些DOM是顯示、不顯示虏杰、在哪個地方顯示讥蟆、如何顯示,就是slot分發(fā)負(fù)責(zé)的活纺阔。

31. 你們vue項目是打包了一個js文件瘸彤,一個css文件,還是有多個文件笛钝?

根據(jù)vue-cli腳手架規(guī)范质况,一個js文件愕宋,一個CSS文件。

32. Vue里面router-link在電腦上有用结榄,在安卓上沒反應(yīng)怎么解決中贝?

Vue路由在Android機上有問題,babel問題臼朗,安裝babel polypill插件解決邻寿。

33. Vue2中注冊在router-link上事件無效解決方法

使用 @click.native 。原因:router-link會阻止click事件视哑,.native指直接監(jiān)聽一個原生事件绣否。

34. RouterLink在IE和Firefox中不起作用(路由不跳轉(zhuǎn))的問題

方法一:只用a標(biāo)簽,不適用button標(biāo)簽黎炉;

方法二:使用button標(biāo)簽和Router.navigate方法

35. axios的特點有哪些枝秤?

  • 從瀏覽器中創(chuàng)建XMLHttpRequests;

  • node.js創(chuàng)建http請求慷嗜;

  • 支持Promise API淀弹;

  • 攔截請求和響應(yīng);

  • 轉(zhuǎn)換請求數(shù)據(jù)和響應(yīng)數(shù)據(jù)庆械;

  • 取消請求薇溃;

  • 自動換成json。

  • axios中的發(fā)送字段的參數(shù)是data跟params兩個缭乘,兩者的區(qū)別在于params是跟請求地址一起發(fā)送的沐序,data的作為一個請求體進行發(fā)送

  • params一般適用于get請求,data一般適用于post put 請求堕绩。

36. 請說下封裝 vue 組件的過程策幼?

建立組件的模板,先把架子搭起來奴紧,寫寫樣式特姐,考慮好組件的基本邏輯。(os:思考1小時黍氮,碼碼10分鐘唐含,程序猿的準(zhǔn)則。)

準(zhǔn)備好組件的數(shù)據(jù)輸入沫浆。即分析好邏輯捷枯,定好 props 里面的數(shù)據(jù)、類型专执。

準(zhǔn)備好組件的數(shù)據(jù)輸出淮捆。即根據(jù)組件邏輯,做好要暴露出來的方法。

封裝完畢了争剿,直接調(diào)用即可

37. params和query的區(qū)別

用法:query要用path來引入已艰,params要用name來引入,接收參數(shù)都是類似的蚕苇,分別是 this.route.query.name 和 this.route.params.name 哩掺。url地址顯示:query更加類似于我們ajax中g(shù)et傳參,params則類似于post涩笤,說的再簡單一點嚼吞,前者在瀏覽器地址欄中顯示參數(shù),后者則不顯示

注意點:query刷新不會丟失query里面的數(shù)據(jù) params刷新 會 丟失 params里面的數(shù)據(jù)蹬碧。

38. vue初始化頁面閃動問題

使用vue開發(fā)時舱禽,在vue初始化之前,由于 div 是不歸 vue 管的恩沽,所以我們寫的代碼在還沒有解析的情況下會容易出現(xiàn)花屏現(xiàn)象誊稚,看到類似于 {{message}} 的字樣,雖然一般情況下這個時間很短暫罗心,但是我們還是有必要讓解決這個問題的里伯。首先:在css里加上 [v-cloak] { display: none; } 。如果沒有徹底解決問題渤闷,則在根元素加上 style="display: none;" :style="{display: block }"

39.vue更新數(shù)組時觸發(fā)視圖更新的方法

push()疾瓮;pop();shift()飒箭;unshift()狼电;splice();sort()弦蹂;reverse()

40. vue常用的UI組件庫

Mint UI肩碟,element,Vant凸椿,view-design

41. vue修改打包后靜態(tài)資源路徑的修改

cli2 版本:將 config/index.js 里的 assetsPublicPath 的值改為 ./

build: { 
  // ... 
  assetsPublicPath:  ./ , 
  // ...  
} 

cli3版本:在根目錄下新建vue.config.js 文件腾务,然后加上以下內(nèi)容:(如果已經(jīng)有此文件就直接修改)

module.exports = { 
  publicPath:'/',   // 根路徑    
} 

生命周期函數(shù)面試題篇

42. 什么是 vue 生命周期?有什么作用削饵?

每個 Vue 實例在被創(chuàng)建時都要經(jīng)過一系列的初始化過程——例如,需要設(shè)置數(shù)據(jù)監(jiān)聽未巫、編譯模板窿撬、將實例掛載到 DOM 并在數(shù)據(jù)變化時更新 DOM 等。同時在這個過程中也會運行一些叫做 生命周期鉤子 的函數(shù)叙凡,這給了用戶在不同階段添加自己的代碼的機會劈伴。(ps:生命周期鉤子就是生命周期函數(shù))例如,如果要通過某些插件操作DOM節(jié)點,如想在頁面渲染完后彈出廣告窗跛璧, 那我們最早可在mounted 中進行严里。

43. 第一次頁面加載會觸發(fā)哪幾個鉤子?

beforeCreate追城, created刹碾, beforeMount, mounted

44. 簡述每個周期具體適合哪些場景

**beforeCreate: **在new一個vue實例后座柱,只有一些默認(rèn)的生命周期鉤子和默認(rèn)事件迷帜,其他的東西都還沒創(chuàng)建。在beforeCreate生命周期執(zhí)行的時候色洞,data和methods中的數(shù)據(jù)都還沒有初始化戏锹。不能在這個階段使用data中的數(shù)據(jù)和methods中的方法

created: data 和 methods都已經(jīng)被初始化好了,如果要調(diào)用 methods 中的方法火诸,或者操作 data 中的數(shù)據(jù)锦针,最早可以在這個階段中操作

beforeMount: 執(zhí)行到這個鉤子的時候,在內(nèi)存中已經(jīng)編譯好了模板了置蜀,但是還沒有掛載到頁面中奈搜,此時,頁面還是舊的

mounted: 執(zhí)行到這個鉤子的時候盾碗,就表示Vue實例已經(jīng)初始化完成了媚污。此時組件脫離了創(chuàng)建階段,進入到了運行階段廷雅。如果我們想要通過插件操作頁面上的DOM節(jié)點耗美,最早可以在和這個階段中進行

beforeUpdate: 當(dāng)執(zhí)行這個鉤子時,頁面中的顯示的數(shù)據(jù)還是舊的航缀,data中的數(shù)據(jù)是更新后的商架, 頁面還沒有和最新的數(shù)據(jù)保持同步

updated: 頁面顯示的數(shù)據(jù)和data中的數(shù)據(jù)已經(jīng)保持同步了,都是最新的

beforeDestory: Vue實例從運行階段進入到了銷毀階段芥玉,這個時候上所有的 data 和 methods 蛇摸, 指令, 過濾器 ……都是處于可用狀態(tài)灿巧。還沒有真正被銷毀

destroyed: 這個時候上所有的 data 和 methods 赶袄, 指令, 過濾器 ……都是處于不可用狀態(tài)抠藕。組件已經(jīng)被銷毀了饿肺。

45. created和mounted的區(qū)別

created:在模板渲染成html前調(diào)用,即通常初始化某些屬性值盾似,然后再渲染成視圖敬辣。

mounted:在模板渲染成html后調(diào)用,通常是初始化頁面完成后,再對html的dom節(jié)點進行一些需要的操作溉跃。

46. vue獲取數(shù)據(jù)在哪個周期函數(shù)?

一般 created/beforeMount/mounted 皆可. 比如如果你要操作 DOM , 那肯定 mounted 時候才能操作.

47. 請詳細(xì)說下你對vue生命周期的理解村刨?

總共分為8個階段創(chuàng)建前/后,載入前/后撰茎,更新前/后嵌牺,銷毀前/后。

創(chuàng)建前/后: 在beforeCreated階段乾吻,vue實例的掛載元素 el 和 數(shù)據(jù)對象 data 都為undefined髓梅,還未初始化。在created階段绎签,vue實例的數(shù)據(jù)對象data有了枯饿,el 還沒有。

載入前/后: 在beforeMount階段诡必,vue實例的 $el 和data都初始化了奢方,但還是掛載之前為虛擬的dom節(jié)點,data.message還未替換爸舒。在mounted階段蟋字,vue實例掛載完成,data.message成功渲染扭勉。

更新前/后: 當(dāng)data變化時鹊奖,會觸發(fā)beforeUpdate和updated方法。

銷毀前/后: 在執(zhí)行destroy方法后涂炎,對data的改變不會再觸發(fā)周期函數(shù)忠聚,說明此時vue實例已經(jīng)解除了事件監(jiān)聽以及和dom的綁定,但是dom結(jié)構(gòu)依然存在唱捣。

vue 路由面試題篇

48. mvvm 框架是什么两蟀?

vue是實現(xiàn)了雙向數(shù)據(jù)綁定的mvvm框架,當(dāng)視圖改變更新模型層震缭,當(dāng)模型層改變更新視圖層赂毯。在vue中,使用了雙向綁定技術(shù)拣宰,就是View的變化能實時讓Model發(fā)生變化党涕,而Model的變化也能實時更新到View。

49. vue-router 是什么?它有哪些組件?

vue用來寫路由一個插件巡社。router-link遣鼓、router-view

50. active-class 是哪個組件的屬性?

vue-router模塊的router-link組件重贺。children數(shù)組來定義子路由

51. 怎么定義 vue-router 的動態(tài)路由? 怎么獲取傳過來的值?

在router目錄下的index.js文件中,對path屬性加上/:id气笙。使用router對象的params.id次企。

52. vue-router 有哪幾種導(dǎo)航鉤子?

三種,

第一種: 是全局導(dǎo)航鉤子:router.beforeEach(to,from,next)潜圃,作用:跳轉(zhuǎn)前進行判斷攔截缸棵。

第二種: 組件內(nèi)的鉤子

第三種: 單獨路由獨享組件

53. route 和router 的區(qū)別

router 是VueRouter的實例,在script標(biāo)簽中想要導(dǎo)航到不同的URL,使用router.push 方法谭期。返回上一個歷史history用 $router.to(-1)

$route 為當(dāng)前router跳轉(zhuǎn)對象堵第。里面可以獲取當(dāng)前路由的name,path,query,parmas等。

54. vue-router的兩種模式

hash模式: 即地址欄 URL 中的 # 符號隧出;

history模式: window.history對象打印出來可以看到里邊提供的方法和記錄長度踏志。利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法。(需要特定瀏覽器支持)胀瞪。

55. vue-router實現(xiàn)路由懶加載( 動態(tài)加載路由 )

三種方式

第一種: vue異步組件技術(shù) ==== 異步加載针余,vue-router配置路由 , 使用vue的異步組件技術(shù) , 可以實現(xiàn)按需加載 .但是,這種情況下會一個組件生成一個js文件。

第二種: 路由懶加載(使用import)凄诞。

第三種: webpack提供的require.ensure()圆雁,vue-router配置路由,使用webpack的require.ensure技術(shù)帆谍,也可以實現(xiàn)按需加載伪朽。這種情況下,多個路由指定相同的chunkName汛蝙,會合并打包成一個js文件烈涮。

Vuex常見面試題篇

56. vuex是什么?怎么使用患雇?哪種功能場景使用它跃脊?

vue框架中狀態(tài)管理。在main.js引入store苛吱,注入酪术。

新建了一個目錄store.js,….. export 翠储。

場景有:單頁應(yīng)用中绘雁,組件之間的狀態(tài)。音樂播放援所、登錄狀態(tài)庐舟、加入購物車

57. vuex有哪幾種屬性?

有五種住拭,分別是 State挪略、 Getter历帚、Mutation 、Action杠娱、 Module

state => 基本數(shù)據(jù)(數(shù)據(jù)源存放地)

getters => 從基本數(shù)據(jù)派生出來的數(shù)據(jù)

mutations => 提交更改數(shù)據(jù)的方法挽牢,同步!

actions => 像一個裝飾器摊求,包裹mutations禽拔,使之可以異步。

modules => 模塊化Vuex

58. Vue.js中ajax請求代碼應(yīng)該寫在組件的methods中還是vuex的actions中室叉?

如果請求來的數(shù)據(jù)是不需要被其他組件公用睹栖,僅僅在請求的組件內(nèi)使用,就不需要放入vuex 的actions中茧痕。

如果被其他地方復(fù)用野来,這個很大幾率上是需要的,如果需要凿渊,請將請求放入action里梁只,方便復(fù)用。

以上面試題僅供個人學(xué)習(xí)埃脏,如有錯誤請指正搪锣。謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末彩掐,一起剝皮案震驚了整個濱河市构舟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堵幽,老刑警劉巖狗超,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異朴下,居然都是意外死亡努咐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進店門殴胧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來渗稍,“玉大人,你說我怎么就攤上這事团滥「鸵伲” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵灸姊,是天一觀的道長拱燃。 經(jīng)常有香客問我,道長力惯,這世上最難降的妖魔是什么碗誉? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任召嘶,我火速辦了婚禮,結(jié)果婚禮上哮缺,老公的妹妹穿的比我還像新娘苍蔬。我一直安慰自己,他們只是感情好蝴蜓,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著俺猿,像睡著了一般茎匠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上押袍,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天诵冒,我揣著相機與錄音,去河邊找鬼谊惭。 笑死汽馋,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的圈盔。 我是一名探鬼主播豹芯,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼驱敲!你這毒婦竟也來了铁蹈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤众眨,失蹤者是張志新(化名)和其女友劉穎握牧,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娩梨,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡沿腰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狈定。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颂龙。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖掸冤,靈堂內(nèi)的尸體忽然破棺而出厘托,到底是詐尸還是另有隱情,我是刑警寧澤稿湿,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布铅匹,位于F島的核電站,受9級特大地震影響饺藤,放射性物質(zhì)發(fā)生泄漏包斑。R本人自食惡果不足惜流礁,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罗丰。 院中可真熱鬧神帅,春花似錦、人聲如沸萌抵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绍填。三九已至霎桅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讨永,已是汗流浹背滔驶。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留卿闹,地道東北人揭糕。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像锻霎,于是被迫代替她去往敵國和親著角。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353