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

資訊專欄INFORMATION COLUMN

【Amaple教程】6. 路由配置

xiaokai / 2568人閱讀

摘要:在第節啟動路由章節中為了能讓單頁應用順利跑起來,我們提前介紹了簡單的路由配置方法。我們已了解路由配置的目的是指定不同的下對應的模塊節點也叫做模塊容器內應該顯示哪個模塊的內容,它還有更多高級的用法如匹配路由通配符的配置重定向等。

第1節《啟動路由》 章節中為了能讓單頁應用順利跑起來,我們提前介紹了簡單的路由配置方法。我們已了解路由配置的目的是指定不同的url下對應的 模塊節點(也叫做模塊容器)內應該顯示哪個模塊的內容,它還有更多高級的用法如匹配路由通配符的配置、重定向等。

配置靜態匹配路由

一個路由路徑是具體的路徑如//about,那么它們就屬于靜態路由。這里我們試著配置一個復雜點的靜態匹配路由,在正常情況下,如果一個url的相對路徑中存在兩級目錄,那么在模塊結構中也有相應嵌套層數,如:

// 假如已知module/index.html、module/about.html中都已定義了一個不具名的嵌套模塊節點
am.startRouter ( {
    routes: function ( router ) {

        // 頂層路由路徑為"/"時表示根目錄,頂層模塊的路由路徑一般需以“/”開頭
        router.module ().route ( "/", "module/index", function ( childRouter ) {

            // 子路由中目錄名配置為""時表示二級目錄為空,此時相對路徑為“/”將會匹配到此空目錄。
            // 配置空目錄時,你也可以這樣設置:childRouter.module ().defaultRoute ( "module/index/default" )
            childRouter.module ().route ( "", "module/index/default" ).route ( "describe", "module/index/describe" );
        } )
        .route ( "/about", "module/about", function ( childRouter ) {

            // 配置路由路徑時可傳入一個路徑數組,這樣表示訪問“/about/amaplejs”或“/about/amaple”都將映射到“module/about/amaplejs”模塊
            childRouter.module ().route ( [ "amaplejs", "amaple" ], "module/about/amaplejs" ).route ( "jquery", "module/about/jquery" );
        } );
    },
    // ...
} );
匹配路由通配符

實際項目中我們經常需要多個甚至所有的路由路徑都匹配同一個模塊,如一個文章模塊,不同id的文章都將匹配此模塊,又比如一個頁面的 header footer 模塊總是保持原樣。顯然,這不可能在配置路由時使用數組列出所有的路由路徑,此時我們就需要使用匹配路由通配符來解決這個問題:

am.startRouter ( {
    routes: function ( router ) {

        // 匹配路由通配符以“:”開頭
        router.module ( "article" ).route ( "/article/:id", "module/article" );
        // 這樣如“/article/123”、“/article/456”、“/article/789”等都將會匹配module/article.html模塊
    },
    // ...
} );

當url為/article/123時,文章模塊的am.Module對象中將在param對象中創建id參數,你可以通過id的參數值獲取對應的文章內容進行顯示:

new am.Module ( {
    mounted : function ( http ) {
        var _this = this;

        // 此時this.param.id的值為"123",即:id通配符所匹配的字符串
        // 使用http預定義插件請求數據
        http.get ( "article?id=" + this.param.id, "json" ).done ( function ( res ) {
            _this.state.title = res.title;
            _this.state.content = res.content;
        } );
    }
} );

匹配路由通配符也支持在多級目錄同時設置,這是會在param對象中創建多個對應的屬性。

// 這是會在模塊對象的param中創建date和id兩個屬性
router.module ( "article" ).route ( "/article/:date/:id", "module/article" );

匹配路由通配符還允許你通過正則表達式限制匹配的內容。

