美文网首页
mini路由

mini路由

作者: TRYao | 来源:发表于2018-04-11 10:16 被阅读0次

    es6实现mini路由

    class Routers {
      constructor() {
        this.routes = {};
        // 在初始化时监听popstate事件
        this._bindPopState();
      }
      // 初始化路由
      init(path) {
        history.replaceState({path: path}, null, path);
        this.routes[path] && this.routes[path]();
      }
      // 将路径和对应回调函数加入hashMap储存
      route(path, callback) {
        this.routes[path] = callback || function() {};
      }
    
      // 触发路由对应回调
      go(path) {
        history.pushState({path: path}, null, path);
        this.routes[path] && this.routes[path]();
      }
      // 监听popstate事件
      _bindPopState() {
        window.addEventListener('popstate', e => {
          const path = e.state && e.state.path;
          this.routes[path] && this.routes[path]();
        });
      }
    }
    

    参考文章:面试官: 你了解前端路由吗?

    FE交流群群二维码.png

    相关文章

      网友评论

          本文标题:mini路由

          本文链接:https://www.haomeiwen.com/subject/sukahftx.html