原创 React 全家桶之 redux

redux 流程圖 redux 的使用 先看一下目錄結構 components/counter.js:創建store import { createStore, applyMiddleware } from 'redux'; imp

原创 接口轉發篇

webpack 轉發 我們在開發階段經常會用到 webpack-dev-server 來啓動本地服務,其實就是起了一個 node 中的 express 服務。當我們在與後端的聯調階段,有兩種方式 後端把代碼部署到測試環境,然後我們直接聯測

原创 JS 異步編程解決方案:Promise、Generator、Async/Await

一、Prommise 1.1 簡介 回想一下我們使用傳統方式(回調函數)是如何來解決異步編程依賴問題的 login(param, function() { consloe.log('登錄成功,開始獲取用戶信息') getUser

原创 打包工具系列之——webpack 打包原理及優化

  一、webpack簡介 webpack 是就是一個模塊打包器(module bundler),它會根據模塊建的依賴關係,遞歸的構建出一張依賴關係圖(dependency graph)。圖中包含了應用程序所依賴的每個模塊,最後將所有的模

原创 賬號中心、單點登錄、OAuth2.0

這三者說的其實都是一個事情,真個流程大致如下    

原创 淺談編碼Base64、Hex、UTF-8、Unicode、GBK等

網絡上大多精彩的回答,該隨筆用作自我總結;   首先計算機只認得二進制,0和1,所以我們現在看到的字都是經過二進制數據編碼後的;計算機能針對0和1的組合做很多事情,這些規則都是人定義的;然後有了字節的概念,8比特一個字節,如0101110

原创 V8 內存管理

一、內存查看 console.log( '\n node分配到的總內存 rss: ' + mem.rss, '\n 堆內存 heapTotal: ' + mem.heapTotal, '\n 已使用的內存 hea

原创 瀏覽器內部結構

一、核心線程 瀏覽器是一個多進程多線程的系統,它會有一個主進程進行任務的調度。有一個第三方插件進程,避免插件崩潰時影響頁面內容。然後每個 tab 頁面都是一個單獨的進程,每個 tab 進程中又有以下幾個重要的線程: GUI 渲染線程 JS

原创 瀏覽器緩存總結

最近一直被瀏覽器的緩存行爲所困擾,因此換了一番功夫做一次總結,話不多說直接進入正題。 瀏覽器的緩存策略包括兩種:強緩存和協商緩存 強緩存 強緩存即直接從本地讀取緩存副本,不需要向服務器發起請求,這種方式是最快的。 HTTP 1.0   使

原创 CDN 內容分發網絡

定義 CDN 全稱叫做 Content Delivery Network,一般我們所說的CDN加速,一般是指網站加速或者用戶下載資源加速。 比如當我們在訪問 https://www.taobao.com 的時候,我們認爲 DNS(域名解析

原创 js 中的深拷貝

一、JSON.stringify and JSON.parse 現使用 JSON.stringify 將 Object 對象轉化成基本類型 String,再使用 JSON.parse 將 String 轉換成 Object。如 var

原创 COOKIE和SESSION有什麼區別?

1,session 在服務器端,cookie 在客戶端(瀏覽器) 2,session 默認被存在在服務器的一個文件裏(不是內存) 3,session 的運行依賴 session id,而 session id 是存在 cookie 中的,

原创 js 中箭頭函數與傳統函數的區別

箭頭函數是匿名函數,不用當成構造函數來使用(不能 new) 箭頭函數不綁定 arguments,所以函數裏不能用它 箭頭函數內部 this 指向函數定義時的上下文對象,而普通函數 this 指向函數執行時的上線文對象 箭頭函數內部的 th

原创 HTTP 系列之 —— 五層因特網協議

因特網協議棧共有五層結構:應用層、傳輸層、網絡層、數據鏈路層、物理層。數據是從上到下經過一層一層包裝之後發送出去的。 我們從底層開始說起,這樣說到上面的時候就能清楚後面發生的事情了,更加有利於理解 http 請求的流程 一、物理層 不管你

原创 HTTP 系列之——DNS

DNS 簡介 DNS 的全稱爲 Domain Name System(即域名系統),它是將域名解析成對應的 IP 地址。 想象以下我們打電話的場景,當我們要打電話給一個朋友時,我們往往不會直接撥他的號碼(她倒是有可能),因爲電話號碼太長了