原创 換個角度,結合高階函數聊聊useMemo和useCallback

關注 小賊先生,查看更多前端文章 Hook 是 React 16.8 的新增特性。它可以讓你在不編寫 class 的情況下使用 state 以及其他的 React 特性。 useCallback和useMemo是其中的兩個 hooks,本文

原创 React16時代,該用什麼姿勢寫 React ?

React16 後的各功能點是多個版本陸陸續續迭代增加的,本篇文章的講解是建立在 16.6.0 版本上本篇文章主旨在介紹 React16 之後版本中新增或修改的地方,所以對於 React16 之前版本的功能,本篇文章當作您已充分了解了,不再

原创 compose合併函數依次執行 - 來源redux

  1 function compose(...funcs) { 2 if (funcs.length === 0) { 3 return arg => arg 4 } 5 if (funcs.length === 1

原创 從瀏覽器輸入網址到頁面渲染完成,發生了什麼事情?

  -> 瀏覽器解析 -> 查詢緩存 -> dns查詢 -> 建立鏈接 -> 服務器處理請求 -> 服務器發送響應 -> 客戶端收到頁面 -> 解析HTML -> 構建渲染樹 -> 開始顯示內容(白屏時間) -> 首屏內容加載完成(首屏時間

原创 Axios源碼深度剖析 - AJAX新王者

Axios源碼分析 - XHR篇 文章源碼託管在github上,歡迎fork指正! axios 是一個基於 Promise 的http請求庫,可以用在瀏覽器和node.js中,目前在github上有 42K 的star數 備註: 每一小節

原创 mixin配合class實現多繼承的絕佳妙用

Github 源碼地址 什麼是mixin mixin一般翻譯爲“混入”、“混合”, 早期一般解釋爲:把一個對象的方法和屬性拷貝到另一個對象上; 也可以簡單理解爲能夠被繼承的類, 最終目的是實現代碼的複用。 從一個需求說起 爲了使你能夠最快的

原创 JS方法:數字轉換爲千分位字符

  1 /** 2 * 數字轉爲千分位字符 3 * @param {Number} num 4 * @param {Number} point 保留幾位小數,默認2位 5 */ 6 function parseToTh

原创 Immer 實戰講解

文章在 github 開源, 歡迎 Fork 、Star ! 前言 Immer 是 mobx 的作者寫的一個 immutable 庫,核心實現是利用 ES6 的 proxy,幾乎以最小的成本實現了 js 的不可變數據結構,簡單易用、體量

原创 原生js實現canvas氣泡冒泡效果

說明:  本文章主要分爲ES5和ES6兩個版本 ES5版本是早期版本,後面用ES6重寫優化的,建議使用ES6版本。   1, 原生js實現canvas氣泡冒泡效果的插件,api豐富,使用簡單2, 只需引入JumpBubble.js一個js文

原创 iframe跨域動態設置主窗口寬高

Q:在A項目的a頁面嵌入一個iframe,src是B項目的b頁面,怎樣讓a頁面的高度跟b頁面的高度一樣? A:解決跨域方案:增加一個A項目的c頁面。 操作步驟: 一,a頁面的iframe設置: 獲取到當前域名,作爲參數設置到src上 1

原创 用Promise實現:帶延時功能的鏈式調用

    1 // 1) 調用方式 2 new People('whr').sleep(3).eat('apple').sleep(5).eat('durian'); 3 4 // 2) 打印結果 5 'hello, whr'

原创 一行代碼實現簡單模版引擎

  1 function template(tpl, data) { 2 return tpl.replace(/{{(.*?)}}/g, (match, key) => data[key.trim()]); 3 } 4 5 //

原创 Immer.js 十分鐘入門

文章在 Github 開源, 歡迎 fork 、star 前言 Immer 是 mobx 的作者寫的一個 immutable 庫,核心實現是利用 ES6 的 proxy,幾乎以最小的成本實現了 js 的不可變數據結構,解決了許多日常開發中的

原创 create-react-app如何配置@修飾器功能

用create-react-app生成項目後,默認是不支持@修飾器的,如果我們需要使用@修飾器,比如使用mobx時,應該如何配置呢?網上看了很多資料,基本都是關於 babel6 及以下版本的方案,所以寫了這篇文章,專門說說 babel7+