成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

原生js實(shí)現(xiàn)路由 (初級(jí)篇)

wdzgege / 2857人閱讀

摘要:整個(gè)路由的核心連接點(diǎn)是的值,監(jiān)聽器負(fù)責(zé)監(jiān)聽值的變化。當(dāng)值發(fā)生改變的時(shí)候,去路由表中去查詢,將與當(dāng)前匹配的頁面作為路由出口的內(nèi)容。去路由表中查找與對(duì)應(yīng)的頁面,將這種頁面替代原來的路由出口內(nèi)容。

設(shè)計(jì)思路

路由跳轉(zhuǎn)最常見的形式是通過a標(biāo)簽,當(dāng)a標(biāo)簽被點(diǎn)擊的時(shí)候,將a標(biāo)簽中對(duì)應(yīng)的路徑值賦值給hash。
整個(gè)路由的核心連接點(diǎn)是hash的值,hash監(jiān)聽器負(fù)責(zé)監(jiān)聽hash值的變化。
當(dāng)hash值發(fā)生改變的時(shí)候,去路由表中去查詢,將與當(dāng)前hash匹配的html頁面作為路由出口的內(nèi)容。

首先看html代碼

        
操作系統(tǒng) 計(jì)算機(jī)網(wǎng)絡(luò) 軟件工程

這里的content就是路由出口,當(dāng)點(diǎn)擊不同的a標(biāo)簽時(shí),content內(nèi)部展示的內(nèi)容也不同。

其次看a標(biāo)簽上綁定的事件

        const links = document.querySelectorAll("a");
        links.forEach(function (link) {
            link.addEventListener("click", function (ev) {
                ev.preventDefault();
                const href = this.getAttribute("href");
                window.location.hash = href;
            });
        });

當(dāng)a標(biāo)簽被點(diǎn)擊時(shí),禁止a標(biāo)簽的默認(rèn)行為。然后將a標(biāo)簽的href的值賦給window.location.hash。
可以看到此時(shí)瀏覽器的地址欄發(fā)生更新。

如果到此為止,那么頁面不會(huì)發(fā)生更新,僅僅只是location的hash的值發(fā)生改變。

最后當(dāng)hash發(fā)生改變時(shí),頁面也該更新。去路由表中查找與hash對(duì)應(yīng)的頁面,
將這種頁面替代原來的路由出口內(nèi)容。

        window.addEventListener("hashchange", function () {
            const outer = document.querySelector("#content");
            const hash = window.location.hash;
            const route = routes.find(function (route) {
                return hash === "#" + route.path;
            });
            outer.innerHTML = route && route.component || "

Error

"; });

完整的代碼可以從我的github 獲取完整代碼,覺得可以的話,可以點(diǎn)個(gè)贊。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/110309.html

相關(guān)文章

  • 前端最強(qiáng)面經(jīng)匯總

    摘要:獲取的對(duì)象范圍方法獲取的是最終應(yīng)用在元素上的所有屬性對(duì)象即使沒有代碼,也會(huì)把默認(rèn)的祖宗八代都顯示出來而只能獲取元素屬性中的樣式。因此對(duì)于一個(gè)光禿禿的元素,方法返回對(duì)象中屬性值如果有就是據(jù)我測(cè)試不同環(huán)境結(jié)果可能有差異而就是。 花了很長時(shí)間整理的前端面試資源,喜歡請(qǐng)大家不要吝嗇star~ 別只收藏,點(diǎn)個(gè)贊,點(diǎn)個(gè)star再走哈~ 持續(xù)更新中……,可以關(guān)注下github 項(xiàng)目地址 https:...

    wangjuntytl 評(píng)論0 收藏0
  • Amaple.js框架詳細(xì)介紹

    摘要:體驗(yàn)優(yōu)先的單頁框架點(diǎn)此查看倉庫是專為單頁應(yīng)用而設(shè)計(jì)的基于頁面模塊化的框架,它可使開發(fā)者快速開發(fā)單頁應(yīng)用。使用前置要求此框架的使用者可不需了解構(gòu)建工具,但必須掌握和的基礎(chǔ)知識(shí)。 showImg(https://segmentfault.com/img/bV2wO3?w=792&h=303); Amaple · 體驗(yàn)優(yōu)先的JavaScript單頁框架 Amaple (點(diǎn)此查看Github倉...

    loonggg 評(píng)論0 收藏0
  • Amaple.js框架詳細(xì)介紹

    摘要:體驗(yàn)優(yōu)先的單頁框架點(diǎn)此查看倉庫是專為單頁應(yīng)用而設(shè)計(jì)的基于頁面模塊化的框架,它可使開發(fā)者快速開發(fā)單頁應(yīng)用。使用前置要求此框架的使用者可不需了解構(gòu)建工具,但必須掌握和的基礎(chǔ)知識(shí)。 showImg(https://segmentfault.com/img/bV2wO3?w=792&h=303); Amaple · 體驗(yàn)優(yōu)先的JavaScript單頁框架 Amaple (點(diǎn)此查看Github倉...

    imingyu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<