原创 React-Router API 參考

<Link> // 默認會被渲染成一個 `<a>` 標籤 <Link to="/about">About</Link> 類似Vue Router<router-link to="/about">about</router-lin

原创 我是如何發佈第一個npm包

這篇文章主要介紹如何發佈一個npm包,這個過程並不複雜,學完之後你可以發佈任何你喜歡的代碼到npm網站上,之後你可以使用npm命令安裝在其他項目中。 發佈到npm網站之前,你必須在npm網站上創建一個你自己的賬號,這是網站的網址:

原创 基於 props 更新 state

單向數據流 所有的 prop 都使得其父子 prop 之間形成了一個單向下行綁定:父級 prop 的更新會向下流動到子組件中,但是反過來則不行。這樣會防止從子組件意外改變父級組件的狀態,從而導致你的應用的數據流向難以理解。 額外的

原创 編寫React Hooks的5個建議

這篇文章中的技巧和方法是我個人的喜好,僅供參考。 effect的函數的名字 如果一個組件中多個effect,傳入的函數都沒有名字,這樣不好區分 const MyComp = () => { useEffect(() => {

原创 React Typescript 語法

Children Events Styles Refs Children interface Props { children?: React.ReactNode } Events interface Props {

原创 Ajax和fetch和axios區別

面試官在問了一些常見的技術後 總會問各種原理,比如 ajax 原理 http原理 mvvm原理等。 像這些原理,範圍很廣,知識面很多,回答這些問題真的不好回答。 但是我們可以把原理拆分成個個小的知識點,然後分別作答。回答流程如下:

原创 HTTP資源壓縮

減少文件大小有兩個明顯的好處,一是可以減少存儲空間,二是通過網絡傳輸文件時,可以減少傳輸的時間。gzip 是在 Linux 系統中經常使用的一個對文件進行壓縮和解壓縮的命令,既方便又好用。今天具體講解以下知識點: 1、與壓縮有關的

原创 實現合成事件

react的合成事件是如何實現的呢?他們都是把事件綁定到了document,下面簡單模仿一下: <div> <ul id="app"> <li class="childClassname">11</li>

原创 前端開發體系建設

DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。 一套簡易的DevOps流程包括協作,構建

原创 微任務什麼時候執行

什麼時候進入檢查點,清空微任務,當前調用棧清空的時候 例子1 <body> <button id="btn"> 點擊 </button> <script> let btn = document.g

原创 插入排序(優化技巧)

插入排序的基本寫法如下: function insertSort(arr) { for (let i = 1; i < arr.length; i++) { let key = arr[i] let j = i

原创 冒泡排序(優化技巧)

先寫一個交換位置的方法,以後會用到: function swap(a, b, arr) { let temp = arr[a] arr[a] = arr[b] arr[b] = temp

原创 徹底理解js是單線程的

JS執行是單線程 單線程是指Js引擎執行Js時只分了一個線程給他執行,也就是執行js時是單線程的。 那麼問題來了,什麼是線程?進程又是什麼? 在分析瀏覽器的渲染過程之前,我們先了解一下什麼是進程和線程: (1)什麼是進程? 進

原创 margin: auto;居中

有時候,要實現一些元素水平垂直都居中,這部分元素呢 可能大小未知,例如一些圖片或者是一些未知大小的塊元素。 利用絕對定位可以將要居中的元素脫離文檔流. position: absolute; left:0px; right:

原创 單線程無法充分利用多核CPU

Node在選型時決定在V8引擎之上構建,也就意味着它的模型與瀏覽器類似。我們的JavaScript將會運行在單個進程的單個線程上。它帶來的好處是:程序狀態是單一的,在沒有多線程的情況下沒有鎖、線程同步問題,操作系統在調度時也因爲較