答:
一:怎么樣搀崭,這2個生命周期鉤子熟不熟焊夸,這2個鉤子大家每天都在用窖梁,所以面試回答就更不能掉以輕心剧腻,要快速思考這個問題考的是什么舞萄。還是那個思路州丹,講概念低滩,講經(jīng)驗缤言,有條理采驻,越多越好审胚,講到面試官覺得夠了夠了,我還要問下面的問題呢
二礼旅、開始回答:
?????? 1.答概念
????????????? Created主要是拿到數(shù)據(jù)依賴膳叨,拿到我們寫在template模板里的dom,而這個時候痘系,所謂的虛擬dom也沒有生成菲嘴,真實dom也沒有生成,所以數(shù)據(jù)依賴和模板dom還無法真實綁定汰翠。但是我們可以在這個鉤子里發(fā)送一些異步請求龄坪,可以提前做一些數(shù)據(jù)預備處理;而mounted呢复唤,他包含了react的render功能健田,數(shù)據(jù)依賴和dom綁定,并且最終生成真實dom佛纫,我們可以做各種操作了抄课。但剛才有個問題唱星,created可以發(fā)送請求了,那么如果這個請求非常之快跟磨,還沒有mounted這一步就把數(shù)據(jù)請求回來了间聊,那么這里就給數(shù)據(jù)變量賦值了,豈不是沒有走到mounted抵拘,無法賦值嗎哎榴?所以這里可以表述一下在項目中$.nextTick的使用。這不就是項目經(jīng)驗和解決問題的過程嘛
?????? 2.既然題目問道2個鉤子函數(shù)之間的時間差值僵蛛,那么首先想到的就是有個beforeMounted這個生命周期鉤子吧尚蝌,我們在這個鉤子里做一些攔截的事,是不是會影響呢
?????? 3.第一步已經(jīng)說明了2個鉤子函數(shù)的概念充尉,所以組件嘛飘言,就有簡單和復雜的問題,如果你的數(shù)據(jù)依賴層級太深驼侠,對象抱著數(shù)組姿鸿,數(shù)組里又有對象,如果你的template模板里的html內容寫的過于深入倒源,綁定起來是不是時間更長呢苛预,如果又包含了子組件,子組件又套了子組件呢笋熬,是不是過程就會不斷拉長热某。在這一步你可以為自己擴充回答一下父子組件的生命周期執(zhí)行的順序,當然不宜說的過深胳螟,大概關鍵點位表述一下就可以了昔馋;
?????? 4.一旦說道渲染,立刻要想到dom樹的組成部分糖耸,對绒极,就是css那一部分。雖然我們最終寫在組件里的css都會被打出css文件蔬捷,但現(xiàn)在很多人用了less非常爽,嵌套起來剎不住車榔袋,這最終被打出來的css文件也回一個嵌套極深的邏輯周拐,再加上需要下載css文件,再被瀏覽器識別凰兑,再開始執(zhí)行與dom模板組裝妥粟,其實瀏覽器幫我們做了非常多的時間,我們能做的就是盡量少的讓瀏覽器做吏够。
???? 5.既然這是2個生命周期勾给,剛剛我們說道異步請求滩报,那么網(wǎng)速將會是一個考慮條件了吧。現(xiàn)在雖然總是用Promise播急,又用async await脓钾,但大家有沒有想過,一說就是解決了原來的回調地獄問題桩警,但就算有回調地獄又咋了可训,代碼跑不了?用戶瀏覽不了捶枢?他只是提升了一小部分大家的開發(fā)時間握截,讓大家表面覺得很爽了。但一旦涉及到異步烂叔,異步所需要的這個時間他倒是也解決了啊谨胞,從客戶端想服務端請求別花時間啊∷饧Γ可能有人會反駁我說胯努,這哪是節(jié)省了一點點開發(fā)時間,是大大提升了好吧术瓮。見仁見智吧康聂,上班你摸魚那點功夫,回調80層地獄估計也回調出來了吧胞四。
?????? 6.有沒有想過恬汁,一臺新出的旗艦機和好幾年的百元安卓機比,執(zhí)行一行js代碼的時間會有差別嗎辜伟?所以這個是不是也算呢氓侧。很多人面試者說自己之前公司是做硬件的,自己做的前端程序會部署上去导狡,如果能考慮到這點约巷,會顯得非常合適。
三旱捧、面試雖然是聊天独郎,卻非常耗費精力,所以私下復習面試題的時候一定要盡量掌握枚赡,背熟氓癌,經(jīng)歷的多了自然而然也能臨時解決面試官的臨場經(jīng)驗提問了。如果有覺得面試困難癥的同學們贫橙,可以找我提供幫助贪婉。