Vue CLI 帶有一個(gè)嚴(yán)格模式,它可以幫助開發(fā)人員自動(dòng)檢測(cè)和修復(fù)代碼中的一些常見錯(cuò)誤。嚴(yán)格模式在以下三個(gè)方面起作用:
1. 阻止直接變異state 2. 執(zhí)行更嚴(yán)格的代碼范式 3. 預(yù)測(cè)錯(cuò)誤
第一條規(guī)則確保我們不要直接更改Vue實(shí)例的狀態(tài)。狀態(tài)應(yīng)該通過(guò)調(diào)用 mutation 方法來(lái)更改。如果我們?cè)噲D直接更改狀態(tài),嚴(yán)格模式將拋出異常,提醒我們檢查代碼。這可以避免在調(diào)試期間出現(xiàn)一些常見的問(wèn)題,例如對(duì)狀態(tài)的不正確修改,從而導(dǎo)致意外的行為。
state.counter = state.counter + 1; // 錯(cuò)誤的方式 commit('increment'); // 正確的方式
嚴(yán)格模式還規(guī)定了更嚴(yán)格的代碼范式。例如,在編寫計(jì)算屬性和組件時(shí),我們需要確保它們是具有副作用的,這意味著我們應(yīng)該盡可能地將它們聲明為純函數(shù)。嚴(yán)格模式將確保我們遵守這些最佳實(shí)踐。
// 純函數(shù),沒(méi)有副作用 computed: { doubleCounter() { return this.counter * 2; } } // 有副作用的計(jì)算屬性 computed: { doubleCounter() { this.counter = this.counter + 1; // incorrectly modifies state return this.counter * 2; } }
最后,嚴(yán)格模式不僅可以檢測(cè)代碼中的錯(cuò)誤,還可以預(yù)測(cè)到將來(lái)可能會(huì)發(fā)生的錯(cuò)誤。例如,如果我們?cè)噲D在mutations之外更改狀態(tài),則嚴(yán)格模式將拋出錯(cuò)誤
// 錯(cuò)誤的方式 async function fetchData() { const data = await fetchSomething() state.counter = data; } // 正確的方式 async function fetchData() { const data = await fetchSomething() commit('setData', data); }
總之,使用Vue CLI的嚴(yán)格模式可以確保代碼具有一定的標(biāo)準(zhǔn)性,并提高代碼的可調(diào)試性。雖然嚴(yán)格模式可能會(huì)增加一些代碼的開銷,但通常是值得的。