精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

大家都能看得懂的源碼之 Ahooks 整體架構篇

開發 架構
peerDependencies? 的目的是提示宿主環境去安裝滿足插件 peerDependencies? 所指定依賴的包,然后在插件 import? 或者 require? 所依賴的包的時候,永遠都是引用宿主環境統一安裝的 npm 包,最終解決插件與所依賴包不一致的問題。這里的宿主環境一般指的就是我們自己的項目本身了。

本文是深入淺出 ahooks 源碼系列文章的第一篇,這個系列的目標主要有以下幾點:

  • 加深對 React hooks 的理解。
  • 學習如何抽象自定義 hooks。構建屬于自己的 React hooks 工具庫。
  • 培養閱讀學習源碼的習慣,工具庫是一個對源碼閱讀不錯的選擇。

注:本系列對 ahooks 的源碼解析是基于 v3.3.13。自己 folk 了一份源碼,主要是對源碼做了一些解讀,可見 詳情[1]。

第一篇主要介紹 ahooks 的背景以及整體架構。

React hooks utils 庫

自從 React 16.8 版本推出 React hooks,越來越多的項目使用 Function Component。React hooks utils 庫隨即誕生,它主要解決的兩個問題如下:

  • 公共邏輯的抽象。
  • 解決 React hooks 存在的弊端,比如閉包等。

那現在社區有哪些比較優秀的 React Hooks utils 庫呢?

react-use[2] 是社區比較活躍的 React hooks utils 庫,它的 star 數達到了 29.6k。它的功能非常強大,擁有的 hooks 已經 100+。假如你需要功能比較齊全,可以考慮選擇 react-use。

如果不需要非常齊全的功能,只需要一些常見的功能,react-use 可能會稍微冗余了,可以考慮我們今天的主角——ahooks[3],目前它的 star 數為 9.2k,也算是社區比較活躍。

ahooks

簡介

官方介紹如下:

ahooks,發音 [e? h?ks],是一套高質量可靠的 React Hooks 庫。在當前 React 項目研發過程中,一套好用的 React Hooks 庫是必不可少的,希望 ahooks 能成為您的選擇。

特點

它具有如下特點:

  • 易學易用。
  • 支持 SSR。

將訪問 DOM/BOM 的方法放在 useEffect 中(服務端不會執行),避免服務端執行時報錯。

源碼中可以看到很多isBrowser 的判斷,主要是區分開瀏覽器環境和服務器環境。

  • 對輸入輸出函數做了特殊處理,且避免閉包問題。

輸入的函數,永遠都是使用最新的一份。這個是通過 useRef 進行實現。

輸出函數,地址都是不會變化的,這個是通過 useMemoizedFn(ahooks 封裝的)實現的,其實現也是通過 useRef 實現。后面我們會提到。

  • 包含大量提煉自業務的高級 Hooks。
  • 包含豐富的基礎 Hooks。
  • 使用 TypeScript 構建,提供完整的類型定義文件。可以學習一些 TypeScript 的技巧。

hooks 種類

ahooks 基于 UI、SideEffect、LifeCycle、State、DOM 等分類提供了常用的 Hooks。如下所示:

圖片

ahooks 整體架構

項目啟動

我們先從 ahooks 中 folk 一份[4],clone 下來。

yarn run init
yarn start

如果你能成功跑起服務,就會看到和官方文檔一模一樣的頁面。

整體結構

從倉庫的根目錄的 package.json 中可以得到以下信息。

  • 文檔是使用dumi。是一款為組件開發場景而生的文檔工具。
  • 該項目是一個monoRepo。它的項目管理是通過lerna[5]進行管理的。
  • 單元測試是通過 jest 實現。

它的目錄結構中,可以看到 docs 中存放倉庫公共文檔。packages 中存放兩個包,hooks 和 use-url-state。整體的結構跟 dumi 中給出的 lerna 項目的結構相似。其中每個包下面的每個組件都可以書寫對應的文檔,不一樣的是,hooks 中每個組件多了 __tests__ 文件夾,這個是用來寫單元測試的。

圖片

跟 hooks 相似的組織形式

