透過頁面導航串聯大量微型 HTML 頁面以實現互動效果

透過頁面導航串聯大量微型 HTML 頁面以實現互動效果

Hacker News·

我提倡利用多個微型 HTML 頁面之間的導航,並輔以 CSS 視圖過渡效果來構建網站,藉此取代依賴 JavaScript 的複雜單頁互動,回歸以瀏覽器最基本的導航功能為核心的開發方式。

背景

本文作者 Jim Nielsen 提出了一種被他戲稱為 LLM(Lots of Little HTML pages)的開發模式,主張回歸以 HTML 連結為核心的網頁設計。他建議開發者應避免過度依賴 JavaScript 來處理頁面內的互動,轉而利用多個獨立的 HTML 頁面,並搭配現代瀏覽器的 CSS 視圖轉換(View Transitions)來達成流暢的導覽體驗,例如將選單設計成一個獨立的頁面而非彈出視窗。

社群觀點

這份提案在 Hacker News 引發了關於現代網頁開發哲學的激烈辯論。支持者認為這種做法回歸了網頁的本質,將瀏覽器視為導覽文件的工具而非執行複雜程式碼的運行環境。部分留言指出,這種「回歸原始」的方法對於可存取性與穩定性有顯著幫助,特別是對於使用螢幕閱讀器或在不穩定網路環境下操作的使用者。ivan_gammel 等開發者強調,在企業級應用中,過重的 JavaScript 框架往往會導致載入時間過長,進而降低轉換率,而這種輕量化的多頁面架構能提供更快的首屏渲染與互動速度。

然而,反對聲音也相當強烈。部分評論者如 jazzypants 質疑這種做法的必要性,認為在現代開發環境中,JavaScript 已經是不可或缺的基礎,刻意規避它就像是唐吉訶德式的空想。他認為 Google 搜尋等主流服務若不開啟 JavaScript 根本無法運作,開發者不應為了極少數關閉腳本的使用者而犧牲開發效率。此外,也有人批評將選單設計成獨立頁面是過度的「行動裝置優先」思維,在桌面端瀏覽器上,使用者通常預期選單是局部的互動元件,而非跳轉到一個佔滿全螢幕的新頁面。

在技術細節上,社群也展開了有趣的討論。有人指出這與 HATEOAS 架構或 Astro 框架的「群島架構」有異曲同工之妙。雖然作者試圖減少 JavaScript,但為了優化導覽體驗(如點擊關閉選單時觸發瀏覽器回退),他仍使用了一小段腳本。這被部分評論者批評為不夠徹底,甚至有人建議可以使用 HTML 的 popover 屬性來達成無腳本的選單效果。儘管如此,多數人認同這篇文章挑戰了當前過度依賴單頁應用(SPA)的現狀,迫使開發者重新思考網頁互動的本質。

延伸閱讀

  • CSS View Transitions API:作者用來達成流暢頁面切換的核心技術,目前 Chrome 與 Safari 已支援。
  • Astro Islands:留言中提到的框架概念,主張將網頁拆解為靜態 HTML 與獨立的互動組件。
  • Piccalilli - A handful of reasons JavaScript won't load:社群推薦的延伸文章,列舉了多種導致 JavaScript 失效的現實場景。
  • HTML popover attribute:留言者建議的另一種無需 JavaScript 即可實現彈出互動的原生 HTML 屬性。

Hacker News

相關文章

  1. JavaScript 為主的方法與長期效能目標不相容

    3 個月前

  2. 現代前端複雜性:是必然還是偶然?

    17 天前

  3. Show HN:看到這個酷炫的導航欄揭示效果,於是我用簡單的 HTML+CSS 實現了一個版本

    3 個月前

  4. 網頁上的精靈圖:深入探討 CSS 動畫技術

    2 個月前

  5. Show HN:µJS,一個僅 5KB 且無依賴項的 Htmx 與 Turbo 替代方案

    大約 2 個月前