前端路由

简介: 回顾下 前端的基础路由有助于理解 SPA 单页应用单页应用 可以看掘金简书-IT技术可以在不跳转页面的情况下 修改浏览地址以及历史记录这就是底层 vue react router原理

1.  前言


回顾下 前端的基础路由

有助于理解 SPA 单页应用

单页应用 可以看

掘金

简书-IT技术

可以在不跳转页面的情况下 修改浏览地址以及历史记录

这就是底层 vue  reactrouter原理


2. pushState 概念


history.pushState(参数1,参数2,参数3)

参数1:  一个对象或者字符串,用于描述新记录的一些特性。

这个参数会被一并添加到历史记录中,以供以后使用。这个参数是开发者根据自己的需要自由给出的。

参数2:一个字符串,代表新页面的标题。当前基本上所有浏览器都会忽略这个参数。

参数3:一个字符串 url,代表新页面的相对地址。


3. 基本使用


注意

1.页面不刷新

  1. 历史记录有这个入栈记录


function pushStateFun(){
            //  地址栏 地址改变.产生了历史记录,但是页面没有刷新!!!
            // 历史记录入栈
             history.pushState({value:10,name:"登录页面"},"页面标题","login.html")
            //  history.pushState({value:10},"页面标题","./register.html")
         }
        //  点击浏览器 前进后退的时候调用
         window.addEventListener("popstate",function(e){
             console.log(">>>.",arguments)
             console.log(">>>.history",history.state)
         })



4.单页面跳转



<body>
    <div class="nav">
        <button id="html"> 前端</button>
        <button id="iOS"> iOS</button>
    </div>
    <div class="html" id="A">
        <h3>CSS 的元素显示模式
</h3>
        <h3>Electron 网页调起客户端</h3>
        <h3>Vue全局API总结</h3>
    </div>
    <div class="iOS" id="B">
        <h3>iOS上的插件优化设计</h3>
        <h3>iOS隐私升级及注意事项</h3>
        <h3>数据结构与算法-栈</h3>
    </div>
    <script>
        /**
         *  vue路由   框架都有封装好的
         */
        html.onclick = function () {
            A.style.display = 'block';
            B.style.display = 'none';
            history.pushState({ name: "html" }, "HTML页面", "/html")
        }
        iOS.onclick = function () {
            A.style.display = 'none';
            B.style.display = 'block';
            history.pushState({ name: "iOS" }, "iOS页面", "/iOS")
        }
        window.addEventListener("popstate", function () {
            if (history.state.name == "html") {
                A.style.display = 'block';
                B.style.display = 'none';
            } else {
                A.style.display = 'none';
                B.style.display = 'block';
            }
        })
    </script>
</body>



5. URL 哈希


URL的6部分

协议,域名或IP,端口号,路径,参数,哈希值

一个页面的url前5部分发生变化时,页面会执行跳转

页面url得哈希值发生变化时,页面不会跳转

url的hash值,专门用于实现前端路由,不同的hash值对应不同的页面,当hash发生变化时,当前页面中显示的内容也会发生变化,而且这种变化是无跳转的

hash值用于前端页面控制,所以向服务器发送请求时url的hash是不会发送的


6.onhashchange



<body>
    <ul>
        <li>
            <!-- 页面中的a标签的href属性,可以写绝对url也可以写相对url,
            如果是相对url则省略的部分相对于当前页面url地址。 -->
            <a href="http://www.baidu.com">百度一下</a>            
        </li>>
        <li>
            <a href="#abc">abc</a>
        </li>
        <li>
            <a href="#qqq">qqq</a>
        </li>
    </ul>
    <div id="router-view">
    </div>
</body>
<script>
    var routerView = document.getElementById("router-view");
    //window.onhashchange事件,当前页面的url的hash值发生变化时触发。
    window.onhashchange = function(){
        if(location.hash=="#abc"){
            routerView.innerHTML = "这是abc页面的内容";
        }else{
            routerView.innerHTML = "这是QQQ页面的内容";
        }
    }
    window.onload = function(){
        if(location.hash=="#abc"){
            routerView.innerHTML = "这是abc页面的内容-1";
        }else{
            routerView.innerHTML = "这是QQQ页面的内容";
        }
    }
</script>



相关文章
|
5月前
|
移动开发 前端开发 API
深入理解前端路由:构建现代 Web 应用的基石(上)
深入理解前端路由:构建现代 Web 应用的基石(上)
深入理解前端路由:构建现代 Web 应用的基石(上)
|
5月前
|
前端开发 搜索推荐 UED
解密前端路由: hash模式vs.history模式
解密前端路由: hash模式vs.history模式
|
5月前
|
移动开发 前端开发 JavaScript
前端vue2、vue3去掉url路由“ # ”号——nginx配置(一)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
349 0
|
2月前
|
JavaScript 前端开发 开发者
Vue.js 框架大揭秘:响应式系统、组件化与路由管理,震撼你的前端世界!
【8月更文挑战第27天】Vue.js是一款备受欢迎的前端JavaScript框架,以简洁、灵活和高效著称。本文将从三个方面深入探讨Vue.js:响应式系统、组件化及路由管理。响应式系统为Vue.js的核心特性,能自动追踪数据变动并更新视图。例如,通过简单示例代码展示其响应式特性:`{{ message }}`,当`message`值改变,页面随之自动更新。此外,Vue.js支持组件化设计,允许将复杂界面拆分为独立且可复用的组件,提高代码可维护性和扩展性。如创建一个包含标题与内容的简单组件,并在其他页面中重复利用。
58 3
|
5天前
|
存储 JavaScript 前端开发
前端 vue:路由的高级使用
前端 vue:路由的高级使用
|
5天前
|
资源调度 JavaScript 前端开发
前端vue:路由的基本使用
前端vue:路由的基本使用
|
7天前
|
移动开发 前端开发 JavaScript
浅谈前端路由原理hash和history
该文章详细解析了前端路由的两种模式——Hash模式与History模式的工作原理及其实现方式,并通过实例代码展示了如何在实际项目中运用这两种路由模式。
|
15天前
|
移动开发 缓存 前端开发
构建高效的前端路由系统:从原理到实践
在现代Web开发中,前端路由系统已成为构建单页面应用(SPA)不可或缺的核心技术之一。不同于传统服务器渲染的多页面应用,SPA通过前端路由技术实现了页面的局部刷新与无缝导航,极大地提升了用户体验。本文将深入剖析前端路由的工作原理,包括Hash模式与History模式的实现差异,并通过实战演示如何在Vue.js框架中构建一个高效、可维护的前端路由系统。我们还将探讨如何优化路由加载性能,确保应用在不同网络环境下的流畅运行。本文不仅适合前端开发者深入了解前端路由的奥秘,也为后端转前端或初学者提供了从零到一的实战指南。
|
5月前
|
前端开发 JavaScript 应用服务中间件
前端vue2、vue3去掉url路由“ # ”号——nginx配置(二)
前端vue2、vue3去掉url路由“ # ”号——nginx配置
254 0
|
3月前
|
开发框架 JSON 前端开发
Vue&Element 前端应用开发之菜单和路由的关系
Vue&Element 前端应用开发之菜单和路由的关系
下一篇
无影云桌面