原创 形象化解讀js事件循環以及node事件循環和瀏覽器事件循環的區別

技術背景 javaScript事件循環(Event Loop)是其作爲單線程語言但能實現高效異步運行的核心基礎。要想更深入的瞭解js,對事件循環就要有一個清楚地認識。在node出現之後,js的運行環境不再是單一的瀏覽器,同樣的,node中

原创 react16 Fiber架構的實現

Fiber概念和背景 爲什麼叫fiber 對於進程(Process)和線程(Thread)的概念,我們應該比較瞭解,在計算機科學中還有一個概念叫做Fiber,英文含義就是“纖維”,意指比Thread更細的線,也就是比線程(Thread)控

原创 node 第三方模塊系列------minimist輕量級的命令行參數解析引擎

總體介紹: node.js的命令行參數解析工具有很多,比如:argparse、optimist、yars、commander。optimist和yargs內部使用的解析引擎正是minimist,代碼量也很少(只有幾百行),非常適合研讀。

原创 圖解koa啓動流程

koa作爲express之後的後起之秀,深受開發者喜愛,尤其是async await的寫法,更是使代碼看起來結構清晰。那麼怎樣才能更好的掌握koa的,首先要了解其設計思想,加載流程,設計思想在其他文章中已經介紹,本文主要講總的流程。通過幾

原创 new,create,class,extends,{}創建對象的原理及原型鏈查找規則

首發:https://zhuanlan.zhihu.com/p/91439580 原型,原型鏈屬於js語言的基礎,近期面試了很多同學,發現有很大一部分並不清楚原型,隱式原型,原型鏈之間的關係,加上自己在業務中分析源碼遇到的一些問題,秉着知

原创 egg框架啓動過程和核心入口(圖解)

egg啓動分爲單進程啓動和多進程啓動兩種方式 部分源碼: /** * Start egg application with cluster mode * @since 1.0.0 */ exports.startCluster =

原创 node核心EventEmitter的應用總結

EventEmitter是node中應用非常廣泛,不管是框架,還是腳手架,還是插件都可以看到eventEmitter的身影。比如我們去查看vue, react, webpack, egg, koa等框架或者插件的源碼,都可以看到內部使用到

原创 jest單元測試實踐總結及react單元測試

jest 是facebook推出的一款測試框架,集成了 Mocha,chai,jsdom,sinon等功能。 基本用法 和 mocha 和 chai 的功能很像,甚至可以兼容部分 mocha 和 chai 的語法。可以這麼寫 impor

原创 shadow dom的作用和用法詳解(createShadowRoot, attachShadow)

相信shadow dom很多前端開發工作者都遇到過,它是web component的一部分。不過對於shadow dom很多人並不深入瞭解,只曉得是影子dom結構,那麼到底什麼是shadow dom的,本文將從概念,作用,用法三個方面來介

原创 編程思想系列——使用函數副作用實現程序緩存設計

函數式編程裏面有一個重要的概念,純函數,即怎樣的輸入有怎樣的輸出,並且不依賴於外部變量,同時函數也不會產生任何可觀察的副作用。那麼什麼是函數副作用呢? 函數副作用是指函數在正常工作任務之外對外部環境所施加的影響。 具體地說,函數副作用是指

原创 decorator(裝飾器)總結及第三方包介紹

decorator作爲一個提案,經過了多次修改,還未正式發佈,不過在實際編程過程中,裝飾器已經有了很多的應用。裝飾器很受歡迎的主要原因是其借鑑了java中註解的概念,讓代碼結構性和可讀性大大增強。 裝飾器的意義:更好地解釋類的相關屬性和概

原创 position:fixed怎麼參照祖先元素定位以及transfrom屬性對元素佈局的影響的原理

position:fixed通常情況下是相對於窗口定位的,但是有一種情況,position:fixed是相對於祖先元素定位,而此時的定位層級(z-index)也是相對於祖先元素的。 這種情況就是讓祖先元素髮生變換,也就是transfrom

原创 lerna開發流程(入坑和出坑)

lerna常用api總結: lerna bootstrap 安裝依賴 lerna clean 刪除各個包下的node_modules lerna init 創建新的lerna庫 lerna list 顯示package列表 lerna c

原创 在前端開發中,有哪些因素會導致頁面卡頓

前端開發不像後端那樣,很少出現有大量算法的場景,但是前端性能也是需要優化的。好的代碼是保證網頁平穩高性能運行的基礎,結合以往開發中遇到的場景,本文對前端網頁卡頓的原因進行了梳理和分析,並給出了對應的解決方法。 前端頁面卡頓的原因有很多,從

原创 網頁dom元素過多爲什麼會導致頁面卡頓

在做移動端或者其他無限下拉加載時會遇到不斷插入dom的場景,隨着dom的增多頁面會出現卡頓,遇到這種情況開發者會採取一系列的優化措施,比如複用dom等,那麼到底爲什麼會出現卡頓呢?本文將探討這個疑問。 網頁卡頓時,瀏覽器進程內存佔用很大,