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

我們忘記了前端基礎知識

開發 前端
最近 Pavel Pogosov 注意到了一些改變他對這個行業看法的事情。似乎在所有無盡的趨勢、范式和新奇中,我們忘記了前端開發的核心。在這篇文章中,Pavel Pogosov 想分享一些最近項目中的代碼片段,并試圖解釋他的想法。

在所有最新的趨勢和無盡的范例中,我們似乎忘記了前端開發的基礎。

最近 Pavel Pogosov 注意到了一些改變他對這個行業看法的事情。似乎在所有無盡的趨勢、范式和新奇中,我們忘記了前端開發的核心。

在這篇文章中,Pavel Pogosov 想分享一些最近項目中的代碼片段,并試圖解釋他的想法。

無盡的過度復雜化

這里有一個最基本的卡片組件,它有一個可選的 header 屬性。如果這個屬性存在,我們會將其渲染在帶有特定類名的 div 中。

const Card = ({ children, header }) => {
  return (
    <div className="card">
      {header && <div className="card__header">{header}</div>}
      {children}
    </div>
  );
};

在簡單的情況下,一切都運作良好。默認情況下,<Card /> 不會渲染 header,而 <Card header={"I am header"} /> 會渲染 header。當 header 的內容是動態的并且可能返回實際內容或 null 時——<Card header={<CardHeader />} />,問題就開始出現了。我們的條件 {header && <div />} 無法檢測到它并會渲染一個空的 div。

一位開發者試圖解決這個問題。他想,“等等,我們可以檢查 div 的內容,如果為空就隱藏它!”他寫了大致這樣的代碼:

const Card = ({ children, header }) => {
  const headerRef = useRef();

  useEffect(() => {
    const hasContent = headerRef.current?.childNodes.length > 0;
    headerRef.current.style.display = hasContent ? "block" : "none";
  });

  return (
    <div className="card">
      {header && (
        <div ref={headerRef} className="card__header">
          {header}
        </div>
      )}
      {children}
    </div>
  );
};

另一個人在代碼審查中注意到,這段代碼僅在初次渲染時有效。如果是異步更新的,useEffect 不會被調用。經過長時間的討論,開發者們決定將注意力轉向 MutationObserver。

在他們討論期間,他們也向 Pavel Pogosov 尋求建議。老實說,向他們展示 Pavel Pogosov 的解決方案真的很有趣)只需要使用常規的 CSS 就能解決這個問題。

.card__header:empty {
  display: none;
}

開發者們已經習慣了過度復雜化任務,以至于他們甚至沒有檢查 CSS 的基本功能。

1993年的錯誤

在 Pavel Pogosov 之前的項目中,他們有一個側面板小部件,它必須拉伸到其全高,但不能覆蓋 header 和 footer。大致的公式如下:100% - headerHeight - footerHeight。

這個解決方案在所有頁面上都運行順暢,除了一個。在那個頁面上,footerHeight 不知何故等于 0。遇到這個錯誤的開發者深入挖掘并理解到 document.querySelector('footer') 返回 null,但 footer 仍然在頁面上渲染。你猜他做了什么?是的,他又使用了 MutationObserver。

這對 Pavel Pogosov 來說看起來很奇怪,所以他決定尋找一個替代解決方案。Pavel Pogosov 確實找到了。所有他需要做的只是交換幾行代碼……

<html>
<head></head>
<body>
  <header></header>
  <main id="root"></main>
  <script src="index.js"></script>
  <footer></footer>
</body>
</html>

不知怎么的,<script /> 出現在 footer 之前。<script /> 是同步調用的,而此時 footer 尚不存在,因此無法測量其高度。

Pavel Pogosov 只是交換了這些行,一切就開始正常工作了。

如今的開發者非常依賴現代工具,如 webpack 插件等。所以當涉及到編寫一些 HTML 時,他們立刻就放棄了。但這有什么難的嗎?

萬惡之源

