简单的路由

不管是借助第三方库,还是自己实现简单的路由,都需要先定义一个组件充当管理者,去动态渲染不同的页 面组件,而且为了管理方便,这里的组件可以使用实例组件来代替。

  1. var PageA = Intact.extend({template: '<div>pageA</div>'});
  2. var PageB = Intact.extend({template: '<div>pageB</div>'});
  3. var routes = {
  4. '/page/a': PageA,
  5. '/page/b': PageB
  6. };
  7. var App = Intact.extend({
  8. template: '<div>{self.get("view")}</div>',
  9. defaults: function() {
  10. return {
  11. view: null
  12. }
  13. },
  14. load: function(Page) {
  15. var page = new Page();
  16. this.set('view', page);
  17. }
  18. });
  19. var app = Intact.mount(App, document.getElementById('app'));
  20. // 这里使用hash路由
  21. window.addEventListener('hashchange', function() {
  22. app.load(routes[location.hash.substr(1)]);
  23. });
  24. // 初始化hash
  25. location.hash = '#/page/a';

如果你熟悉template模板函数的使用,你也可以使用类组件实现