日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

我們忘記了前端基礎知識

來源: 責編: 時間:2024-05-22 17:14:45 231觀看
導讀在所有最新的趨勢和無盡的范例中,我們似乎忘記了前端開發的基礎。最近 Pavel Pogosov 注意到了一些改變他對這個行業看法的事情。似乎在所有無盡的趨勢、范式和新奇中,我們忘記了前端開發的核心。在這篇文章中,Pavel Pog

0OK28資訊網——每日最新資訊28at.com

在所有最新的趨勢和無盡的范例中,我們似乎忘記了前端開發的基礎。0OK28資訊網——每日最新資訊28at.com

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

在這篇文章中,Pavel Pogosov 想分享一些最近項目中的代碼片段,并試圖解釋他的想法。0OK28資訊網——每日最新資訊28at.com

無盡的過度復雜化

這里有一個最基本的卡片組件,它有一個可選的 header 屬性。如果這個屬性存在,我們會將其渲染在帶有特定類名的 div 中。0OK28資訊網——每日最新資訊28at.com

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。0OK28資訊網——每日最新資訊28at.com

一位開發者試圖解決這個問題。他想,“等等,我們可以檢查 div 的內容,如果為空就隱藏它!”他寫了大致這樣的代碼:0OK28資訊網——每日最新資訊28at.com

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。0OK28資訊網——每日最新資訊28at.com

在他們討論期間,他們也向 Pavel Pogosov 尋求建議。老實說,向他們展示 Pavel Pogosov 的解決方案真的很有趣)只需要使用常規的 CSS 就能解決這個問題。0OK28資訊網——每日最新資訊28at.com

.card__header:empty {  display: none;}

開發者們已經習慣了過度復雜化任務,以至于他們甚至沒有檢查 CSS 的基本功能。0OK28資訊網——每日最新資訊28at.com

1993年的錯誤

在 Pavel Pogosov 之前的項目中,他們有一個側面板小部件,它必須拉伸到其全高,但不能覆蓋 header 和 footer。大致的公式如下:100% - headerHeight - footerHeight。0OK28資訊網——每日最新資訊28at.com

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

這對 Pavel Pogosov 來說看起來很奇怪,所以他決定尋找一個替代解決方案。Pavel Pogosov 確實找到了。所有他需要做的只是交換幾行代碼……0OK28資訊網——每日最新資訊28at.com

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

不知怎么的,<script /> 出現在 footer 之前。<script /> 是同步調用的,而此時 footer 尚不存在,因此無法測量其高度。0OK28資訊網——每日最新資訊28at.com

Pavel Pogosov 只是交換了這些行,一切就開始正常工作了。0OK28資訊網——每日最新資訊28at.com

如今的開發者非常依賴現代工具,如 webpack 插件等。所以當涉及到編寫一些 HTML 時,他們立刻就放棄了。但這有什么難的嗎?0OK28資訊網——每日最新資訊28at.com

萬惡之源

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

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

讓我們一起來看看這個“至關重要”的優化。這不是 Pavel Pogosov 為這篇文章寫的虛構代碼。這實際上是他某個項目中的一個片段。0OK28資訊網——每日最新資訊28at.com

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

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

接受事情是理所當然的,不去考慮其他問題總是更容易。但實際上,自己做一點研究并不是真的那么難。0OK28資訊網——每日最新資訊28at.com

一些重要的建議

這種情況看起來確實令人擔憂。開發者開始忘記基礎技術,并且在所有新技術和方法中傾向于失去批判性思維。0OK28資訊網——每日最新資訊28at.com

然而,在 Pavel Pogosov 看來,這并不是一個難以解決的問題。總結以上內容:0OK28資訊網——每日最新資訊28at.com

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

本文鏈接:http://m.www897cc.com/showinfo-26-90042-0.html我們忘記了前端基礎知識

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: ViewRootImpl如何負責管理繪制視圖樹和刷新界面