React hooks 同時是 React 中最好的也是最糟的東西。一方面,它們增加了靈活性,并提供了一種優雅的方式來處理狀態。另一方面,它們顯著增加了代碼的復雜性,并使得更容易出錯。

仔細閱讀文檔并理解如何正確使用這些東西似乎并不難。然而,有些開發者忽略了這個顯而易見的步驟,開始在沒有完全理解其用途的情況下使用 hooks。特別是當涉及到優化和臭名昭著的 useMemo 和 useCallback 時。現在,每個開發者都在沒有明確理由的情況下優化整個應用程序。

讓我們一起來看看這個“至關重要”的優化。這不是 Pavel Pogosov 為這篇文章寫的虛構代碼。這實際上是他某個項目中的一個片段。

const loaded = useMemo(() => {
    return submitted && !loading && !error;
  }, [submitted, error, loading]);
}

在這個優化之后,應用程序的性能就“飆升”了!你可以理解,這完全沒有用,甚至稍微影響了應用程序的首次加載。老實說,我仍然不明白編寫這個代碼的真正意圖。

接受事情是理所當然的,不去考慮其他問題總是更容易。但實際上,自己做一點研究并不是真的那么難。

一些重要的建議

這種情況看起來確實令人擔憂。開發者開始忘記基礎技術,并且在所有新技術和方法中傾向于失去批判性思維。

然而,在 Pavel Pogosov 看來,這并不是一個難以解決的問題。總結以上內容:

  • 花些時間理解原生 JavaScript。擁有堅實的基礎可以更輕松地發現錯誤的真正原因并相應地修復它們。
  • 深入學習 HTML 和 CSS。你可以發現很多有用的屬性、選擇器和其他內容,這些可以替代大量的 JavaScript 代碼。回想一下使用 :empty 選擇器的例子。
  • 發展你的批判性思維能力。當然,你的團隊領導教了你一些好的實踐和原則。但是,你不能盲目地遵循它們,因為這會讓你走向錯誤的方向。相反,試著理解為什么某件事是這樣的而不是那樣的。
  • 記住 SOLID、YAGNI、KISS 和其他原則。如果簡單的任務變成了一個充滿困惑的解決方案的噩夢——停下來,從不同的角度重新思考它。可能你在某個解決方案上挖得太深而忘記了一些顯而易見的東西。
責任編輯:姜華 來源: 大遷世界
相關推薦

2021-03-01 08:03:16

前端開發技術熱點

2021-03-02 07:51:17

前端開發技術熱點

2021-03-03 08:04:44

前端開發技術熱點

2021-04-01 13:44:50

開發前端Web

2014-08-20 10:15:45

2011-09-16 10:13:02

Emacs

2011-03-29 14:11:20

Cacti基礎知識

2009-04-10 09:35:00

WCDMA基礎無線網絡

2023-07-04 07:31:06

MapReduce數據處理編程模型

2010-07-16 11:22:31

Perl

2010-07-16 10:53:30

Perl基礎

2009-04-17 14:22:40

XPathXML基礎

2009-09-23 11:07:11

Hibernate基礎

2015-06-01 13:35:43

數據中心DCIM

2018-08-30 11:11:32

前端程序員基礎知識

2021-11-05 15:31:01

UbuntuLinux

2010-04-20 08:56:53

2018-10-31 14:44:13

VLANN基礎知識

2009-06-25 15:24:25

Java基礎知識

2020-10-22 08:28:04

大數據架構技術
點贊
收藏

51CTO技術棧公眾號