// “/article/:id(d+)”表示id通配符只匹配一位或多位的數字
// 如它可匹配“/article/123”,但不能匹配“/article/a123”
// 正則表達式中使用“”轉義時應該成雙出現
router.module ( "article" ).route ( "/article/:id(d+)", "module/article" );
如果url從/article/123跳轉到/article/456時文章模塊不會被替換,但param.id的值被更新為456,這時文章模塊的paramUpdated 生命周期函數 就會被調用。
重定向

通過router.redirect函數你可以從一個路徑重定向到另一個路徑,重定向的起始目錄取決于當前正在匹配的路由目錄:

am.startRouter ( {
    routes: function ( router ) {

        // 在頂層目錄中將“/”重定向到“/index”
        router.redirect ( "/", "/index" );
        // 重定向的優先級高于匹配模塊,所以router.redirect函數可在route函數前面或后面調用,都會優先重定向路徑

        router.module ().route ( "/index", "module/index", function ( childRouter ) {

            // 重定向的匹配路徑與跳轉路徑也可以設置通配符
            childRouter.redirect ( "introduce/:title", "describe/:title" );
            // 第二層的重定向起始目錄為“/index/”之后的路徑
            // 如“/index/introduce/i_am_a_title”的“introduce/i_am_a_title”部分將會被這層的重定向匹配,并重定向到“describe/i_am_a_title”

            childRouter.module ().route ( "", "module/index/default" ).route ( "describe/:title", "module/index/describe" );
        } );
    },
    // ...
} );
強制重新渲染一個模塊

我們已了解有時候更新模塊時部分模塊不會被替換,這些模塊不會被卸載重新渲染,但你有時可能希望它們回到初始化狀態,這時router.forcedRender函數就可以幫上忙了,它能強制讓一個本來不需卸載的模塊卸載并重新渲染:

am.startRouter ( {
    routes: function ( router ) {

        // 為“article”模塊節點配置時直接調用forcedRender函數,該模塊節點內渲染的模塊都會強制重新渲染
        router.module ( "article" ).forcedRender ().route ( "/article/:id", "module/article" );
    },
    // ...
} );
404錯誤路徑設置

當加載一個或多個模塊時,任意一個模塊文件未找到時將會觸發 404錯誤 路徑的模塊匹配,配置 404錯誤 路徑如下:

am.startRouter ( {
    routes: function ( router ) {

        // 調用router.error404函數設置404路徑,此函數只能在最外層路由對象調用
        // 錯誤路徑建議以“/”開始
        router.error404 ( "/404" );


        // 為404路徑配置渲染模塊
        router.module ( "article" ).route ( "/404", "module/404" );
        // ...
    },
    // ...
} );
 恭喜你,已學到最后一節了,快去實際項目中練習使用吧 

回顧上一節:【AmapleJS教程】5. 插件

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/51742.html

相關文章

  • Amaple教程6. 路由配置

    摘要:在第節啟動路由章節中為了能讓單頁應用順利跑起來,我們提前介紹了簡單的路由配置方法。我們已了解路由配置的目的是指定不同的下對應的模塊節點也叫做模塊容器內應該顯示哪個模塊的內容,它還有更多高級的用法如匹配路由通配符的配置重定向等。 在 第1節《啟動路由》 章節中為了能讓單頁應用順利跑起來,我們提前介紹了簡單的路由配置方法。我們已了解路由配置的目的是指定不同的url下對應的 模塊節點(也叫做...

    ytwman 評論0 收藏0
  • Amaple教程6. 路由配置

    摘要:在第節啟動路由章節中為了能讓單頁應用順利跑起來,我們提前介紹了簡單的路由配置方法。我們已了解路由配置的目的是指定不同的下對應的模塊節點也叫做模塊容器內應該顯示哪個模塊的內容,它還有更多高級的用法如匹配路由通配符的配置重定向等。 在 第1節《啟動路由》 章節中為了能讓單頁應用順利跑起來,我們提前介紹了簡單的路由配置方法。我們已了解路由配置的目的是指定不同的url下對應的 模塊節點(也叫做...

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

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

    loonggg 評論0 收藏0

發表評論

0條評論

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