大約 15 年前,我在一家公司工作,我們為旅行社、機場工作人員和航空公司開發應用程式。我們也為 UI 元件和單頁應用程式功能建立了自己的內部框架。 我們擁有適用於所有內容的元件:欄位、按鈕、標籤、範圍、資料表、選單、日期選擇器、選擇和多選。我們甚至還有一個 div 組件。順便說一句,我們的 div 元件非常棒,它允許我們在所有瀏覽器上實現圓角,無論你相信與否,這在當時並不是一件容易的事情。

我們的工作發生在我們歷史上的某個時刻,當時 JS、Ajax 和動態 HTML 被視為一場帶我們走向未來的革命。突然間,我們可以動態更新頁面,從伺服器獲取數據,並避免導航到其他頁面,這被認為是緩慢的,並且在兩個頁面之間的螢幕上閃爍一個大的白色矩形。 傑夫·阿特伍德(Jeff Atwood,StackOverflow 創始人)流行了這樣一句話: 「任何可以用 JavaScript 編寫的應用程式最終都會用 JavaScript 編寫。」—— Jeff Atwood

對於當時的我們來說,這感覺像是真正敢於創建這些應用程式。感覺就像是對 JS 所做的一切都給予了全面認可。 所以我們所有的事情都用 JS 來做,我們並沒有真正花時間去研究其他的做事方式。我們並沒有真正感受到正確學習 HTML 和 CSS 功能的動力。我們並沒有真正將網路視為一個完整的不斷發展的應用程式平台。我們大多認為這是我們需要解決的問題,特別是在瀏覽器支援方面。我們可以投入更多的 JS 來完成任務。 花時間進一步了解網路的運作方式以及平台上的可用內容會對我有幫助嗎?當然,我可能會刪掉一堆其實不需要的程式碼。但在當時,也許沒有那麼多。 你看,當時瀏覽器的差異非常顯著。當時,Internet Explorer 仍然是主導的瀏覽器,Firefox 緊隨其後,但由於 Chrome 的迅速普及而開始失去市場份額。儘管Chrome和Firefox在網路標準上達成了一致,但我們的應用程式運行環境意味著我們必須長期支援IE6。即使我們被允許支援 IE8,我們仍然必須處理瀏覽器之間的許多差異。不僅如此,當時的網路還沒有在平台內建那麼多多功能。

快進到今天。事情發生了巨大的變化。我們不僅擁有比以往更多的這些功能,而且它們可用的速度也有所增加。 那麼,讓我再問一次這個問題:今天花時間了解更多有關網絡如何運作以及平台上提供的內容對您有幫助嗎?絕對是的。今天學習理解和使用網路平台將使您比其他開發人員具有巨大的優勢。 無論您是致力於效能、可訪問性、響應能力,還是所有這些一起工作,或者只是交付 UI 功能,如果您想作為負責任的工程師來做到這一點,那麼了解可用的工具可以幫助您更快更好地實現目標。 有些事情你可能不再需要圖書館了 在了解了當今瀏覽器支援的內容後,問題是:我們可以放棄什麼? 2025 年我們還需要一個 div 元件來做圓角嗎?當然,我們不這麼做。目前所有目前使用的瀏覽器都支援 border-radius 屬性超過 15 年。轉角形狀也即將推出,適用於更精美的轉角。 讓我們來看看現在所有主要瀏覽器中都可用的相對較新的功能,您可以使用它們來替換程式碼庫中的現有依賴項。 重點不是立即拋棄所有你喜愛的函式庫並重寫你的程式碼庫。至於其他一切,您需要先考慮瀏覽器支援,並根據專案特定的其他因素做出決定。以下功能在三個主要瀏覽器引擎(Chromium、WebKit 和 Gecko)中實現,但您可能有不同的瀏覽器支援要求,導致您無法立即使用它們。不過,現在仍然是了解這些功能並可能計劃在某個時候使用它們的好時機。 彈出視窗和對話框 Popover API、

