原创 Chrome 自動把 http 的 xhr 請求替換成了 https 域名

問題描述 遇到了個詭異的事情。客戶反饋他們想在線上 https 域名下,就是要訪問 http 的鏈接,但是失敗了。發出去的一直是 https 的 xhr 請求。 直接在控制檯輸入例子代碼,就能看到 network 裏發出去的鏈接的確是 ht

原创 TS 自定義泛型工具例子-修改使定義的部分屬性必須存在

工作中常常用 API 的入參是非必填的,而實例的屬性因爲有默認值而一定存在的情況,舉個例子: type TestOptions = { num?: number str?: string hookFn?: () => strin

原创 在 TS 裏簡單區分 any, unknown, never 的差別

any 任意類型。即不作任何約束,編譯時會跳過對其的類型檢查。 表現: 可以被任意值所賦值 可以賦值給任意定義 訪問一切這個變量下的屬性或者方法都不會做檢查而報錯。 如下列的代碼,均不對 test 變量做類型檢查。 // 1. 可以被任

原创 RN 0.57.8 與 0.60.5 的環境安裝問題記錄

Could not find iPhone X simulator 本地裝的 RN 0.57.8,node 8.11.0,xcode 11.5 找到 node-modules/react-native/local-cli/runIOS/fi

原创 fingerprint2 計算瀏覽器指紋分析

介紹 瀏覽器指紋簡單來說就是獲取瀏覽器一些具有辨識度的信息,計算得到的值,以此指紋信息可以對應此用戶。辨識度的信息可以是 UA、時區、地理位置或者是你使用的語言等其他的參數,信息越多並且信息的區別度越大,越能決定瀏覽器指紋的準確性。 直接使

原创 JS 導出數據成 csv 格式與 excle 亂碼問題

設我們有這麼一個數據希望能導出成爲 csv 文件 const title = { name: '名字', age: '年齡', sex: '性別', city: '所在城市', weight: '體重', heigh

原创 JS 轉 gbk 編碼與 iconv-lite 探究

直接使用 api const urlencode = require('urlencode'); const text = '你好'; urlencode.encode(text, 'gbk').toLocaleLowerCase();

原创 HTTP Options 跨域時發送兩個請求是怎麼回事?

在正式的跨域請求之前,我們能在控制檯上看到先發送了一個 OPTIONS 請求去詢問服務器是否允許接下來的跨域請求,那麼有關於這個 OPTIONS,今天就來介紹一下。 在 OPTIONS 請求裏有幾個字段: Origin:發起請求原來的域

原创 GET 和 POST 其實並沒有本質區別

報文 常見 GET 的報文如下 GET /index.html?name=everlose&age=28 HTTP/1.1 Host: localhost ...省略其他 request header 常見 POST 報文如下 POST

原创 爲什麼設置動畫 translateX 比 left 更流暢?

提問 被問到怎麼設置一個從左到右的動畫?我回答了設置 key-frame 的動畫名,加上 from 和 to 去設置 left 屬性的變化。 追問設置 left 是最好的選擇嗎?有更快更流暢的方案嗎?我回答了 translateX。 然爲什

原创 Node Buffer 對象的探究與內存分配代碼挖掘

參照 Node 官方文檔 Buffer API 作用 在前端開發過程中,一般也只有字符串級別的操作,很少接觸字節這樣的底層操作。而在後端的領域裏,操作網絡協議、圖片和文件 I/O 十分常見二進制數據,爲了讓 JS 能處理,node 封裝了一

原创 React 爲什麼要把事件掛載到 document 上 & 事件機制源碼分析

前言 我們都知道 React 組件綁定事件的本質是代理到 document 上,然而面試被問到,爲什麼要這麼設計,有什麼好處嗎? 我知道肯定不會是因爲虛擬 DOM 的原因,因爲 Vue 的事件就能掛載到真實的 DOM 節點。所以繼續往下探究

原创 Node Stream 流探究

流(stream)是一種在 Node.js 中處理流式數據的抽象接口。 stream 模塊提供了一些基礎的 API,用於構建實現了流接口的對象。 Node.js 提供了多種流對象。 例如,發送到 HTTP 請求,和 fs.createRea

原创 爲什麼要在列表組件裏寫 Key ?

答案:主要是爲了提升同級的比較效率的。 借用我在博客上另外一篇 Vue 2 渲染過程的圖 其中核心比對邏輯就是新老節點頭對頭,頭對尾,尾對頭,尾對尾,都判定非 sameVnode,則拿着 key 去比對,若其中有被判定爲 sameVnod

原创 var、let 和 const 的區別以及暫時性死區

面試時候碰到這個問題,多數的回答都是比起 var,後兩者不會變量提升,並且生效於塊級作用域。但這還不夠。 先上結論:let,var,const,三者都會變量提升。 var 是創建和初始化的過程都提升了,所以提前訪問得到 undefined