前端知識自問自答

2022-06-29 07:12:15 字數 1983 閱讀 7408

1. 什麼是rfcs ?

並非所有的rfc文件都是網際網路標準,只有很少的rfc文件最後變成了網際網路標準。

2.vue的雙向繫結的原理是什麼?

vue.js是採用資料劫持結合發布者-訂閱者模式的方式,通過es5提供的object.defineproperty()方法來劫持(監視洛個屬性的setter,getter)。

在資料變動的時發布訊息給訂閱者,觸發相應的監聽**。由於是在不同的資料上觸發同步,可以精確的將變更傳送傳送給繫結的檢視,而不收所有的資料

進行一次檢測。

關於 vue2 和 vue3在此問題的區別:

具體的步驟-執行原理:

需要observer的資料物件進行遞迴遍歷,包括子屬性物件的屬性,都加上getter和setter這樣的話,給這個物件的某個值賦值,就會觸發setter,那麼就能監聽到了資料變化

compile解析模板指令,將模板中的變數替換成資料,然後初始化渲染頁面檢視,並將每個指令對應的節點繫結更新麗數,新增監聽資料的訂閱者,一旦資料有變動收到通知,更新檢視

watcher訂閱者是observer和compile之間通訊橋梁,主要做的事情是:一在自身例項化時往屬性訂閱器(dep)裡面新增自己,一自身必須有乙個update()的方法,待屬性變動dep.notice()通知的時候,能呼叫自身的update()方法,並觸發compile中繫結的**。

mvm作為資料繫結的入口,整合observer、compile和watcher三者,通過observer來監聽自己的model資料變化,通過compile來編譯模板指令,最終利用watcher搭;起的observer和compile之間的通訊橋梁,達到資料變化---試圖更新;檢視互動變化(input)-->資料model變更的雙向繫結效果

vue-router的原理就是更新檢視而不重新請求頁面;vue-router可以通過mode引數設定為三種模式:hash模式、history模式、abstract模式。

預設是hash模式,基於瀏覽器history api,使用window.addeventlistener('hashchange',callback,false)對瀏覽器位址進行監聽。當呼叫push時,把新路由新增到瀏覽器訪問歷史的棧頂。使用replace時,把瀏覽器訪問歷史的棧頂路由替換成新路由hash的值等於url中#及其以後的內容。瀏覽器是根據hash值的變化,將頁面載入到相應的dom位置。錨點變化只是瀏覽器的行為,每次錨點變化後依然會在瀏覽器中留下一條歷史記錄,可以通過瀏覽器的後退按鈕回到上乙個位置

history模式,基於瀏覽器history api,使用window.onpopstate對瀏覽器位址進行監聽。對瀏覽器history api中的pushstate()、replacestate()進行封裝,當方法呼叫,會對瀏覽器的歷史棧進行修改。從而實現url的跳轉而無需載入頁面但是他的問題在於當重新整理頁面的時候會走後端路由,所以需要服務端的輔助來兜底,避免url無法匹配到資源時能返回頁面。

abstract不涉及和瀏覽器位址的相關記錄。流程跟hash模式一樣,通過陣列維護模擬瀏覽器的歷史記錄棧服務端下使用。使用乙個不依賴於瀏覽器的瀏覽器歷史虛擬管理後台

總結hash模式和history模式都是通過window.addevevtlistenter()方法監聽hashchange和popstate進行相應路由的操作。可以通過back、foward、go等方法訪問瀏覽器的歷史記錄棧,進行各種跳轉。而abstract模式是自己維護乙個模擬的瀏覽器歷史記錄棧的陣列

4.vue中計算屬性computed和普通屬性method的區別是什麼?

C語言自問自答

windows系統下,最好如何配置環境?notepad tdm gcc,powershell來進行!scanf函式的返回值,和不符合格式如何返回?1 include2 void main 3 輸入 1 2 3 返回1,2,3,3 輸入 1 a 3 返回1,1,0,1 其中,x為scanf的返回值,i...

瀏覽器知識自問自答

webstorage又可以分為localstorege和sessionstorage localstorage和cookie異同 相同 針對乙個網域名稱,即在同乙個網域名稱下,會儲存相同的一段localstorage 區別 容量 localstorage的容量上限為5m,相對於cookie的4k大大...

spark 機制原理自問自答

本文主要收錄spark學習和工作中思考的問題。1 當spark task failed,什麼情況下task重計算,什麼情況下stage重計算?答 如果task失敗是因為shuffle output files lost,則dagscheduler會對stage重提交計算 如果不是因為shuffle ...