下一篇: 使用 Argo CD 探索 GitOps,你學會了嗎?

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
国产亚洲成av人在线观看导航 | 国内成人在线| 国产精品日韩欧美综合| 国产精品区一区二区三区| 国内精品国语自产拍在线观看| 亚洲大胆人体在线| 99视频一区二区三区| 午夜精品视频| 女人香蕉久久**毛片精品| 欧美视频官网| 黄网动漫久久久| 99在线热播精品免费| 欧美在线欧美在线| 牛夜精品久久久久久久99黑人| 欧美三级免费| 合欧美一区二区三区| 一区二区高清视频| 久久久久亚洲综合| 欧美日韩国产一中文字不卡| 国产免费亚洲高清| 亚洲日本中文| 欧美一区日韩一区| 欧美精品免费在线观看| 国产偷久久久精品专区| 99国产精品久久久久久久久久| 欧美一区二区视频在线| 欧美激情中文字幕在线| 国产亚洲精品一区二555| 亚洲免费观看高清完整版在线观看熊| 欧美亚洲在线观看| 欧美日韩少妇| 在线日韩欧美| 欧美一区二区高清在线观看| 欧美高清日韩| 很黄很黄激情成人| 亚洲免费视频观看| 欧美日本亚洲韩国国产| 精品va天堂亚洲国产| 亚洲综合日韩在线| 欧美巨乳波霸| 在线日韩av片| 久久国产精品高清| 国产精品福利久久久| 1024国产精品| 久久国产婷婷国产香蕉| 国产精品毛片| 中国成人亚色综合网站| 欧美大片一区二区三区| 黑人一区二区三区四区五区| 亚洲女同在线| 欧美日韩一区二区三| 亚洲国产婷婷| 老牛国产精品一区的观看方式| 国产日韩在线不卡| 亚洲视频国产视频| 欧美日韩国产色视频| 亚洲国语精品自产拍在线观看| 久久精品国产91精品亚洲| 国产精品日本精品| 中文成人激情娱乐网| 欧美精品久久久久久久久老牛影院 | 欧美日韩国产精品一区二区亚洲| 激情欧美亚洲| 久久精品国产综合精品| 国产精品一区二区三区久久久| 亚洲视频中文| 欧美日韩另类字幕中文| 亚洲精品日本| 欧美精品电影在线| 亚洲欧洲日本一区二区三区| 麻豆成人在线播放| 在线日韩av永久免费观看| 久久免费精品视频| 国内外成人在线| 久久久av网站| 精品二区视频| 久久综合国产精品| 影音先锋国产精品| 麻豆国产精品va在线观看不卡| 激情成人av| 看片网站欧美日韩| 亚洲高清免费视频| 老鸭窝91久久精品色噜噜导演| 尤物视频一区二区| 美女成人午夜| 亚洲精品一区二区三区av| 欧美刺激性大交免费视频| 亚洲黄色成人| 欧美精品一区三区在线观看| 日韩视频在线播放| 欧美午夜寂寞影院| 亚洲尤物在线| 国产日韩视频| 久久精品国产亚洲aⅴ| 黄色一区二区三区| 欧美sm重口味系列视频在线观看| 亚洲国产高清一区| 欧美久久精品午夜青青大伊人| 99re热这里只有精品视频| 欧美日韩一区二区视频在线| 亚洲婷婷综合色高清在线| 国产精品九色蝌蚪自拍| 欧美一区二区免费观在线| 狠狠噜噜久久| 欧美精品成人91久久久久久久| 中国成人黄色视屏| 国产婷婷成人久久av免费高清| 久久久xxx| 最近看过的日韩成人| 欧美视频免费| 午夜免费日韩视频| 在线观看视频日韩| 欧美日本视频在线| 午夜精品久久久久久久99水蜜桃| 国内久久婷婷综合| 欧美电影免费观看高清完整版| 一区二区免费在线播放| 国产精品一区二区三区免费观看| 久久精品国内一区二区三区| 亚洲国产精品t66y| 国产精品海角社区在线观看| 久久精品国产91精品亚洲| 亚洲人午夜精品| 国产精品日韩一区二区三区| 久久免费精品视频| 中日韩视频在线观看| 国产一区二区欧美日韩| 欧美福利视频在线| 亚洲欧美在线观看| 亚洲黄色天堂| 国产精品日本| 欧美大片免费看| 午夜精品短视频| 亚洲人成网站999久久久综合| 国产精品美腿一区在线看| 久久一区精品| 亚洲综合三区| 亚洲人成网站精品片在线观看| 国产精品手机视频| 欧美精品国产一区| 久久久久久免费| 亚洲一级免费视频| 亚洲黄色一区| 国产欧美日本一区二区三区| 欧美精品情趣视频| 久久国产精品久久久久久| 99精品免费视频| 一区二区视频免费完整版观看| 欧美特黄一级大片| 蜜桃av一区| 午夜电影亚洲| 亚洲美女色禁图| 极品尤物久久久av免费看| 国产精品日韩久久久久| 欧美成人国产一区二区 | 欧美大色视频| 欧美在线关看| 亚洲网站在线| 亚洲精品韩国| 精品不卡在线| 国产日韩精品一区二区三区| 欧美精选一区| 蜜桃av一区二区三区| 欧美一区二区三区日韩| 一区二区免费在线观看| 亚洲福利在线视频| 国产亚洲午夜高清国产拍精品| 国产精品v欧美精品v日韩| 欧美激情免费在线| 噜噜噜在线观看免费视频日韩| 欧美在线一二三四区| 一区二区三区精品国产| 亚洲激情网站| 在线观看成人一级片| 国产亚洲一区精品| 国产精品永久入口久久久| 欧美日韩情趣电影| 欧美看片网站| 欧美成人日本| 免费亚洲一区二区| 久久综合伊人77777| 久久久精品一区| 欧美综合二区| 欧美在线观看视频一区二区三区| 亚洲一二三级电影| 亚洲神马久久| 一区二区激情视频| 一区二区欧美日韩视频| 99精品视频免费观看视频| 亚洲欧洲日韩综合二区| 亚洲国产99精品国自产| 在线观看91精品国产麻豆| 狠狠色狠狠色综合日日小说| 国产一区二区三区四区在线观看| 国产伦精品一区| 国产欧美日韩免费| 国产欧美日韩视频在线观看| 国产精品国产精品| 国产精品久久久久一区二区三区 | 欧美三级电影一区| 欧美日韩三区| 欧美日精品一区视频| 欧美性色综合| 欧美性开放视频|