props
e mi
t自定義
事件ev
ent.
emit 自定義事件event.
emit自定
義事件e
vent
.on()兄弟傳值 注意銷毀 event.$off()
生命週期 建立或update從外到內 渲染從內到外
vue 高階特性
="hello"
>
}<
/p>
子:type=
"text"
:value=
"msg"
@input=
"$emit('change', $event.target.value)"
/>
<
/div>
<
/template>
export
default
,props:,}
;<
/script>
vuex
vue-router 動態路由,巢狀路由 ,懶載入
渲染過程
初次渲染:
1、解析模板為render函式(或在開發環境已完成vue-loader)2、觸發響應式,監聽data屬性的getter,和setter。
3、執行render函式生成vnode,patch,會觸發getter,生成依賴變數觀察起來。
更新過程:1、修改data,觸發setter。2、重新執行render函式生成newvnode
3、patch(vnode,newvnode) patch的diff演算法會自動獲取變動最小值。
非同步渲染
彙總data的修改,一次性更新檢視
減少dom操作次數,提高效能
前端路由
hash變化會觸發網頁跳轉,前進後退,不會重新整理頁面,不會與後端產生互動。
重點api:
手動修改hash
window.
onhashchange((
e)=>
)
h5 history:用url規範的路由,但跳轉時不重新整理頁面。
history.pushstate 切換路由
window.onpopstate 監聽瀏覽器前進後退
需要server配合
兩者選擇:
to b 系統推薦用hash,簡單易用,對url規範不敏感
to c 系統可以考慮用history,但需要服務端支援,如果不需要seo
能簡單就簡單,不要用複雜的。考慮成本和收益
vue 效能優化
合理使用v-if v-show
合理使用 computed 快取
key 避免和v-if 同時使用
自定義事件dom事件及時銷毀
合理使用非同步元件 keep-alive
data層級不要太深
webpack層面優化
前端通用的優化,懶載入
使用ssr
區別:第乙個區別在於defineproperty只能監聽某個屬性不能全物件監聽
proxy不用設定具體屬性
defineproperty監聽需要知道那個物件的那個屬性,而proxy只需要知道那個物件就可以了。也就是會省去for in 迴圈提高了效率
第二個區別在於proxy不需要借助外部value,也有單獨相配的物件即reflect,
eg:var ob=
在proxy的get裡面有target,key,receiver三個值,其中target是物件ob,key是ob.a,receiver是,set裡面除了這三個額外多加了乙個value,value是傳出來的新值。所以在get裡return的就是target[key],set裡面return的是target[key]=value或者用proxy裡的reflect.set(target,key,value)這樣寫優雅一點
第三個區別在於不會汙染原物件(關鍵區別)
proxy去**了ob,他會返回乙個新的**物件不會對原物件ob進行改動,而defineproperty是去修改元物件,修改元物件的屬性,而proxy只是對元物件進行**並給出乙個新的**物件
Vue經驗總結
題記 前段時間時隔8個月重新拾起了vue,vue的太 yi 好 jing 用 wang 了 wan 以前用慣了react的dva然後突然切換到vue的vuex真的有點不習慣。這個是vuex中的大哥大,什麼都歸它管 state mutations getter action module 你可以把它理...
面試經驗總結
我從事技術工作,這幾年的面試與被面試總結 先說我去被面試的經驗吧。回答清楚了2個問題,就能順利過關了。1。為什麼要離開上一家公司。2。公司為什麼要僱傭你。問第乙個問題的是hr 或老闆 呵呵 即使你技術過關,hr那裡沒有好的影響,結果是乙個字,難!如何回答呢?hr想推論出你在他的公司能呆多久。這個時候...
面試經驗總結
等了一天hr的 終於確定了新的工作。從剛開始過了面試的高興,到等hr的通知焦慮,最終的確定,可謂是一波多折,心境也起起伏伏。面試了幾家公司,總結了一下自己的一些心得送給有需要的人。不知名的 211大學,軟體工程,一般的技術,2017年正式畢業,而後在上海,然後回的成都。其實在大學的時候,真的該認認真...