HTML 元素和 ::backdrop 偽元素可以幫助您擺脫對 popup 的依賴,工具提示和對話方塊庫,例如 Floating UI、Tippy.js、Tether 或 React Tooltip。 它們開箱即用地為您處理可訪問性和焦點管理,可以使用 CSS 進行高度自訂,並且可以輕鬆製作動畫。 手風琴
元素、其互斥元素的 name 屬性和 ::details-content 偽元素消除了對可折疊元件(如 Bootstrap Accordion 或 React Accordion 元件)的需求。 僅使用這裡的平台意味著了解 HTML/CSS 的人可以更輕鬆地理解您的程式碼,而無需先學習使用特定的程式庫。這也意味著您不會受到庫中的重大變更或該庫的終止的影響。當然,這意味著需要下載和運行的程式碼更少。互斥的細節元素不需要 JS 來開啟、關閉或設定動畫。 CSS 語法 級聯層,用於更有組織的CSS程式碼庫,CSS嵌套,用於更緊湊的CSS,新的顏色函數,相對顏色和顏色混合,新的數學函數,如abs(),sign(),pow()等有助於減少對CSS預處理器,實用程式庫(如Bootstrap和Tailwind)甚至運行時CSS-in-JS庫的依賴。 遊戲規則的改變者 :has() 是長期以來最受歡迎的功能之一,它消除了對更複雜的基於 JS 的解決方案的需求。 JS 實用程式 現代 Array 方法(如 findLast() 或 at())以及 Set 方法(如 Difference()、intersection()、union() 等)可以減少對 Lodash 等函式庫的依賴。 容器查詢 容器查詢使 UI 元件能夠回應除視窗大小之外的其他內容,從而使它們在不同上下文中更具可重複使用性。 不再需要為此使用大量 JS 的 UI 函式庫,也不需要使用 polyfill。 佈局 網格、子網格、Flexbox 或多列已經存在很長時間了,但是看看 CSS 現狀調查的結果,很明顯開發人員在採用新事物時往往非常謹慎,並且要等待很長時間才能採用。 這些功能長期以來一直是 Baseline,您可以使用它們來擺脫對 Bootstrap 網格系統、Foundation Framework 的 Flexbox 實用程式、Bulma 固定網格、Materialize 網格或 Tailwind 列等內容的依賴。 我並不是說你應該放棄你的框架。您的團隊採用它是有原因的,刪除它可能是一個大專案。但是,看看網路平台在沒有第三方包裝器的情況下可以提供什麼,會帶來很多好處。 在不久的將來你可能不再需要的東西 現在,讓我們快速瀏覽一下在不久的將來您將不需要圖書館的一些事情。也就是說,以下的內容還沒有完全準備好大規模採用,但了解它們並為以後的潛在使用做好規劃可能會有所幫助。 錨定位 CSS 錨點定位處理彈出視窗和工具提示相對於其他元素的定位,並負責將它們保持在視圖中,即使在移動、捲動或調整頁面大小時也是如此。 這是對前面提到的 Popover API 的一個很好的補充,這將使從效能密集型 JS 解決方案遷移變得更加容易。 導航API 導航 API 可用於處理單頁應用程式中的導航,並且可能是 React Router、Next.js 路由或 Angular 路由任務的一個很好的補充,甚至是替代品。 視圖轉換 API View Transitions API 可以在頁面的不同狀態之間進行動畫處理。在單頁應用程式中,這使得狀態之間的平滑過渡變得非常容易,並且可以幫助您擺脫動畫庫,例如 Anime.js、GSAP 或 Motion.dev。 更好的是,該 API 還可以用於多頁面應用程式。 還記得之前我說過,我們在 15 年前工作的公司建立單頁應用程式的原因是為了避免導航時頁面重新載入的白色閃光嗎?如果當時有這個 API,我們就能夠實現漂亮的頁面過渡效果,而不需要單頁面框架,也不需要整個應用程式的大量初始下載。 滾動驅動的動畫 滾動驅動的動畫在用戶的滾動位置上運行,而不是隨著時間的推移運行,這使它們成為講故事和產品遊覽的絕佳解決方案。 有些人用它有點過頭了,但是如果使用得當,這可以是一個非常有效的設計工具,並且可以幫助擺脫像 ScrollReveal、GSAP Scroll 或哇.js。 可自訂的選擇 可自訂的選擇是一個普通的

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free