transform: function(mid, param, promise) { // speed-up, parallelly load apis and modules this._promiser = Deferred.ensure({ data: promise, ctor: common.getCtor(mid) }, true); // 渲染新页面及处理错误 this._promiser.then( lang.hitch(this, function(result) { var page, error; param = param || {}; if (result.data) { param.data = result.data } // 渲染 try { page = result.ctor(param) } catch (e) { error = e } // 完成渲染并处理错误 if (error) { this.onTransformError({ type: "rendering", message: error.message, code: error.code || -99999, rawError: error }) } else { this.onTransformEnd(page) } }), lang.hitch(this, "onTransformError") ) },
initialize: function() { var registry = lang.hitch(this, "route"); var transform = lang.hitch(this, "transform"); // # 404 registry("*action", "404", function() { routes.navigate("/404", true, true) }); // # error 404 registry("404(/)(?:query)", "errror.404", function() { transform("app/entry.Error") }); // # home registry("(?:query)", "home", function(q) { transform("app/entry.Home", null, services.getEntryHome()) }); // # about registry("about(/)(?:query)", "toplist", function() { transform("app/entry.About", null, services.getEntryAbout()) }); },