執行環境
網頁載入過程
題目:
知識點:
資源的形式
載入過程
瀏覽器根據 ip 位址向伺服器發起 http 請求(三次握手)
伺服器處理 http 請求,並返回給瀏覽器
渲染過程1
渲染過程2
為什麼建議把 css 放在 head 中?
dom tree 從上到下執行,如果 css 沒有放到頭部,而是放到了尾部,會先 dom 結構渲染出來而沒有樣式,直到遇到 css 才會將 css 與 dom tree 結合
為什麼建議把 js 放在 body 最後?
js**會阻塞頁面的渲染
window.onload 和 domcontentloaded 的區別
window.addeventlistener('load', function () )
document.addeventlistener('domcontentloaded', function () )
效能優化的方式
效能優化是乙個綜合性問題,沒有標準答案,但要求盡量全面,某些細節問題可能會單獨提問:手寫防抖、節流
效能優化原則
從何入手
讓載入更快
讓渲染更快
示例講解
快取:配置 webpack 壓縮時 hash 值,根據檔案內容計算 hash 值。檔案內容不變,則hash 不變,則 url 不變。url 和檔案不變,則會自動觸發 http 快取機制,返回 304(資源未被修改,可以使用本地快取)
ssr:(ssr)服務端渲染,將網頁和資料一起載入,一起渲染;非ssr(前後端分離),先載入網頁,再載入資料,然後渲染資料。早先的 jsp asp php,現在 vue react ssr。
懶載入:
手寫防抖(debounce)const input1 = document.getelementbyid('input1')
let timer = null
input1.addeventlistener('keyup',function ()
timer = settimeout(() => , 500)
})
封裝防抖函式
// 封裝防抖函式
function debounce(fn, delay = 500)
timer = settimeout(() => , delay)
}}input1.addeventlistener('keyup', debounce(function () , 500))
手寫節流(throttle)const div1 = document.getelementbyid('div1')
let timer = null
div1.addeventlistener('drag', function (e)
timer = settimeout(() => , 100)
})
封裝節流函式
function throttle(fn, delay = 100)
timer = settimeout(() => , delay)
}}div1.addeventlistener('drag', throttle(function (e) , 100))
安全
問題:常見的web前端攻擊方式有哪些?
xss 攻擊
xss 預防
xsrf 攻擊
xsrf攻擊預防
第十六章 tcp wrappers
在伺服器向外提供的tcp服務上包裝一層安全檢測機制。外來連線請求首先通過這個安全檢測,獲得安全認證後才可被系統服務接受。hosts.allow hosts.deny 在配置檔案中為各服務分別定義訪問控制規則實現訪問控制,檔案中的規則是即時生效的。配置檔案語法 1 daemon list client...
第十六章 執行緒棧
1 基礎 1 執行緒初始化時,執行緒棧預設1m,所有頁面都是page readwrite屬性,但只為前兩個頁面調撥了物理儲存器,位址低的那個頁面叫防護頁面,為其指定了page guard屬性 2 當執行緒訪問到防護頁面時,由於指定了page guard屬性,系統會得到通知,系統會為防護頁面的下乙個頁...
第十六章 控制迴圈
第十六章 控制迴圈 16.1 選擇迴圈的種類 1.在大多數語言中,你只能用到少數幾種迴圈 1 計數迴圈 執行次數一定。2 連續求值的迴圈 預先並不知道將要執行多少次,它會在每次迭代時檢查是否應該結束。3 無限迴圈 一旦啟動就一直執行下去。4 迭代器迴圈 對容器類裡面的每個元素執行一次操作。2.什麼時...