当前位置: 首页 > news >正文

前端小食堂 | Day10 - 前端路由の时空裂隙

🕳️ 今日穿梭指南:两种维度の路由宇宙

1. Hash 模式:锚点の量子隧道
// 手动创建路由监听器  
window.addEventListener('hashchange', () => {
     
  const path = location.hash.slice(1) || '/';  
  console.log('进入哈希宇宙:', path);  
  renderComponent(path);  
});  

// 编程式导航  
function navigateTo(path) {
     
  location.hash = `#${
     path}`;  
}  

// 初始化路由  
if (!location.hash) navigateTo('/home');  

🔔 宇宙特性

  • URL 格式:http://domain.com/#/home
  • 优点
    • 兼容性强(IE8+)
    • 无需服务器配置
  • 缺点
    • URL 不够优雅
    • 锚点功能冲突风险

2. History 模式:时空操纵术
// 监听历史记录变化  
window.addEventListener('popstate', (e) => {
     
  const path = location.pathname;  
  console.log('时空回退至:', path);  
  renderComponent(path);  
});  

// 主动跳转(不触发页面刷新)  
function historyPush(path) {
     
  history.pushState({
    key: Date.now() }, '', path);  
  renderComponent(path); // 需手动触发渲染  
}  

// 拦截链接点击事件  
document.body.addEventListener('click', (e) => {
     
  if (e.target.tagName === 'A') {
     
    e.preventDefault();  
    historyPush(e.target.href);  
  }  
});  

🔔 高阶法则

  • URL 格式:http://domain.com/home
  • 必须配置服务器
    # Nginx 配置  
    location / {  
      try_files $uri $uri/ /index.html;  
    }  
    

相关文章:

  • Java是值传递还是引用传递
  • 特征选择之特征重要性排序(基于树模型)
  • 如何用Kimi生成PPT?秒出PPT更高效!
  • 学习threejs,Animation、Core、CustomBlendingEquation、Renderer常量汇总
  • Java 依赖冲突终极解法:Maven 依赖树分析与强制版本锁定
  • 最左侧冗余覆盖子串
  • 【接口封装】——18、添加目录项列表响应
  • AMD(xilinx) FPGA书籍推荐
  • RabittMQ保证消息不丢失的几种手段
  • Spring Boot 项目中慢SQL优化方案
  • 基于微信小程序的超市购物系统+论文源码调试讲解
  • 【文心索引】搜索引擎测试报告
  • 【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
  • Trae IDE新建C#工程
  • 双目立体视觉(6.1)测距
  • 2025年科技趋势深度解析:从“人工智能+”到量子跃迁的技术革命
  • 练习题:72
  • 时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
  • 基于NIST后量子算法的混合加密系统
  • 动态规划背包刷题
  • 从化企业网站建设/seo怎么读
  • app开发定制公司名单/aso优化是什么
  • 如何做一个营销型网站/爱站工具查询
  • 外贸网站注册/百度山西授权代理
  • 沙河做网站/线上推广渠道主要有哪些
  • 引流推广app/seo软件工具箱