static目錄和src下的assets的區(qū)別?
assets下的文件會被loader()轉(zhuǎn)譯后存放在dist-static-img文件下,static下的文件會直接拷貝到dist-static下。
建議大的文件放到static下
vuex刷新后數(shù)據(jù)丟失問題。
在app.vue里面created生命周期函數(shù)內(nèi)綁定一個beforeunload事件,在頁面刷新前將vuex當前狀態(tài)存在locastorage中,頁面重新加載時在created生命周期函數(shù)內(nèi)判斷l(xiāng)ocastorage中如果有值,將當前值通過this.$store.replaceState(state: Object)存入state里。
export default {
name: 'App',
created () {
//在頁面加載時讀取sessionStorage里的狀態(tài)信息
if (sessionStorage.getItem("store") ) {
this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store"))))
}
//在頁面刷新時將vuex里的信息保存到sessionStorage里
window.addEventListener("beforeunload",()=>{
sessionStorage.setItem("store",JSON.stringify(this.$store.state))
})
}
}
computed和watch屬性的區(qū)別?
computed的依賴屬性其中之一發(fā)生了變化,當前computed屬性都會更新。watch中能監(jiān)聽某一個屬性,當屬性變化時觸發(fā)回調(diào)。
假如c = a(1) + b(2),使用comuted屬性時,當a或者b改變都會觸發(fā)c,但是如果a=>2,b=>1,此時是不會觸發(fā)c的watch回調(diào)。
解釋一下Array響應(yīng)式實現(xiàn)?
當我們初始化data屬性是一個數(shù)組時,會將Array.prototype.push,pop,保存起來,同時重新給當前數(shù)組聲明push,pop函數(shù),這樣它就不會調(diào)用原型鏈上的方法,這樣就可以在自定義的函數(shù)將數(shù)據(jù)處理為可響應(yīng)式的。
說明一下vue的響應(yīng)式原理實現(xiàn)?
當我們初始化date時,會使用Object.defineProperty定義對象屬性set,get描述符,在生成vnode時會獲取對象的值,此時會調(diào)用屬性的get方法,同時會收集依賴,當屬性值改變時調(diào)用set方法,通知依賴進行更新。更新過程其實就是對比新的vnode和舊的vnode,基本上key和tag相同,說明是同一個節(jié)點,可能就是更新dom的textcontent,如果不相同則生成新的dom節(jié)點,刪除舊的dom節(jié)點。
如果理解發(fā)布訂閱模式?
定義了對象間的一種一對多的依賴關(guān)系,當一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都將得到通知,并自動更新。
那些會隱式轉(zhuǎn)換為false
undefined,null,"",0,false,NaN,其它的都隱式轉(zhuǎn)換為true。
- console.log(i++);
也是需要先輸出i,再進行++自增運算。 - . 和 new ,new xx() 運算符優(yōu)先級
function Foo() {
getName = function () { alert (1); };
return this;
}
Foo.getName = function () { alert (2);};
Foo.prototype.getName = function () { alert (3);};
var getName = function () { alert (4);};
function getName() { alert (5);}
//請寫出以下輸出結(jié)果:
Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName();
new Foo() >> . >> () 函數(shù)調(diào)用 >> new
為什么使用前端框架
- 組件化使工程易于維護、易于組合擴展
- UI與狀態(tài)的同步,提高了開發(fā)效率