将大量小的HTML页面通过导航拼接以实现交互

发布: (2026年5月4日 GMT+8 12:43)
4 分钟阅读

Source: Hacker News

为什么我喜欢它

我写过一篇关于使用 LLM 构建网站的文章——(L)ots of(L)ittle ht(M)l page(s)——我觉得现在是对这种方法进行事后分析的时候了。

我对原文做了一些小调整,但核心思想仍然相同:

避免使用需要 JavaScript 的页面内交互,而是采用依赖 HTML、并通过 CSS 视图过渡(以及在必要时少量 JS)增强的多页面导航。

一个真实案例

在我的博客里有一个 菜单。它不会通过 JavaScript “展开”、 “滑出” 或 “弹出”。相反,它 导航 到一个全新的页面,该页面只专注于站点的菜单选项。

导航仅仅是一个链接:

[…](/menu/)

而交互则通过 CSS 视图过渡得到增强。

  • 现代浏览器? 你会看到更好的效果。
  • 旧浏览器、禁用 JS 等情况? 仍然可以工作,因为链接是浏览器能执行的最基本操作。

工作原理

所有页面(除菜单页外)都包含指向菜单的链接。当你导航到菜单时,该链接会变成一个 “X”,关闭 菜单。关闭链接仍然只是一个指向 / 的链接,但它通过少量 JavaScript 在可能的情况下执行 history.back(),从而避免在浏览器历史中产生额外条目。

document.referrer 检查用于判断用户是通过导航(很可能是从博客内部)还是直接访问(例如手动输入 URL)进入页面。如果有有意义的历史记录条目,则使用 history.back();否则页面会重定向到首页 URL。

可视化概览

博客 jim-nielsen.com 的三个移动端截图,突出显示了可以进行导航点击的区域以及它们之间的链接关系。

视频演示

(如有需要,可在此插入视频嵌入或链接。)

反思

虽然这个方案看起来很简洁,但实现它需要对导航的本质、交互如何跨多个页面以及如何保持页面体积小以实现快速、稳健且直观的使用进行深入思考。换句话说,这种方法 塑造了设计

当你把浏览器主要视为文档导航器,而不是任意代码的运行时,得到的架构往往比许多现代工具让我们相信的要简单得多。

0 浏览
Back to Blog

相关文章

阅读更多 »

自己制作框架,有什么建议吗?

《Making my own framework》的封面图片。有什么建议吗?https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fde...