原创 CSS動畫屬性/重繪重排組合層/GPU加速 渲染優化相關及聯繫

1、現代瀏覽器,比如chrome,firefox都支持硬件加速,GPU加速功能,開啓後,使用相關CSS屬性,3D API,canvas等,都會默認用GPU渲染的方式去繪製圖像。 瀏覽器渲染的過程,網上圖片雜且準確性出處都有待考究,

原创 React Hooks的999999個好處

最近前幾個月開始,新項目都開始完全使用typescript+hooks,先不說typescript吧,hooks是真的香🤣 1.更好的分離頁面和邏輯,重用邏輯的方法 現在前端項目的組件化,一般都是基於最基礎的UI組件庫(裏面也有組

原创 react-spring介紹(翻譯)

原文:https://alligator.io/react/intro-to-react-spring/ 在本文中,我們將探索React的最佳動畫框架之一:React Spring。 您將學習將組件樣式更改爲平滑的,基於物理的過

原创 webpack中的hash、chunkhash和contenthash

這三個hash值都是webpack在打包的時候根據內部算法生成的一串字符串,總的來說最大的不同就是其囊括控制的範圍大小不同,對應的控制顆粒度不同。 hash hash是對webpack整個一次構建而言,在webpack構建中,文件

原创 Typescript中的對象多可能類型推導的解決辦法

我們在渲染複雜對象,比如樹組件的樹對象,有嵌套對象/數組結構的時候,js的弱類型讓我們一把梭,幾乎沒遇到什麼問題(只是寫的時候編譯沒問題把。233。。),結合TS後,對樹狀數據的遞歸訪問會是一個問題: 比如數據源的數據聲明爲: e

原创 ES Module,commonjs和Typescript模塊系統

首先es和cmj大家都知道不一樣,具體區別也就不多說,需要注意的是TS的模塊也是自己實現的,不過在ES Module 2015(es6)定稿下來後,TS沿用和支持了ES module,不過TS除了使用ES module的規範,自己

原创 一道promise的小題目(Promise異步流程控制)

用Promise控制異步流程,三個異步任務,時間可能有先後,但是要按照想要的順序輸出。 我這裏用四種方法解決,其實也就是考察你對Promise的理解,基礎題了。 //實現mergePromise函數,把傳進去的數組順序先後執行,

原创 最近遇到的兩個有意思的問題(合併K個有序數組,打印省區市所有與目標市名字相同的路徑)

最近遇到的幾個有意思問題,記錄分享一下。 1. 合併三個有序數組(合併K個有序數組) 假如有這麼三個數組:(arr包含的三個數組) let arr = [ [1, 3, 5, 7], [2, 4, 6], [0, 8,

原创 無限滾動&懶加載&元素位置 etc....

最近遇到了無限滾動的問題,用到了IntersectionObserver API,這裏正好就將相關知識梳理整理一下。 前置概念知識 scrollHeight:容器元素被撐起後的實際大小高度 scrollTop:容器元素的滾動距離

原创 用Three.js繪製一個3D天體系統

年前就一直研究了下WebGL相關的東西,看了很多資料和文檔,這裏做了一些小實踐,記錄分享一下。 代碼:鏈接 預覽:鏈接 demo: 前置知識 WebGL和Threejs的關係: WebGL是一種 3D 繪圖協議,這種繪圖技術標準

原创 JS中原型對象中的constructor的作用?

最近被同事問道一個問題: function Father() { this.color = ['red', 'green']; } function Child() { this.test = 1; }

原创 再看JS的函數和閉包

最近遇到React Hook的過時閉包問題,重溫了下紅寶書,這裏整理之前積累的一些基礎。 1. 函數聲明和函數表達式 函數聲明: function say(){ xxxx } 函數表達式: 賦值變量的方式可以使用匿名函數(la

原创 React和Vue對比

主要從以下方面對比: 1. 團隊熟悉程度,學習成本 目前前端小組其實都是大部分在寫業務代碼,都有紮實的javascript基礎和社區基礎,上手二者的哪個都沒太大成本區別。對於個人來說,無論轉型深入哪個,都是不錯的。所以這一點學習成

原创 Object.create()探索

最近在看框架源碼的時候,發現作者(或者Contributors)創建對象的時候,或者做繼承的時候,都喜歡用到Object.create()。 首先MDN上對這個方法介紹的很清楚了, Object.create(proto[, p

原创 React優化總結2

1.函數組件使用memo 當父組件給子組件傳遞了props的時候,如果在父組件沒有加判斷子組件條件性渲染,eg: {isShowChild&& },每次父組件執行render,子組件(函數)都會重新渲染(執行),這時候如果是在子組