国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

wdzgege / 2761人閱讀

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

設(shè)計思路

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

首先看html代碼

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

這里的content就是路由出口,當點擊不同的a標簽時,content內(nèi)部展示的內(nèi)容也不同。

其次看a標簽上綁定的事件

        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;
            });
        });

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

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

最后當hash發(fā)生改變時,頁面也該更新。去路由表中查找與hash對應(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 獲取完整代碼,覺得可以的話,可以點個贊。

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/110309.html

相關(guān)文章

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

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

    wangjuntytl 評論0 收藏0
  • Amaple.js框架詳細介紹

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

    loonggg 評論0 收藏0
  • Amaple.js框架詳細介紹

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

    imingyu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<