介绍
microprogram 的来由
由于接触小程序已经相对较晚了,所以好听、好记的 scope 基本都已经被占用了,外加原本不想局限在某一种小程序之上,所以取了抖音小程序 micro-app 中的 micro,又取了微信小程序 miniprogram 中的 program,组成了现在的 microprogram 。
为什么封装router
当页面之间想传大对象时,URL过长导致跳转失败。
在页面路由跳转时,在业务代码中我们通常需要一些标识来处理用户的下一步行为。比如,某些页面需要获得登录授权后才能访问,在访问这种类型的页面时,检测是否已登录授权,如没有则直接跳转至登录页
小程序的页面栈受限,无脑使用类似于
router.push的方法会得到警告以至于页面跳转失败当执行
back、switchTab也需要传参。完美路由栈的呈现,需要开发者时刻清楚什么时候用
replace、push、switchTab。本人所学皆来自于社区,遂将本人所学与所需整理,回报于社区
能带来什么
提供
beforeEach与afterEach两个全局路由守卫,可在路由跳转前后进行一系列操作,如路由跳转前进行鉴权。一个聪明的
push策略,让开发者无需考虑什么时候需要 back,什么时候需要 replace。页面之间传参时,
router内部通过 storage 进行存储,解决因传输大对象导致的 URL 过长问题、调用非官方支持的传参跳转方法(如:switchTab、back)的传参问题。结合
@microprogram/plugin-router的使用,告别每次修改routes时,还需要配置一次app.json中pages与subPackages的烦恼,它会为你自动填充app.json,你只需要关心router中的routes即可。
鸣谢
microprogram-router 思想借鉴于 vue-router 4.0 以及解析 url 参数的源码也来自于 vue-router 4.0,感谢 vuejs 团队。