Skip to content

Latest commit

 

History

History
76 lines (74 loc) · 2.67 KB

1.0.README.md

File metadata and controls

76 lines (74 loc) · 2.67 KB

1.0 计划

  • 新增 beforeEnter, beforeLeave, beforeEachEnter, beforeEachLeave 等钩子
  • 新增 createLink 方法(通过函数构造链接,传入一个路由描述对象)
  • setUrl 更名为 setUrlOnly
  • 新增 name 选项,name 可以作为 go, dispatch, setUrlOnly 等方法的参数
  • go, dispatch, setUrlOnly 等方法支持传入路由描述对象作为参数
  • 新增 data 选项,可以通过 Req 对象传给回调函数使用
  • 支持异步回调阻塞(即必须等待异步回调完成才调用下一个回调)
  • 支持 go, back 等历史操作
  • 增加 destroy 方法销毁路由器
  • 移除 configure 函数,配置应该在创建路由实例的时候完成
  • 支持 recurse: forward 模式,即在寻找路由匹配的过程中,如果路由完全匹配完整路径的前缀部分,也可以触发 dispatch
  • 公开 Router.QS 对象,提供操作 query string 的两个重要方法
  • 移除 setRoute 方法,用 go 代替
  • 移除 root 配置项
  • 支持 * 匹配
  • 移除 notFound 配置项,使用 * 匹配
  • 完善历史记录操作
  • 增加 redirect 选项
  • beforeEnter, beforeLeave 等钩子的回调函数增加 from, to 的访问
  • 增加 title 选项,自动改变 document.title
  • 增加 this.current 访问当前的路由信息
const routes = {
  "/": {
    "name": "home",
    "controllers": [homeController],
    "sub": {
      "/product": {
        "name": "productList",
        "beforeLeave": [doBeforeLeave], // callbacks which will run before switching to another route
        "controllers": [productController1, productController2],
        "beforeEnter": [doAfterEnter], // callbacks which will run after all controllers execute
        "data": {
          "custom": "data"
        }
      },
      "/product/list": {
        "redirect": "/product"
      },
      "/product/:id": {
        "name": "productDetail",
        "controllers": productDetailController
      },
      "/product/detail/:id": {
        "redirect": {
          "name": "productDetail"
        }
      },
      "/parent": {
        "forward": true,
        "controllers": parentController,
        "sub": {
          "/child": {
            "controllers": childController // will fired after parentController
          }
        }
      },
      "*": {
        "name": "pageNotFound",
        "controllers": []
      }
    }
  }
};
Router.mode('hashbang');
const configs = {
  mode: "hashbang", // default: hashbang
  beforeEachEnter: [],
  beforeEachLeave: []
};
const myRouter = new Router(routes, configs);
myRouter.start();