与第三方库结合
下面以director为例,介绍怎么实现与第三方路由库的整合。
针对上面的简单路由使用方式,我们需要更改路由配置routes
,并且无需自己绑定hashchange
事件,
另外director支持路由参数,所以我们扩展App
组件的load()
方法,让它实例化时可以传入数据。
var Index = Intact.extend({template: '<div>Index</div'});
var User = Intact.extend({template: '<div>userId: {self.get("userId")}</div>'});
var App = Intact.extend({
template: '<div>{self.get("view")}</div>',
defaults: function() {
return {
view: null
}
},
load: function(Page, data) {
var page = new Page(data);
this.set('view', page);
}
});
var app = Intact.mount(App, document.getElementById('app'));
var router = Router({
'/': function() {
app.load(Index);
},
'/user/:userId': function(userId) {
app.load(User, {userId: userId});
}
}).configure({
notfound: function() {
router.setRoute('/');
}
});
router.init('/');
可以看到,不管是简单路由还是和第三方路由库整合,都相当简单,而且借助Intact强大的继承功能,你 无需定义嵌套路由,就能实现复杂的路由逻辑。