原创 瀏覽器緩存你 GET 了嗎?

引言 其實,緩存這一塊的知識對於普通的只是以快速頁面開放的同學來說,我想應該是一知半解。但是,很好地理解緩存地過程可以讓我們更好地記憶 HTTP 狀態碼 和 HTTP 首部字段。正常的瀏覽器緩存的過程: 詢問瀏覽器內存(Memo

原创 數據結構——斐波那契數列的那點事

引言 0、1、1、2、3、5、8、13、21 說來慚愧,第一次認識斐波那契數列是在一次面試題中,當時稍微觀察了一下,就果斷地寫出了迭代版本的斐波那契數列…當時,還覺得這個算法題的數學模型也太簡單了吧,殊不知有時候問題並不是你解

原创 探索Vue.js底層源碼——v-modal 語法糖

引言 其實對比起來 Vue 與 React 起來,除了 React 鮮明的函數式的組件、JSX,最大的不同就是 Vue 封裝了 v-model 這個語法糖實現了數據的雙向綁定。而 v-model 這個語法糖的實現其實也是非常地簡單

原创 Webpack——打包優化

引言 其實,相信很多隻是從事快速應用開發的同學,對於 Webpack打包優化方面可能是一知半解(我深有感觸…)。但是,作爲一名從事編程的人,我一直推崇的就是用編程高效、快速解決一些問題。因爲,如果只是解決問題,我想這不是我想要的,

原创 TypeScript——泛型

泛型 TS中可以使用泛型創建可重用的組件,一個組件可以支持多種類型的數據,這樣用戶就可以以自己的數據類型來使用組件。 泛型變量 通過泛型變量,可以知道用戶傳入的類型,從而可以以這個類型作爲函數的返回類型。 function ide

原创 如何使用 Putty 登錄到遠程阿里雲服務器

前言 連接遠程服務器的方式有很多種,列如:X-Shell、阿里雲內置的遠程連接 Shell 窗口、Putty 等等。本文將會講解如何通過 Putty 連接到阿里雲遠程服務器(之所以使用 Putty,是因爲懶,剛好生成 SSH 密鑰

原创 (詳解)從瀏覽器輸入 URL 到頁面展示過程

引言 對於面試常問的從瀏覽器輸入 URL 到頁面展示過程發生了什麼?,我想大家都或多或少能說出一二。但是,其實這個問題很有深度,而你是否回答的有深度,在很大程度上會影響到面試官對你的印象。 並且,網上各種資料都是淺嘗輒止地講解這個

原创 TypeScript———枚舉

枚舉 在 TS 中可以通過枚舉定義一些帶名字的常量。 數字枚舉 enum Driection { Up = 1, Down, Left, Right } 這段代碼定義了一個名爲 Direction 的枚舉,其中 Up 初

原创 探索Vue.js底層源碼——編譯過程

引言 Vue 的編譯過程總共分爲三個步驟: 根據 template 生成 AST(抽象語法樹) 優化 AST 根據 AST 可執行的函數(render 函數之類的) 這三個步驟其實在源碼中,也寫的清清楚楚。 export co

原创 Vue3.0 的 reactive API 定義和源碼實現

引言 今年,對於從事前端開發的同學而言,很是期待的一件事就是 Vue3.0的發佈。但是,Vue3.0離發佈還是有點時間的,並且正式發佈也不代表我們就馬上就可以用於業務開發。它還需要完善相應的生態工具。不過正式使用是一碼事,我們自己

原创 HTTP——HTTPS 你瞭解了嗎?

引言 認識 HTTPS之前,先來講講 HTTP存在的缺點: 使用明文,內容可能會被竊聽 不驗證通信方的身份,可能會遭遇僞裝 無法證明報文的完整性 在一些場景,使用 HTTP沒有問題,但是在一些涉及到隱私、支付方面的問題的時候,

原创 一文帶你徹底搞懂瀏覽器中的Event Loop

引言 對於從事前端的同學來說,應該對瀏覽器中的 Event Loop有所瞭解。這個瞭解的過程,可能是自己總結,也可能是通過網上的各種講解。可能,對於前者而言能總結出 Event Loop,說明對它的概念已通透於心。但是,對於後者而

原创 Vue 中作用域 CSS 的那點事

前言 首先,我們來回憶一下「CSS 作用域」這一概念,它的本質是通過讓每一個選擇器成爲一個「unique」的存在,這樣就自然而然地形成了作用域。 而提到「Vue」中「作用域 CSS」,我想大家應該立即想到以 scoped 的方式

原创 靈魂拷問,你真的懂 JavaScript 中的變量提升嗎?

引言 對於變量提升這個問題,我想從事前端的同學都或多或少認爲我懂這個。曾經,我也是這樣認爲的,我懂變量提升,並且可以從變量在 Chrome 中的內存分配講起,以及中間發生了什麼。 但是,在一次面試中,我遇到了幾個一起面前端的同學(

原创 (源碼分析)爲什麼 Vue 中 template 有且只能一個 root ?

引言 在前段時間看到這樣一個關於 Vue 的問題,爲什麼每個組件 template 中有且只能一個 root? 可能,大家在平常開發中,用的較多就是 template 寫 html 的形式。當然,不排除用 JSX 和 render