欧美日韩国产区一| 久久精品国产精品亚洲综合| 日韩欧美国产精品| 欧美日韩在线一区二区三区| 久久久99精品| 成人直播在线观看| 欧美日韩美女在线观看| 久热这里只精品99re8久| 欧美贵妇videos办公室| 午夜久久久精品| 免费一级在线观看| 国产视频久久| 亚洲性视频网址| 中文字幕天天干| 日本美女高清在线观看免费| 国产一区二区网址| 国模吧一区二区三区| 日本黄色片在线播放| 日韩三级影视| 亚洲日本丝袜连裤袜办公室| 不卡一区二区三区四区五区| 欧美一区二区三区四| 久久99国产精一区二区三区| 91久久精品国产91性色tv | 国产成人麻豆免费观看| 色男人天堂综合再现| 欧美一区二区观看视频| 男人和女人啪啪网站| 婷婷五月在线视频| 9l国产精品久久久久麻豆| 国产精品偷伦一区二区| 久久久久久久国产精品毛片| 美日韩中文字幕| 日韩欧美国产三级| 蜜臀av免费观看| sis001亚洲原创区| 中文字幕在线观看一区二区| 精品不卡在线| 国产视频一区二区三| 久久青草久久| 欧美激情视频给我| 极品蜜桃臀肥臀-x88av| 日韩成人视屏| 欧美图区在线视频| 成年人午夜视频在线观看| 91福利在线视频| av成人免费在线观看| 成人在线播放av| 波多野结衣视频免费观看| 狠狠爱www人成狠狠爱综合网| 在线观看亚洲区| 免费看黄色aaaaaa 片| 玖玖玖视频精品| 欧美在线观看一区二区| 国产免费毛卡片| sm在线观看| 亚洲久本草在线中文字幕| 欧美日韩在线一区二区三区| 色网站免费观看| 国产激情一区二区三区桃花岛亚洲| 国产精品黄视频| 一级片视频在线观看| 激情欧美日韩| 欧美国产日韩免费| www.av视频| 亚洲xxx拳头交| 俺去亚洲欧洲欧美日韩| 蜜桃久久精品成人无码av| 欧美人妖在线观看| 亚洲精品一区二区三区四区高清 | www免费网站在线观看| 成人动漫一区二区三区| 3d动漫啪啪精品一区二区免费| 中文在线免费观看| 奇米精品一区二区三区四区| 日韩av免费一区| 中文字幕在线看人| 可以看av的网站久久看| 日韩av手机在线| 免费又黄又爽又猛大片午夜| 天堂久久久久va久久久久| 日本乱人伦a精品| 国偷自拍第113页| 在线综合欧美| 热久久免费国产视频| 免费看一级视频| 日韩高清一区在线| 国产精品日日做人人爱| 91欧美日韩麻豆精品| 久久99久久久久| 91久久国产精品| 国产av一区二区三区| 国产成人精品免费视频网站| 91在线国产电影| 高清一区二区三区四区| 成人一区二区三区在线观看 | 国产图片一区| 日韩激情在线视频| 夫妇交换中文字幕| 最新欧美人z0oozo0| 欧美激情精品久久久久久变态 | 色综合久久中文| 亚洲欧美日韩精品久久| 欧洲性xxxx| 欧美欧美天天天天操| 97精品欧美一区二区三区| 成年人视频在线免费看| 美女www一区二区| 7777奇米亚洲综合久久| 午夜小视频在线播放| 欧美激情综合在线| 国产精品啪啪啪视频| 国产色播av在线| 欧洲在线/亚洲| 久国产精品视频| 免费看一区二区三区| 精品一区二区三区三区| 国产精品夜夜夜爽阿娇| 一区精品久久| 国产精品综合不卡av| 精品人妻无码一区二区色欲产成人 | 艳妇乳肉亭妇荡乳av| 国产日产精品_国产精品毛片| www.午夜精品| 三级全黄做爰视频| 欧美日韩免费| 国产精品嫩草视频| 女人18毛片一区二区三区| 国产日韩三级在线| 欧美极品少妇无套实战| 欧美xxxxxx| 欧美成人精品3d动漫h| jizz18女人高潮| 亚洲大片在线| 亚洲www视频| 国产精品一区二区三区四区色| 亚洲男人电影天堂| 日本999视频| 精品人人人人| 久久手机精品视频| 久久不卡免费视频| 国产电影一区在线| 懂色av一区二区三区四区五区| 自拍视频在线看| 精品国产一区二区精华| 免费黄色激情视频| 日本强好片久久久久久aaa| 国产一区自拍视频| 成人三级网址| 欧美日韩国产色站一区二区三区| 国产交换配乱淫视频免费| 精品91视频| 97超级在线观看免费高清完整版电视剧| 狠狠狠综合7777久夜色撩人| 天天综合色天天综合色h| 女人扒开腿免费视频app| 国产精品99久久久久久动医院| 欧洲美女7788成人免费视频| 成人午夜免费在线观看| 亚洲精品一卡二卡| 精品国产鲁一鲁一区二区三区| 精品产国自在拍| 日韩免费观看视频| 日本a一级在线免费播放| 亚洲国产乱码最新视频| 亚洲美女性囗交| 成人一区二区| 国产精品久久久久7777婷婷| 欧美色18zzzzxxxxx| 黑人巨大精品欧美一区二区免费| 色哟哟视频在线| 亚洲一级一区| 国产精品入口免费| av中文字幕在线观看第一页| 精品国产乱码久久久久久浪潮| 一级片一级片一级片| 狠狠色狠狠色综合| 艳母动漫在线观看| 亚洲图色一区二区三区| 久久免费少妇高潮久久精品99| 成人免费公开视频| 午夜视频一区在线观看| 国产精品嫩草av| 久久综合图片| 日韩人妻精品一区二区三区| 亚洲精品福利| 2019精品视频| 熟妇高潮一区二区三区| 亚洲成av人在线观看| yy6080午夜| 视频一区二区三区入口| 一区在线电影| 大桥未久女教师av一区二区| 午夜剧场成人观在线视频免费观看| 亚州男人的天堂| 色综合天天综合色综合av | 特级西西444www大精品视频免费看| 91在线云播放| 日本美女高潮视频| 91久久国产| 国产精品对白一区二区三区| av中文字幕在线观看第一页| 国产亚洲精品va在线观看| 亚洲一区二区激情| 一级日本不卡的影视| 日批免费观看视频| 丝袜美腿高跟呻吟高潮一区| 欧美日韩在线免费观看视频| 国产成人福利av| 国产国语videosex另类| av免费网站在线| 日韩av中文字幕在线免费观看 | 色开心亚洲综合| 亚洲第一网站免费视频| 亚洲精品久久久久久久蜜桃| 国产精品污网站| 97人妻精品一区二区三区免费 | 免费黄色一级网站| 欧美一区亚洲| 日韩偷拍一区二区| 北条麻妃在线一区二区免费播放 | 日本三级在线观看网站| 国产午夜精品久久久| 亚洲精品无码久久久久| 亚洲综合男人的天堂| 亚洲码无人客一区二区三区| 国产精品一区二区久激情瑜伽| 日本三区在线观看| 亚洲午夜伦理| 在线观看一区二区三区三州 | 91精品国产综合久久福利 | 成人系列视频| 国产精品美女黄网| 精品国产乱码久久久久久樱花| 日韩免费在线看| 91av久久| 久久99精品视频一区97| 自拍视频在线网| 亚洲欧美中文日韩在线| 精品久久久久久亚洲综合网站| 欧美综合亚洲图片综合区| 日韩伦人妻无码| 一级中文字幕一区二区| 久久人妻无码aⅴ毛片a片app| 久久九九99视频| 亚洲色图14p| 黑人巨大精品欧美黑白配亚洲| 免费看日本毛片| 伊人久久大香线蕉综合热线| 少妇熟女一区二区| 欧美丝袜丝交足nylons172| 久久久久九九九| 黄色欧美在线| 国产一区二区中文字幕免费看| 国产精品1区在线| 91精品久久久久久久久| 国产成+人+综合+亚洲欧美| 国产成人精品一区二区在线| 黑森林国产精品av| 97碰在线观看| gogo高清午夜人体在线| 久热精品视频在线| 浮生影视网在线观看免费| 亚洲欧美日韩国产成人| 色综合久久网女同蕾丝边| 亚洲激情自拍图| 黑人精品一区二区| 精品国产不卡一区二区三区| 精品黑人一区二区三区在线观看| 日韩色视频在线观看| 精品国产黄色片| 日韩欧美中文字幕公布| 精品国产一级片| 欧美一区二区性放荡片| aa视频在线免费观看| 欧美一区二区三区视频在线观看| 国产剧情久久久| 欧美mv日韩mv国产| 三级在线观看网站| 亚洲精品一区二区三区婷婷月| 天堂av一区二区三区| 日韩国产在线播放| 国产三级电影在线| 日韩在线欧美在线| 成人国产免费电影| 欧美国产高跟鞋裸体秀xxxhd| 在线h片观看| 久久久爽爽爽美女图片| 漫画在线观看av| 国产精品户外野外| 久久久久久爱| 久久久久欧美| 神马日本精品| 亚洲综合网中心| 欧美日韩调教| 妞干网在线免费视频| 日韩电影免费在线| 捷克做爰xxxⅹ性视频| 成人av在线资源网站| 人妻体内射精一区二区三区| 久久综合久久综合久久综合| 萌白酱视频在线| 亚洲国产综合人成综合网站| 欧美国产成人精品一区二区三区| 色综合色狠狠综合色| 国产免费一区二区三区最新不卡| 亚洲国产福利在线| av大片在线看| 韩国欧美亚洲国产| 成人在线二区| 99久久亚洲精品蜜臀| 日韩电视剧免费观看网站| 欧美一级特黄aaaaaa| 日韩毛片在线看| 黄网站app在线观看| 91精品国产91久久久久久久久| 国产一二在线播放| 成人免费黄色网| 日韩大胆成人| 资源网第一页久久久| 亚洲美女少妇无套啪啪呻吟| 亚洲女人在线观看| 中文字幕欧美三区| 久久久成人免费视频| 欧美tickling网站挠脚心| 免费在线你懂的| 国产精品欧美激情在线播放| 欧美美女在线直播| 青春草国产视频| 国产xxx精品视频大全| 三上悠亚在线观看视频| 欧美性猛交xxxxxx富婆| 日本天堂影院在线视频| 97精品欧美一区二区三区| 91精品尤物| 欧美国产综合在线| 国产一区二区三区蝌蚪| 免费成人美女女在线观看| 欧美三级欧美一级| 二区三区在线| 国产精品成人一区二区| 九九免费精品视频在线观看| 北条麻妃69av| 91片黄在线观看| 久久久久久久久影院| 亚洲精品电影在线| 麻豆国产在线| 久久青青草综合| 男人天堂欧美日韩| 91成人在线免费视频| 91久久精品一区二区| 福利小视频在线观看| 国产精品久久久久久网站| 精品产国自在拍| 在线观看免费视频高清游戏推荐| 国产欧美日韩三级| 在线观看国产一区二区三区| 精品精品国产国产自在线| 精品国模一区二区三区欧美 | 日本成人免费在线| 自拍偷拍欧美一区| 丝袜制服一区二区三区| 国产精品麻豆视频| av手机免费看| 海角国产乱辈乱精品视频| 欧美激情99| 国产一级不卡毛片| 国产精品丝袜一区| 国产色综合视频| 国产69精品久久久久9999| 久久91麻豆精品一区| 日本一二区免费| 亚洲一区二区不卡免费| 日本成人一区二区三区| 国产精品一区二区女厕厕| 综合激情视频| 国产不卡一二三| 在线观看成人小视频| av免费在线观| 免费国产一区| 国产一区二区在线看| 国产毛片aaa| 日韩在线视频播放| 成人av地址| www日韩在线观看| 亚洲精品水蜜桃| 日韩私人影院| 91麻豆桃色免费看| 亚洲深夜影院| 中文字幕五月天| 亚洲美女av在线播放| 4438五月综合| 欧美v在线观看| 亚洲精品一二三四区| 激情小视频在线观看| 高清国产在线一区| 日韩国产欧美视频| 日韩av一二三区| 久久亚洲成人精品| 欧美美乳视频|