在瀏覽器端,對路由的理解一般是根據(jù)不同的 URL 完成頁面的切換。在服務器端,則是根據(jù)不同的 URL 請求回饋相關(guān)的頁面。在本章,我們廣義的組件路由的定義:根據(jù)接收到的不同命令,組件對象呈現(xiàn)出不同的子級頁面。在這里將介紹與路由相關(guān)的一個組件,即視圖棧 ViewStack。
視圖棧初步
該組件在《文檔》部分的最后一個章節(jié)《延遲實例化》已經(jīng)出現(xiàn)過了。這里將對一些細節(jié)部分進行解讀。下面再次給出該組件的源碼。
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({},