新闻中心

使用J*aScript实现一个简单的路由_js SPA

2025-11-03
浏览次数:
返回列表
单页应用通过J*aScript路由实现视图切换,利用hash变化监听动态更新内容,支持静态路径映射与动态参数匹配,提升用户体验且无需服务端配合,适用于小型项目。

使用javascript实现一个简单的路由_js spa

单页应用(SPA)通过动态更新页面内容,避免整页刷新,提升用户体验。J*aScript 路由是实现 SPA 的核心机制之一。下面介绍如何用原生 J*aScript 实现一个简单的前端路由系统。

1. 基于 URL Hash 的简单路由

利用 URL 中的 hash(#)部分变化不会触发页面刷新的特性,监听 hashchange 事件来切换视图。

示例结构:

  • #/home → 显示首页
  • #/about → 显示关于页
  • #/contact → 显示联系页

HTML 模板:

商易多用户商城 商易多用户商城

功能介绍:1. 商品出售包含拍卖模式,一口价模式。2. 全套系统采用淘宝网风格,成熟,简洁大方3. 每个商品支持多张图片上传,可自由设定,满足广大网民的迫切要求4. 商品信息支持 ubb,图文并茂5. 注册用户可参与竞拍,或者拍卖自己的商品6. 拥有会员注册,交易提醒,成交商品确认等邮件发送功能7. 拥有交易双方信用评价的功能,使得交易安全可*,可信度高8. 拥有安全稳定的用户虚拟币平台,可实现商

商易多用户商城 0 查看详情 商易多用户商城
<n*>
  <a href="#/home">首页</a>
  <a href="#/about">关于</a>
  <a href="#/contact">联系</a>
</n*>
<main id="app"></main>

J*aScript 路由逻辑:

window.addEventListener('hashchange', function () {
  const app = document.getElementById('app');
  const route = window.location.hash.slice(2); // 去掉 '#/'
<p>if (route === 'home') {
app.innerHTML = '<h1>这是首页</h1>';
} else if (route === 'about') {
app.innerHTML = '<h1>这是关于页</h1>';
} else if (route === 'contact') {
app.innerHTML = '<h1>这是联系页</h1>';
} else {
app.innerHTML = '<h1>404 - 页面未找到</h1>';
}
});</p><p>// 初始化默认页面
window.addEventListener('load', function () {
if (!window.location.hash) {
window.location.hash = '#/home';
} else {
// 触发一次 hashchange 以显示初始内容
window.dispatchEvent(new HashChangeEvent('hashchange'));
}
});

2. 使用路由表简化管理

将路径与对应渲染函数映射为对象,便于维护和扩展。

const routes = {
  '/home': () => '<h1>这是首页</h1>',
  '/about': () => '<h1>这是关于页</h1>',
  '/contact': () => '<h1>这是联系页</h1>',
  '/': () => '<h1>这是首页</h1>'
};
<p>function render() {
const app = document.getElementById('app');
const path = window.location.hash.slice(1) || '/';
const routeHandler = routes[path];</p><p>app.innerHTML = routeHandler ? routeHandler() : '<h1>404 - 页面未找到</h1>';
}</p><p>window.addEventListener('hashchange', render);
window.addEventListener('load', function () {
if (!window.location.hash) {
window.location.hash = '#/';
} else {
render();
}
});

3. 支持动态参数(可选进阶)

如果需要支持类似 #/user/123 的路径,可以加入正则匹配。

const dynamicRoutes = [
  { path: /^\/user\/(\d+)$/, handler: (id) => `<h1>用户 ID:${id}</h1>` }
];
<p>function matchDynamicRoute(path) {
for (const route of dynamicRoutes) {
const match = path.match(route.path);
if (match) {
return route.handler(match[1]);
}
}
return null;
}</p><p>// 在 render 中加入:
// const dynamicContent = matchDynamicRoute(path);
// if (dynamicContent) {
//   app.innerHTML = dynamicContent;
//   return;
// }

基本上就这些。使用 hash 路由简单可靠,兼容性好,适合学习和小型项目。实际开发中也可基于 History API 实现无 # 的路由,但需服务端配合。这个基础版本已经能支撑一个轻量级 SPA 的导航需求。

以上就是使用J*aScript实现一个简单的路由_js SPA的详细内容,更多请关注其它相关文章!


# java  # 婚纱摄影营销推广方案  # 服务端  # 多线程  # 用它  # 数据结构  # 如何用  # 可选  # 多用户  # 有哪些  # 这是  # javascript  # html  # js  # 前端  # app  # ai  # 路由  # win  # 首页  # 江苏seo推广优化  # 微商推广软件找营销吧TT团队一流  # 外贸怎么做公司网站推广  # 图片懒加载 seo  # 屈家岭seo报价  # 做pc关键词排名  # 杭州seo推广优化招聘  # 专业网站优化网站  # 天津seo哪家值得信赖 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Angular中父组件异步更新子组件复选框状态的实践指南  动漫共和国防屏蔽稳定域名-动漫共和国官方正版直达通道  神庙逃亡小游戏在线玩 神庙逃亡小游戏入口  c++ dfs和bfs代码 c++深度广度优先搜索算法  在Qt QML中通过Python字典动态更新TextEdit内容的教程  AWS EC2实例间SQL Server连接超时:安全组配置与故障排除指南  顺丰快件物流信息 官方网站查询入口  Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】  Win11网速慢怎么解决 Win11网络设置优化解除限速  C#如何安全地从用户上传的XML文件中读取数据? 验证与清理策略  HTML空白字符处理机制:渲染、DOM与编码实践  淘宝支付提示失败如何解决 淘宝支付流程优化方法  J*a递归快速排序中静态变量的状态管理与陷阱  消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  汽水音乐在线版入口_汽水音乐网页播放手册  如何高效处理PHP中的Excel数据导入导出?PortPHP/Spreadsheet助你轻松搞定!  《刺客信条:影》PS5 Pro和Switch 2画面对比  KFC游戏互动怎么赢取优惠券_KFC线上游戏活动参与与优惠代码赢取教程  使用Pandas转换并合并DataFrame:多列映射至统一结构  免费抖音短视频入口_抖音网页版短视频免费通道  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  双系统安装时,如何设置默认启动系统? msconfig命令了解一下!  智慧团建扫码登录入口 智慧团建扫码登录入口官网版​  必由学官方网站入口 必由学学生教师共用登录通道  谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  J*aScript中在Map循环中检测并处理空数组元素  优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题  谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示  黑猫投诉统一入口官网 消费者权益保护投诉平台  优化LangChain文档加载与ChromaDB集成:解决多文档处理与分块问题  俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  铃兰之剑为这和平的世界希里技能组及加点推荐  Golang并发任务中错误如何聚合_Golang goroutine error收集方式  必由学官网快捷入口 必由学网页版在线学习平台  网站内容防复制粘贴的实现策略与局限性  照顾宝贝2小游戏免费秒玩入口  React中useState与局部变量:理解组件状态管理与渲染机制  海棠账号登录入口_登录海棠账户同步阅读记录  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  AO3镜像入口大全 AO3网页版内容访问全集  PHP中SSG-WSG API的AES加密实践:正确使用初始化向量  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  深入理解J*a编译器的兼容性选项:从-source到--release  c++ 命名空间怎么用 c++ namespace使用指南  Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践  J*aScript中正确使用querySelectorAll与复杂CSS选择器  taptap防沉迷怎么解除 taptap解除健康系统限制说明【2025最新】  J*aScript数据结构转换:将对象数组按类别分组  Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025 

搜索