在瀏覽器端,對(duì)路由的理解一般是根據(jù)不同的 URL 完成頁(yè)面的切換。在服務(wù)器端,則是根據(jù)不同的 URL 請(qǐng)求回饋相關(guān)的頁(yè)面。在本章,我們廣義的組件路由的定義:根據(jù)接收到的不同命令,組件對(duì)象呈現(xiàn)出不同的子級(jí)頁(yè)面。在這里將介紹與路由相關(guān)的一個(gè)組件,即視圖棧 ViewStack。

視圖棧初步

該組件在《文檔》部分的最后一個(gè)章節(jié)《延遲實(shí)例化》已經(jīng)出現(xiàn)過(guò)了。這里將對(duì)一些細(xì)節(jié)部分進(jìn)行解讀。下面再次給出該組件的源碼。

ViewStack: { 
    xml: "<div id='viewstack'/>",
    fun: function (sys, items, opts) {
        var args, children = this.children(),
            table = children.call("hide").hash(),
            ptr = table[opts.index] || children[0];
        if (ptr) ptr = ptr.trigger("show").show();
        this.on("switch", function ( e, to ) {
            table = this.children().hash();
            if ( !table[to] || table[to] == ptr ) return;
            e.stopPropagation();
            args = [].slice.call(arguments).slice(2);
            ptr.trigger("hide", [to+''].concat(args)).hide();
            ptr = table[to].trigger("show", [ptr+''].concat(args)).show();
        });
        return Object.defineProperty({}, 
        
		

網(wǎng)友評(píng)論