可以用以下一張圖,大致總結一下 ahooks 的工程架構:

圖片

hooks

剛剛也提到,ahooks 是采用了 monoRepo? 的方式,我們的源碼都是在 packages 中,我們來看下 hooks。先看 packages/hooks/package.json?。另外要使用 useUrlState 這個 hook,需要獨立安裝 @ahooksjs/use-url-state?,其源碼在 packages/use-url-state 中。我理解官方的用意應該是這個庫依賴于 react-router,可能有一些項目不需要用到,把它提出來有助于減少包的大小。

npm i @ahooksjs/use-url-state -S

回到 packages/hooks。重點關注一下 dependencies 和 peerDependencies。可以看到其實它內部還是使用了一些其他的工具庫的,比如 lodash(估計是避免重復造輪子,但感覺這樣會導致包會變大)。后面我們也會對這些工具庫做一個探索。

"dependencies": {
"@types/js-cookie": "^2.x.x",
"ahooks-v3-count": "^1.0.0",
"dayjs": "^1.9.1",
"intersection-observer": "^0.12.0",
"js-cookie": "^2.x.x",
"lodash": "^4.17.21",
"resize-observer-polyfill": "^1.5.1",
"screenfull": "^5.0.0"
},
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
},

另外解釋下 peerDependencies。

peerDependencies? 的目的是提示宿主環境去安裝滿足插件 peerDependencies? 所指定依賴的包,然后在插件 import? 或者 require? 所依賴的包的時候,永遠都是引用宿主環境統一安裝的 npm 包,最終解決插件與所依賴包不一致的問題。這里的宿主環境一般指的就是我們自己的項目本身了。

這對于封裝 npm 包非常重要。當你寫的包 a 里面依賴另一個包 b,而這個包 b 是引用這個包 a 的業務的常用的包的時候,建議寫在 peerDependencies 里,避免重復下載/多個版本共存。

總結

作為系列的第一篇,介紹了 React hooks utils 庫的背景以及 ahooks 的特點簡介和整體架構,接下來會探索各個常見的 hooks 方法實現,敬請期待。

參考

ahooks 正式發布:值得擁抱的 React Hooks 工具庫[6]。

參考資料

[1]詳情: https://github.com/GpingFeng/hooks

[2]react-use: https://github.com/streamich/react-use

[3]ahooks: https://ahooks.js.org/zh-CN/guide

[4]一份: https://github.com/GpingFeng/hooks

[5]lerna: https://www.lernajs.cn/

[6]ahooks 正式發布:值得擁抱的 React Hooks 工具庫: https://developer.aliyun.com/article/768059?

責任編輯:武曉燕 來源: 前端雜貨鋪
相關推薦

2022-08-16 21:01:56

runAsyncreload數據

2020-03-17 19:39:50

區塊鏈區塊鏈技術

2024-12-18 18:53:48

2015-12-15 14:08:31

2015-10-10 11:43:19

數據漫畫人才

2022-01-20 08:49:24

OTDR光纖

2020-05-06 09:10:08

機器學習無監督機器學習有監督機器學習

2018-01-08 14:24:32

程序員段子工程師

2023-02-26 08:42:10

源碼demouseEffect

2019-12-25 09:02:48

HTTPSHTTP安全

2018-09-03 11:50:25

編程語言源碼框架

2021-11-18 08:09:40

Python爬蟲Python基礎

2021-01-11 16:19:45

MySQL數據庫服務器

2016-12-19 11:17:48

架構 MVC

2014-06-24 10:24:53

程序員笑話

2020-09-28 14:25:39

HTTPS加密算法

2016-10-24 14:42:19

云計算公有云私有云

2025-03-10 12:06:46

2016-11-25 13:14:50

Flume架構源碼
點贊
收藏

51CTO技術棧公眾號

