性能優化方案 優化分類: 優化打包後的結果(分包、減小包體積、CDN 服務器) == 更重要 優化打包速度(exclude、cache-loader) 代碼分割(Code Splitting) 一、主要目的 減少首屏加載體積:避免一次性加載全部代碼 利用瀏覽器緩存:第三方庫(如 React、Lodash)變動少,可單獨緩存
這是我們前端最常見的兩種攻擊手段,也是面試中最常考的前端攻擊。這篇文章我用最精煉、最優雅,也是面試官最喜歡的回答方式來講解下 XSS 和 CSRF。 一、XSS(跨站腳本) 原理 攻擊者把 惡意腳本 注入到受信任頁面並被瀏覽器執行,腳本 利用頁面的信任上下文(Cookies、localStorage、DOM)竊取數據或劫持會話。 常見類型 反射
Webpack 的 Tree Shaking(搖樹)是一項用於消除 JavaScript 上下文中未引用代碼的優化手段,它能有效減小打包體積。 核心原理 Tree Shaking 的本質是 死代碼消除,它依賴 ES6 模塊(ESM)的靜態語法結構。 靜態分析:ESM 的 import/export 語句必須位於模塊頂層(注意:模塊頂層不是模塊文件頂部的意思
一、執行上下文(Execution Context)與環境記錄(Environment Record) 執行上下文是函數/全局/模塊代碼執行時的抽象環境,包含幾部分: LexicalEnvironment(詞法環境)——存 let/const/class、catch 參數、塊級作用域、函數參數、箭頭函數 this 等詞法綁定 不掛載到 global
一、概念 JavaScript 是單線程執行(基於執行棧 / 調用棧 call stack),事件循環負責不斷地從各種任務隊列裏取任務執行——以保證異步任務的函數回調按規則有序運行,瀏覽器環境和 Node.js 環境都使用事件循環,儘管他們的事件循環邏輯並不相同。 之所以函數的執行基於“棧”這種結構,是因為 js 函數允許嵌套,先調用的函數需要等待內部函數的調用執行完畢才
原型這塊知識點,其實在我們工作中的使用非常簡單。但是俗話説“面試造火箭,工作擰螺絲”,在面試中,面試官不時就會考察一些花裏胡哨的問題,所以,我們只有將這個概念和他的相關知識理解透徹,才能以不變應萬變。 兩個容易混淆但要分清的東西 每個普通對象都有內部隱式屬性 [[Prototype]](常見訪問名 proto) ——
瀏覽過網絡上超多篇面經後,關於 this 的考察給我的感覺就是——不會為了難而難。看過很多作者發佈自己對於 this 的“炫技”寫法,再看真實面試和工作場景中的使用。我認為,最重要的還是掌握最基本的使用,“炫技”的一些寫法根本拿不上真實項目,“誰都讀不懂的代碼”不是“高級”而是“一場災難”。 一、綁定規則 new(構造調用)綁定(優先級最高)
〇、Babel 概述 Babel 的工作原理 = “把代碼變樹 → 改樹 → 再變回代碼”。 也就是三個階段: Parse(解析):ESNext(ES 新語法) → AST 語法樹 Transform(轉換):插件修改 AST Generate(生成):AST → 舊 JS 代碼(瀏覽器都可以識別的代碼) Babel 是一個“代碼轉換工具
全文默認講的是瀏覽器端發起的 HTTP 請求的“跨域”問題(同源策略導致的受限)。 跨域 / 同源策略概述 **同源(same-origin)**:協議、域名(host)、端口 三者完全相同稱為同源。 例如 https://example.com:443 和 http://example.com 不是同源(協議不同)。 **同源策略(SOP)**
一、HTTP vs HTTPS 概覽 HTTPS = HTTP + 加密認證(基於 TLS),能防止被中間人竊聽與篡改,並證明服務器身份。 非對稱(RSA/ECDSA)用於做身份認證與安全協商密鑰(但慢)。 對稱加密速度快,適合實際數據傳輸。 握手用非對稱協商對稱會話密鑰,然後用對稱加密通信。 二、SSL/TLS 握手 先看 傳統 TLS1
接上篇文章説道,跨域解決方案中的 CORS 方案,會配置一個 Access-Control-Allow-Origin 的配置項,而且我們一般不直接配置為 *,這樣做的原因是什麼以及企業中的最佳實踐是怎麼樣的,這篇文章給你答案! 簡單概括 Access-Control-Allow-Origin: * 允許任意來源的頁面讀取你的響應內容(對瀏覽器端的 JS
今天一位學弟“哭着”來找我,説他面試美團(實習崗)的時候,被問到了跨域問題的解決方案,回答的並不好。我還正想着,這麼常見的問題回答不出來,這不就是基礎不過關。但誰知道,面試官讓他封裝 JSONP 來實現跨域!怪我當時還告訴他們這種方案現在很少用,看一眼八股瞭解即可,現在可謂是啪啪打臉! 既然都問到了這個問題,那這篇文章就來詳細講講跨域解決方案的棄子——JSONP