URL的井号
这篇讲的是URL中那个不起眼却容易让人困惑的井号(#)。作者从日常开发中“页面跳转后锚点失效”或“参数意外丢失”的常见问题切入,指出了这个符号的核心矛盾:它本意是用于页内导航(锚点),却在与服务端交互时被完全忽略,也成了前后端参数传递中一个容易被误用的“盲区”。 文章细致对比了井号(#)与问号(?)在URL中的本质区别。问号后的查询字符串会发送到服务器,而井号后的内容(片段标识符)仅在浏览器端处理,用于定位页面内的某个位置,根本不会抵达后端。作者还特别指出了一个现代开发中的关键应用场景:在单页应用(SPA)里,井号模式被广泛用于实现前端路由,因为它能避免页面刷新,同时其变化又不会触发浏览器向服务器重新请求页面,这为无刷新体验提供了基础。 从实现角度看,文章提到了通过`hashchange`事件监听锚点变化,以及如何利用`location.hash`读取或设置锚点值。巧妙之处在于,这个原本用于传统页内跳转的机制,通过简单的事件监听,就转换成了管理前端应用状态的有效工具。最后,作者也提醒,在需要将状态同步到服务器或支持用户直接分享链接的场景下,可能需要结合History API来替代或补充纯哈希方案。