亚洲日韩中文字幕| 亚洲一区二区三区四区在线观看| 国产大片精品免费永久看nba| 国产真人做爰视频免费| 小说区图片区亚洲| 亚洲国产日韩a在线播放| 久久另类ts人妖一区二区| 在线视频 中文字幕| 狠狠噜噜久久| 这里只有精品在线播放| 佐佐木明希电影| 在线观看v片| 亚洲日本一区二区| 免费在线观看91| 国产视频一区二区三| 午夜在线精品| 欧美高清自拍一区| 国产调教在线观看| 免费观看成人www动漫视频| 欧美天堂一区二区三区| 国产69精品久久久久久久| av在线中文| 成人avav在线| 91视频九色网站| 久久精品五月天| 在线观看亚洲| 久久综合国产精品台湾中文娱乐网| 亚洲图片综合网| 警花av一区二区三区| 91久久精品日日躁夜夜躁欧美| 天天做天天躁天天躁| 色大18成网站www在线观看| 91香蕉国产在线观看软件| 亚洲字幕一区二区| 亚洲视频中文字幕在线观看| 午夜一区在线| 91干在线观看| 久久视频免费在线观看| 欧美日韩精品免费观看视频完整| 色系列之999| 国产成人一区二区在线观看| 婷婷精品视频| 日韩av在线精品| 国产免费一区二区三区最新6| 国产一区2区在线观看| 欧美日韩免费在线视频| 爱情岛论坛成人| 欧美va视频| 91久久线看在观草草青青| 亚洲中文字幕无码专区| 美女高潮视频在线看| 亚洲电影在线免费观看| 97超碰国产精品| 黄色美女视频在线观看| 亚洲综合色成人| www.亚洲成人网| 免费电影网站在线视频观看福利| 一区二区在线观看视频| 国产激情在线看| 亚洲综合影视| 亚洲狠狠爱一区二区三区| 加勒比成人在线| 都市激情国产精品| 欧美日韩在线视频观看| 青青在线视频免费| 成人福利一区二区| 337p亚洲精品色噜噜噜| 中文字幕永久免费| 久久97久久97精品免视看秋霞| 亚洲精品国产电影| 国产熟妇久久777777| 精品国产91| 日韩一区二区精品视频| 日韩一级片在线免费观看| 99久久国产综合精品成人影院| 久久夜精品香蕉| 国产一级视频在线| 午夜亚洲福利在线老司机| 国产成人精品av在线| 11024精品一区二区三区日韩| 国产一区二区三区四| 国产精品成人一区二区三区| 深夜视频在线免费| 国产精品久久久久婷婷二区次| 一区二区在线中文字幕电影视频| 亚洲区欧洲区| 欧美午夜宅男影院在线观看| www.这里只有精品| 午夜久久av| 亚洲女人天堂视频| 开心激情五月网| 亚洲国产精品一区制服丝袜| 国产精品96久久久久久又黄又硬| 国产乱码精品一区二区| 99国产麻豆精品| 亚洲国产高清国产精品| 国产黄色大片在线观看| 欧美伊人精品成人久久综合97 | 最新中文字幕视频| 欧美日韩亚洲在线观看| 欧美国产日韩在线| 黄色av网站免费| 国产a视频精品免费观看| 日本高清一区| 色老头在线观看| 在线观看免费一区| 国产麻豆剧传媒精品国产av| 不卡av一区二区| 久久全球大尺度高清视频| 亚洲自拍第二页| 99re66热这里只有精品3直播 | 久久久久亚洲av成人无码电影| 亚洲视频电影在线| 国产suv精品一区二区| 午夜精品在线播放| 国产精品日日摸夜夜摸av| 999在线观看视频| 成人在线视频www| 亚洲人在线观看| 国产精选第一页| 国精品**一区二区三区在线蜜桃| 久久综合婷婷综合| 爱福利在线视频| 欧美肥胖老妇做爰| 亚洲图片另类小说| 夜夜精品视频| 国产精品视频入口| av免费在线网站| 欧美日韩国产另类不卡| 中国女人特级毛片| 国产精品日本欧美一区二区三区| 91久久精品www人人做人人爽| av网站在线播放| 日韩欧美主播在线| 一本色道综合久久欧美日韩精品 | 欧美18免费视频| 欧美伦理91i| 国产精品无码免费播放| 国产精品嫩草99a| 国产视频一区二区三区在线播放| 日韩高清在线免费观看| 97国产一区二区精品久久呦| 刘亦菲久久免费一区二区| 曰韩精品一区二区| xxx中文字幕| 一区二区中文字| 91久久久久久久久久久| 黄色免费网站在线| 91精品国产综合久久久久久漫画| 欧美日韩综合另类| 天天影视色综合| 亚州综合一区| 欧洲精品久久久| 毛片在线免费| 欧美天堂亚洲电影院在线播放| 国产调教在线观看| 激情欧美日韩一区二区| 国产成年人在线观看| 欧美视频精品全部免费观看| 欧美成人中文字幕| 亚洲免费成人网| 精品久久久久久久久久久久久久 | 国产色91在线| 日本免费观看网站| 欧美激情777| 亚洲a一级视频| 黄色污污视频在线观看| 国产午夜精品麻豆| 波多野结衣在线观看视频| 国产欧美精品在线观看| 成人亚洲免费视频| 亚洲欧洲视频| 热re99久久精品国99热蜜月| 久久99国产精品二区高清软件| 久久精品国产91精品亚洲 | 亚洲欧美国产日韩天堂区| 免费又黄又爽又猛大片午夜| 国产精品成人免费在线| 免费在线观看日韩av| 男人天堂欧美日韩| 亚洲v欧美v另类v综合v日韩v| 欧美久久久网站| 第九色区aⅴ天堂久久香| 欧美大奶子在线| 天天操天天干天天爱| 91传媒视频在线播放| 网站永久看片免费| 成人一级黄色片| 性欧美极品xxxx欧美一区二区| 91国语精品自产拍| 国内视频一区二区| 久久影视精品| 97在线免费观看| 欧美天天影院| 亚洲激情成人网| 91福利在线观看视频| 亚洲高清久久久| 战狼4完整免费观看在线播放版| 成人中文字幕合集| 国产精品涩涩涩视频网站| 欧美片第1页综合| 欧美日韩综合久久| 98视频精品全部国产| 国产精品久久久久久久一区探花| 国产盗摄精品一区二区酒店| 亚洲色图欧美制服丝袜另类第一页| 国产三区在线播放| 欧美系列日韩一区| 激情五月色婷婷| 亚洲免费在线播放| 韩国三级hd中文字幕| 成人动漫在线一区| 亚洲欧美天堂在线| 日韩精品乱码免费| 欧美精品久久久久久久免费| 91精品久久久久久久久久不卡| 免费国产在线精品一区二区三区| 99久久香蕉| 91美女片黄在线观| h1515四虎成人| 欧美做爰性生交视频| 爱情岛论坛亚洲品质自拍视频网站| 久久视频免费观看| av国产在线观看| 亚洲欧美日韩精品久久亚洲区| 国精产品乱码一区一区三区四区| 91精品婷婷国产综合久久竹菊| 免费视频网站在线观看入口| 精品欧美激情精品一区| 久久精品国产亚洲av香蕉| 亚洲精品日韩专区silk| 亚洲精品电影院| 亚洲国产成人在线| 欧美福利第一页| 久久久亚洲精品石原莉奈| 成人手机在线免费视频| aa级大片欧美| 国产伦精品一区二区三区精品| 国产盗摄女厕一区二区三区| 午夜一级免费视频| 精久久久久久久久久久| 女人高潮一级片| 极品少妇xxxx偷拍精品少妇| 超碰人人草人人| 久久激五月天综合精品| 91高清国产视频| 精品在线你懂的| 色婷婷激情视频| 国产一区二区三区不卡在线观看| 激情在线观看视频| 国产高清一区日本| 91成人在线观看喷潮蘑菇| 国产91在线看| 国产在线不卡av| 99精品久久99久久久久| 一本色道综合久久欧美日韩精品 | 日韩和欧美一区二区| 可以在线看的黄色网址| 日韩国产成人精品| 亚洲 激情 在线| 国产酒店精品激情| 性感美女一区二区三区| av影院午夜一区| 欧美特级黄色录像| 国产精品情趣视频| 久久久久久视频| 亚洲va欧美va国产va天堂影院| 日韩欧美亚洲一区二区三区| 一本大道久久a久久综合| 超碰在线免费97| 欧美一区二区三区思思人| 亚洲老妇色熟女老太| 日韩精品在线视频观看| 国产二区在线播放| 久久av红桃一区二区小说| 51漫画成人app入口| 国产大片精品免费永久看nba| 中文字幕综合| 九9re精品视频在线观看re6| 国产乱码精品一区二区亚洲| 在线视频精品一区| 亚洲黄网站黄| 91香蕉视频导航| 国产成人在线视频播放| 欧美亚一区二区三区| 中文字幕中文乱码欧美一区二区 | 色老头久久综合| 国产尤物视频在线观看| 欧美理论电影在线精品| 狠狠干一区二区| 日韩精品免费| 婷婷五月综合缴情在线视频| 美女高潮久久久| 午夜免费福利影院| 中文字幕成人网| 国产精品99re| 91麻豆精品国产91久久久使用方法 | 国产精品一区二区入口九绯色| 中文字幕免费不卡| 国产一级片免费观看| 欧美吞精做爰啪啪高潮| 污视频软件在线观看| 裸体女人亚洲精品一区| 丝袜美腿一区| 国产精品日韩一区二区| 久久久久久久久久久久久久久久久久 | huan性巨大欧美| 日本亚洲精品在线观看| 538任你躁精品视频网免费| 视频二区一区| 国产精品入口| 国产精品19p| 亚洲欧洲精品天堂一级 | 国产乱码在线| 国产综合香蕉五月婷在线| 天天躁日日躁狠狠躁欧美| 欧美黄色免费网址| 国产一区激情在线| 国产精品酒店视频| 一本一本久久a久久精品综合麻豆| 亚洲不卡免费视频| 久久天天躁日日躁| 国产综合色激情| 日日噜噜噜噜夜夜爽亚洲精品| 一本色道久久综合亚洲精品不卡| 中文字幕avav| 《视频一区视频二区| 最近中文字幕免费观看| 亚洲天堂av高清| 成人免费影院| 麻豆蜜桃91| 国产美女诱惑一区二区| 日韩aaaaa| 亚洲.国产.中文慕字在线| 亚洲黄色在线播放| 欧美成人全部免费| 国产精品视频一区二区三区综合| 天堂√在线观看一区二区| 久久久国产精品一区二区中文| 粉嫩av懂色av蜜臀av分享| 亚洲1区2区3区视频| 天堂中文在线官网| 97在线视频免费看| 久9re热视频这里只有精品| 三上悠亚久久精品| 99久久免费精品| 成人毛片18女人毛片| 日韩精品高清在线| 玛雅亚洲电影| 日本一区视频在线播放| 日韩高清在线电影| av资源在线免费观看| 欧美裸体一区二区三区| 黄色成人影院| 99在线热播| av不卡在线| 色一情一交一乱一区二区三区| 欧美色综合影院| 午夜在线视频| 亚洲一区亚洲二区| 亚洲成人原创| 成年人在线观看av| 欧洲人成人精品| 香蕉视频网站在线观看| 亚洲综合在线中文字幕| 91久久久久| 性猛交娇小69hd| 欧美另类高清zo欧美| 怡红院在线播放| 精品国产一区二区三| 日韩黄色小视频| 中文字幕在线有码| 日韩精品免费在线视频| 成人精品一区二区三区电影| 色哟哟免费网站| av亚洲精华国产精华| 日韩不卡高清视频| 萌白酱国产一区二区| 麻豆一区一区三区四区| 一区二区三区 日韩| 一区二区在线观看免费视频播放| 婷婷开心激情网| 国产精自产拍久久久久久| 亚洲特级毛片| 欧美黄色一级生活片| 欧美一级欧美一级在线播放| 天天综合av| 超碰在线免费观看97| 97精品电影院| 国产剧情精品在线| 青青草一区二区| 真实国产乱子伦精品一区二区三区| yy1111111| 6080午夜不卡| 肉色欧美久久久久久久免费看| 黄色网络在线观看| 国产午夜精品美女毛片视频| 国产黄色大片网站| 国产精品久久久久秋霞鲁丝| 国内精品福利|