1、對(duì)vue的理解将鸵,有什么特點(diǎn)勉盅,vue為什么不能兼容IE8及以下瀏覽器
vue是一套用于構(gòu)建用戶界面的漸進(jìn)式框架,核心是一個(gè)響應(yīng)的數(shù)據(jù)綁定系統(tǒng)
vue是一款MVVM框架顶掉,基于雙向綁定數(shù)據(jù)草娜,當(dāng)數(shù)據(jù)發(fā)生變化時(shí)候,vue自身會(huì)進(jìn)行一些運(yùn)算
特點(diǎn):簡潔輕量一喘、數(shù)據(jù)驅(qū)動(dòng)驱还、組件化、模塊友好
vue.js使用了IE8無法模擬的 ECMAScript 5 特性凸克,沒有替代方案
2议蟆、簡述Vue雙向數(shù)據(jù)綁定的原理
主要是通過Object對(duì)象的defineProperty屬性,重寫data的set和get函數(shù)來實(shí)現(xiàn)的
vue是通過數(shù)據(jù)劫持的方式來做數(shù)據(jù)綁定萎战,最核心的方法就是通過Object.defineProperty()來實(shí)現(xiàn)對(duì)屬性的劫持
在設(shè)置或者獲取的時(shí)候我們就可以在get或者set方法里加入其他的觸發(fā)函數(shù)咐容,達(dá)到監(jiān)聽數(shù)據(jù)變動(dòng)的目的
3、什么是MVVM蚂维,和MVC的區(qū)別
MVVM是Model-View-ViewModel的縮寫
Model層代表數(shù)據(jù)模型
View代表組件視圖戳粒,負(fù)責(zé)將數(shù)據(jù)模型轉(zhuǎn)化成UI展現(xiàn)出來
ViewModel是一個(gè)同步 View 和 Model 的對(duì)象(雙向綁定)
在MVVM中路狮,View和Model之間并沒有直接的聯(lián)系,而是通過ViewModel進(jìn)行交互蔚约,
Model和ViewModel之間的交互是雙向的奄妨,因此 通過視圖操作數(shù)據(jù),也能通過數(shù)據(jù)操作視圖
MVC是Model-View- Controller的簡寫苹祟。即模型-視圖-控制器砸抛,使用MVC的目的是為了將M和V相分離
MVVM與MVC最大的區(qū)別就是實(shí)現(xiàn)了View和Model的自動(dòng)同步,也就是當(dāng)Model的屬性改變時(shí)
我們不用再手動(dòng)操作Dom來改變View树枫,而是改變后該屬性對(duì)應(yīng)View層會(huì)自動(dòng)改變
4直焙、vue.js的兩個(gè)核心是什么
數(shù)據(jù)驅(qū)動(dòng)和組件化思想
5、vue與angular的區(qū)別
vue的雙向邦定是基于ES5中g(shù)etter/setter來實(shí)現(xiàn)的砂轻,而angular是由自己實(shí)現(xiàn)一套模版編譯規(guī)則奔誓,需要進(jìn)行所謂的“臟值”檢查,vue則不需要
vue需要提供一個(gè)el對(duì)象進(jìn)行實(shí)例化搔涝,后續(xù)的所有作用范圍也是在el對(duì)象之下厨喂,而angular而是整個(gè)html頁面
6、說下vue的底層原理
Vue的模式是m-v-vm模式庄呈,即(model-view-modelView)杯聚,通過modelView作為中間層,進(jìn)行雙向數(shù)據(jù)的綁定與變化
1)通過建立虛擬dom樹document.createDocumentFragment(),方法創(chuàng)建虛擬dom樹
2)一旦被監(jiān)測的數(shù)據(jù)改變抒痒,會(huì)通過Object.defineProperty定義的數(shù)據(jù)攔截,截取到數(shù)據(jù)的變化
3)截取到的數(shù)據(jù)變化颁褂,從而通過訂閱——發(fā)布者模式故响,觸發(fā)Watcher(觀察者),從而改變虛擬dom的中的具體數(shù)據(jù)
4)最后通過更新虛擬dom的元素值,從而改變最后渲染dom樹的值颁独,完成雙向綁定
7彩届、簡述vue等單頁面應(yīng)用及優(yōu)缺點(diǎn)
單頁面應(yīng)用,用戶所有的操作都在一個(gè)頁面完成
優(yōu)點(diǎn):無刷新誓酒,用戶體驗(yàn)好樟蠕,共享資源只需要請(qǐng)求一次即可,采用組件化的思想靠柑,代碼結(jié)構(gòu)更加規(guī)范化寨辩,便于修改和調(diào)整
缺點(diǎn):對(duì)搜索引擎不友好、低版本不支持歼冰,第一次加載首頁耗時(shí)相對(duì)較長靡狞,不能使用瀏覽器導(dǎo)航按鈕,需要自行實(shí)現(xiàn)前進(jìn)后退
8隔嫡、React與Vue對(duì)比
相同點(diǎn):
都支持服務(wù)器端渲染甸怕、數(shù)據(jù)驅(qū)動(dòng)視圖甘穿,狀態(tài)管理
都有虛擬DOM、組件化開發(fā)梢杭、通過props參數(shù)進(jìn)行父子組件數(shù)據(jù)的傳遞
不同點(diǎn):
React嚴(yán)格上只針對(duì)MVC的C層,Vue則是MVVM模式
虛擬DOM方面
vue會(huì)跟蹤每一個(gè)組件的依賴關(guān)系,不需要重新渲染整個(gè)組件樹温兼,而React每當(dāng)應(yīng)用的狀態(tài)被改變時(shí),全部組件都會(huì)重新渲染
視圖渲染方面
React采用JSX渲染到DOM,vue使用的是template模板
數(shù)據(jù)綁定方面
vue實(shí)現(xiàn)了數(shù)據(jù)的雙向綁定武契,react數(shù)據(jù)流動(dòng)是單向的
state對(duì)象方面
react應(yīng)用中不可變的,需要使用setState方法更新狀態(tài)
vue中,state對(duì)象不是必須的,數(shù)據(jù)由data屬性在vue對(duì)象中管理
9募判、前端組件化有什么優(yōu)勢
1)提高開發(fā)效率
2)方便重復(fù)使用
3)便于協(xié)同開發(fā)
4)更容易管理維護(hù)
10、說一下vue的生命周期吝羞,當(dāng)使用keep-alive屬性時(shí)兰伤,會(huì)增加哪兩個(gè)生命周期
創(chuàng)建前/后beforeCreate/created:?
在beforeCreated階段,vue實(shí)例的掛載元素el和數(shù)據(jù)對(duì)象data都為undefined钧排,還未初始化敦腔。在created階段,vue實(shí)例的數(shù)據(jù)對(duì)象data有了恨溜,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方法周叮。不常用
銷毀前/后beforeDestory/destoryed:
beforeDestory是在vue實(shí)例銷毀前觸發(fā)辩撑,一般在這里要通過removeEventListener解除手動(dòng)綁定的事件
執(zhí)行destroy方法后,vue實(shí)例已經(jīng)解除了事件監(jiān)聽以及dom的綁定仿耽,但是dom結(jié)構(gòu)依然存在
在被keep-alive包含的組件/路由中合冀,會(huì)多出兩個(gè)生命周期的鉤子:
activated 與 deactivated
11、說說你對(duì)angular臟檢查理解
angular中無法判斷數(shù)據(jù)是否做了更改项贺,所以設(shè)置了一些條件君躺,當(dāng)觸發(fā)這些條件之后就會(huì)執(zhí)行一個(gè)檢測來遍歷所有的數(shù)據(jù),對(duì)比剛才更改的地方執(zhí)行變化
這個(gè)檢查很不科學(xué)而且效率不高开缎,有很多多余的地方
12棕叫、如何使css只在當(dāng)前組件起作用
如果想寫的css只對(duì)當(dāng)前組件起作用,則在style中寫入scoped
13奕删、vue中v-if和v-show的區(qū)別
v-if和v-show都是用來控制元素的渲染
v-if是根據(jù)后面數(shù)據(jù)的真假谍珊,來判斷DOM的添加刪除等操作
v-show只是在修改元素的css樣式(display屬性值)
v-if如果初始渲染條件為真,就渲染,反之就不渲染
v-show不管初始條件是否為真砌滞,都會(huì)被渲染
v-if有更高的切換消耗侮邀,不適合做頻繁的切換
?v-show有更高的初始渲染消耗,適合做頻繁的切換
?14贝润、vue有哪些修飾符
事件修飾符:stop绊茧、prevent、self打掘、once
鍵盤修飾符:enter华畏、space、up尊蚁、down
表單修飾符修飾符:number亡笑、trim、lazy
15横朋、列舉vue的幾種常用指令
v-if仑乌、v-show、v-for琴锭、v-on晰甚、v-bind、v-model决帖、v-once
16厕九、v-on可以綁定多個(gè)方法嗎?
可以
<input v-on:keyup.enter="submit" v-on:focus="onFocus">
17地回、vue中$mount與el區(qū)別
$mount和el兩者在使用中沒有什么區(qū)別扁远,都是將實(shí)例化后的vue掛載到指定的DOM元素中
如果在實(shí)例化vue時(shí)指定el,則該vue將會(huì)渲染在el對(duì)應(yīng)的DOM中
沒有指定el刻像,則vue實(shí)例會(huì)處于一種“未掛載”的狀態(tài)穿香,此時(shí)通過$mount來手動(dòng)執(zhí)行掛載
18、vue事件修飾符怎么使用绎速,舉例說明
<!-- 阻止單擊事件繼續(xù)傳播 -->
? ? ? ? <a v-on:click.stop="doThis"></a>
? ? ? ? <!-- 提交事件不再重載頁面 -->
? ? ? ? <form v-on:submit.prevent="onSubmit"></form>
? ? ? ? <!-- 修飾符可以串聯(lián) -->
? ? ? ? <a v-on:click.stop.prevent="doThat"></a>
? ? ? ? <!-- 只有修飾符 -->
? ? ? ? <form v-on:submit.prevent></form>
? ? ? ? <!-- 點(diǎn)擊事件將只會(huì)觸發(fā)一次 -->
? ? ? ? <a v-on:click.once="doThis"></a>
? ? ? ? <!-- 只當(dāng)在 event.target 是當(dāng)前元素自身時(shí)觸發(fā)處理函數(shù) -->
? ? ? ? <div v-on:click.self="doThat">...</div>
19、vue中key值和is的作用
使用key焙蚓,vue會(huì)基于key的變化重新排列元素順序纹冤,并且移除key不存在的元素」汗可以做優(yōu)化處理
is可以擴(kuò)展原生html元素萌京,也可以綁定動(dòng)態(tài)組件
20、組件中data為什么是函數(shù)
因?yàn)榻M件是用來復(fù)用的宏浩,JS 里對(duì)象是引用關(guān)系知残,這樣作用域沒有隔離
而 new Vue 的實(shí)例,是不會(huì)被復(fù)用的比庄,因此不存在引用對(duì)象的問題
21求妹、什么是單向數(shù)據(jù)流動(dòng)
這個(gè)概念出現(xiàn)在組件通信乏盐。數(shù)據(jù)從父級(jí)流向子級(jí),數(shù)據(jù)本身還是父級(jí)的
如果操作子級(jí)要改變父級(jí)的數(shù)據(jù)制恍,只能通過子級(jí)告知父級(jí)要操作哪個(gè)數(shù)據(jù)
然后讓父級(jí)去修改自己的數(shù)據(jù)父能,修改完畢再傳給子級(jí)
22、什么是vue的計(jì)算屬性净神,有幾種用法
computed 計(jì)算屬性何吝,能監(jiān)聽vue中數(shù)據(jù)的變化,當(dāng)數(shù)據(jù)發(fā)生變化時(shí)候會(huì)觸發(fā)
1鹃唯、函數(shù)形式
computed:{
? ? ? ? ? ? listenArr(){? ? ? ? ?
? ? ? ? ? ? //使用data中數(shù)據(jù)爱榕,自動(dòng)幫你監(jiān)聽數(shù)據(jù)的變化//返回的結(jié)果就是通過改變數(shù)據(jù) 做的另一件事情? ? ? ? ? ? ? ? ? ? }
? ? ? ? }
2、對(duì)象形式
? ? ? ? computed:{
? ? ? ? ? ? listenArr:{
? ? ? ? ? ? ? ? get(){
? ? ? ? ? ? ? ? ? ? //獲取時(shí)候? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? set(newVal){
? ? ? ? ? ? ? ? ? ? //修改時(shí)候? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //當(dāng)使用get set時(shí)候坡慌,computed中定義的屬性為一個(gè)對(duì)象
//不使用get set時(shí)候黔酥,computed中定義的屬性可以是一個(gè)函數(shù)
23、說一下vue組件之間的傳遞
父級(jí)傳遞子級(jí):
首先在子組件上加一個(gè)v-bind:自定義屬性,等于父級(jí)的數(shù)據(jù)八匠,子組件通過props方法接收數(shù)據(jù)
子級(jí)傳遞父級(jí):
在子組件上綁定一個(gè)自定義事件絮爷,并且傳入父級(jí)的“事件”處理函數(shù)
在子組件內(nèi)部使用$emit監(jiān)聽這個(gè)自定義事件,this.$emit('自定義事件名',參數(shù))
24梨树、vue中computed和watch的區(qū)別
computed能夠監(jiān)聽vue數(shù)據(jù)上的變化坑夯,頁面上來就執(zhí)行一次,每改變一次數(shù)據(jù)就又觸發(fā)抡四,在操作數(shù)據(jù)的時(shí)候柜蜈,會(huì)派生出另一個(gè)事情
watch當(dāng)指定數(shù)據(jù)發(fā)生變化時(shí)候觸發(fā)。一開始不會(huì)觸發(fā)指巡,只有指定的數(shù)據(jù)發(fā)生變化就又觸發(fā)一次
watch可以deep深度添加淑履,computed不可以
25、對(duì)vue中nextTick的理解
vue中nextTick可以拿到更新后的DOM元素
如果在mounted下不能準(zhǔn)確拿到DOM元素藻雪,可以使用nextTick
在Vue生命周期的created()鉤子函數(shù)進(jìn)行的DOM操作一定要放在Vue.nextTick()的回調(diào)函數(shù)中
26秘噪、自定義指令(v-check,v-focus) 方法有哪些? 它有哪些鉤子函數(shù)? 有哪些鉤子函數(shù)參數(shù)
全局定義指令:在vue對(duì)象的directive方法里面有兩個(gè)參數(shù),分別為指令名稱、函數(shù)組件內(nèi)定義指令:directives
鉤子函數(shù): bind(綁定事件出發(fā))勉耀、inserted(節(jié)點(diǎn)插入時(shí)候觸發(fā))指煎、update(組件內(nèi)相關(guān)更新)
鉤子函數(shù)參數(shù): el、binding
27便斥、如何優(yōu)化SPA應(yīng)用的首屏加載速度慢的問題
1)將公用的JS庫通過script標(biāo)簽外部引入至壤,讓瀏覽器并行下載資源文件,提高下載速度
2)在配置 路由時(shí)枢纠,頁面和組件使用懶加載方式引入像街,在調(diào)用組件時(shí)再加載對(duì)應(yīng)的js文件
3)加一個(gè)首屏 loading 圖,提升用戶體驗(yàn)
28、請(qǐng)分別說出vue修飾符trim镰绎、number脓斩、lazy的作用
trim:用來過濾前后的空格
number:將用戶輸入的數(shù)據(jù)綁定為number類型
lazy:使用了這個(gè)修飾符將會(huì)從“input事件”變成change事件進(jìn)行同步
29、vue-router 有哪幾種導(dǎo)航鉤子跟狱,它們有哪些參數(shù)
全局導(dǎo)航鉤子:to俭厚、from、next
組件內(nèi)的鉤子:beforeRouteEnter驶臊、beforeRouteUpdate挪挤、beforeRouteLeave
單個(gè)路由獨(dú)享的鉤子:beforeEnter
30、路由之間如何進(jìn)行跳轉(zhuǎn)
聲明式(標(biāo)簽跳轉(zhuǎn)) <router-link :to="xxx">
編程式( js 跳轉(zhuǎn)) router.push('index')
31关翎、說一下懶加載(按需加載路由)
webpack 中提供了 require.ensure()來實(shí)現(xiàn)按需加載扛门。以前引入路由是通過 import 這樣的方式引入,改為 const 定義的方式進(jìn)行引入
不進(jìn)行頁面按需加載引入方式
import home from '../common/home.vue'
進(jìn)行頁面按需加載的引入方式:
const home = r => require.ensure( [], () => r (require('../common/home.vue')))
32纵寝、vue中$router和$route區(qū)別
router是VueRouter的一個(gè)對(duì)象论寨,通過Vue.use(VueRouter),和VueRouter構(gòu)造函數(shù)得到一個(gè)router的實(shí)例對(duì)象
route是一個(gè)跳轉(zhuǎn)的路由對(duì)象爽茴,每一個(gè)路由都會(huì)有一個(gè)route對(duì)象
是一個(gè)局部的對(duì)象葬凳,可以獲取對(duì)應(yīng)的name,path,params,query等
33、vue-loader是什么室奏?使用它的用途有哪些
vue文件的一個(gè)加載器火焰,跟template/js/style轉(zhuǎn)換成js模塊
用途:js可以寫es6、style樣式可以scss或less胧沫、template可以加jade等
34昌简、vue-router中query與params區(qū)別
?query和params兩者都是在Vue路由中傳參
query用path來引入,params只能用name來傳遞绒怨,不能使用path?
query更像get請(qǐng)求(地址欄會(huì)顯示參數(shù))纯赎,而params更像post(不會(huì)在地址欄顯示參數(shù))
35、怎么定義vue-router的動(dòng)態(tài)路由南蹂?怎么獲取傳過來的動(dòng)態(tài)參數(shù)
在router目錄下的index.js文件中犬金,對(duì)path屬性加上/:id
使用router對(duì)象的params.id
36、嵌套路由怎么定義
在 VueRouter 的參數(shù)中使用 children 配置六剥,這樣就可以很好的實(shí)現(xiàn)路由嵌套
children 里面是子路由晚顷,當(dāng)然子路由里面還可以繼續(xù)嵌套子路由
37、active-class是哪個(gè)組件的屬性仗考?
vue-router模塊的router-link組件
38、舉例vue常用的路由對(duì)象词爬,以及作用
$route.name 當(dāng)前路由的名稱
$route.path 當(dāng)前路由對(duì)象的路徑
$route.meta 在路由里面埋一個(gè)字段,當(dāng)切換路由時(shí)候把信息傳過去
$route.query 查詢信息包含路由中查詢參數(shù)的鍵值對(duì)
$route.hash 當(dāng)前路徑的哈希值,帶#
$route.params 預(yù)設(shè)的變量锅锨,切換時(shí)候通過parmas帶過去某個(gè)id的值
39叽赊、請(qǐng)說出vue.cli項(xiàng)目中src目錄每個(gè)文件夾和文件的用法
main.js是入口文件
app.vue是一個(gè)主組件
view放視圖頁面
components放組件
router是定義路由相關(guān)的配置
assets文件夾是放靜態(tài)資源
40必指、vue.cli中怎樣使用自定義的組件
第一步:在components目錄新建你的組件文件
第二步:在需要用的頁面(組件)中導(dǎo)入
第三步:注入到vue的子組件的components屬性上面
第四步:在template視圖view中使用
41、什么是vue生命周期恕洲,作用是什么塔橡,第一次頁面加載會(huì)觸發(fā)哪幾個(gè)鉤子
vue實(shí)例從創(chuàng)建到銷毀的過程
也就是從開始創(chuàng)建、初始化數(shù)據(jù)霜第、編譯模板葛家、掛載Dom→渲染、更新→渲染泌类、卸載等一系列過程癞谒,我們稱這是 Vue 的生命周期
作用:生命周期中有多個(gè)事件鉤子,讓我們?cè)诳刂芕ue實(shí)例的過程時(shí)更容易形成好的邏輯
第一次頁面加載時(shí)會(huì)觸發(fā) beforeCreate, created, beforeMount, mounted 這幾個(gè)鉤子
42刃榨、簡單描述每個(gè)周期具體適合哪些場景
beforecreate : 可以在這加個(gè)loading事件弹砚,在加載實(shí)例時(shí)觸發(fā)
created : 初始化完成時(shí)的操作,比如結(jié)束loading事件枢希,也可以操作異步請(qǐng)求
mounted : 掛載元素翼岁,獲取到DOM節(jié)點(diǎn),推薦使用nextTick
updated : 如果對(duì)數(shù)據(jù)統(tǒng)一處理肢预,在這里寫上相應(yīng)函數(shù)
beforeDestroy : 可以做一個(gè)確認(rèn)停止事件的確認(rèn)框谨娜,關(guān)掉定時(shí)器
destroyed:當(dāng)前組件已被刪除,清空相關(guān)內(nèi)容
43呕屎、說一下vue中slot插槽
插槽就是vue實(shí)現(xiàn)的一套內(nèi)容分發(fā)的API让簿,將插槽元素作為承載分發(fā)內(nèi)容的出口。
在組件模板中默認(rèn)占一個(gè)位置秀睛,當(dāng)使用組件標(biāo)簽時(shí)候尔当,組件標(biāo)簽的內(nèi)容會(huì)自動(dòng)替換掉內(nèi)容
slot中可以設(shè)置一些默認(rèn)的內(nèi)容,如果傳遞了內(nèi)容則會(huì)替換掉蹂安,如果沒有名字的標(biāo)簽會(huì)默認(rèn)放到default中
44椭迎、computed、watch各是一個(gè)對(duì)象時(shí)田盈,它們有哪些選項(xiàng)畜号? computed 和 methods 有什么區(qū)別? computed 是否能依賴其它組件的數(shù)據(jù)允瞧?
computed有g(shù)et set兩個(gè)選項(xiàng)
watch有handler deep 是否深度简软,immeditate 是否立即執(zhí)行
methods是一個(gè)對(duì)象蛮拔,可以在對(duì)象中定義一個(gè)個(gè)方法,能接受參數(shù)痹升,而computed不能
computed是可以緩存的建炫,methods不會(huì)
computed可以依賴其他computed,甚至是其他組件的data
45疼蛾、如何理解Vue中的Render渲染函數(shù)
Vue一般使用template來創(chuàng)建HTML肛跌,然后有的時(shí)候,我們需要使用javascript來創(chuàng)建html察郁,這時(shí)候我們需要使用render函數(shù)
render函數(shù)return一個(gè)createElement組件中的子元素存儲(chǔ)在組件實(shí)列中
createElement返回的是包含的信息會(huì)告訴VUE頁面上需要渲染什么樣的節(jié)點(diǎn)衍慎。我們稱這樣的節(jié)點(diǎn)為虛擬DOM
46、vuex是什么绳锅?怎么使用西饵?哪種功能場景使用它?
vuex是vue框架中的狀態(tài)管理器
在main.js引入store鳞芙,注入眷柔,新建了一個(gè)目錄store,export導(dǎo)出
適用場景:單頁應(yīng)用中原朝,組件之間的狀態(tài)驯嘱。音樂播放、登錄狀態(tài)喳坠、加入購物車
47鞠评、在Vue生命周期的created()鉤子函數(shù)進(jìn)行的DOM操作一定要放在Vue.nextTick() 回調(diào)函數(shù)中。原因是什么呢
在 created() 鉤子函數(shù)執(zhí)行的時(shí)候DOM其實(shí)并未進(jìn)行任何渲染壕鹉,而此時(shí)進(jìn)行 DOM 操作無異于徒勞剃幌,
所以在數(shù)據(jù)變化后要執(zhí)行的某個(gè)操作,而這個(gè)操作需要使用隨數(shù)據(jù)改變而改變的DOM結(jié)構(gòu)的時(shí)候晾浴,這個(gè)操作都應(yīng)該放進(jìn)Vue.nextTick() 的回調(diào)函數(shù)中
48负乡、vuex中store的特性是什么
vuex 就是一個(gè)倉庫,倉庫里放了很多對(duì)象脊凰。
其中 state 就是數(shù)據(jù)源存放地抖棘,對(duì)應(yīng)于一般 vue 對(duì)象里面的 data
state 里面存放的數(shù)據(jù)是響應(yīng)式的,vue 組件從 store 讀取數(shù)據(jù)狸涌,若是 store 中的數(shù)據(jù)發(fā)生改變切省,依賴這相數(shù)據(jù)的組件也會(huì)發(fā)生改變
它通過 mapState 把全局的 state 和 getters 映射到當(dāng)前組件的 computed 計(jì)算屬性
49、vue中ajax請(qǐng)求代碼應(yīng)該寫在組件的 methods 中還是vuex的action中帕胆?
如果請(qǐng)求來的數(shù)據(jù)不是要被其他組件公用朝捆,僅僅在請(qǐng)求的組件內(nèi)使用,就不需要放入 vuex 的 state 里
如果被其他地方復(fù)用懒豹,請(qǐng)將請(qǐng)求放入 action 里芙盘,方便復(fù)用诊杆,并包裝成 promise 返回
50、說一下vuex的思想
Vuex 的思想是 當(dāng)我們?cè)陧撁嫔宵c(diǎn)擊一個(gè)按鈕何陆,它會(huì)觸發(fā)(dispatch)一個(gè)action, action 隨后會(huì)執(zhí)行(commit)一個(gè)mutation, mutation 立即會(huì)改變state,
state 改變以后,我們的頁面會(huì)state 獲取數(shù)據(jù),頁面發(fā)生了變化豹储。 Store 對(duì)象贷盲,包含了我們談到的所有內(nèi)容,action, state, mutation