不好意思,刚发现这个 issue 还在回复,已经歪楼了……
@dongnaebi @vfasky 你们两个的 router 和 navigator 我都看了一下,都挺不错的。实现不一样,但是思路都差不多,是想实现在 web 上保持 spa 或者 vue-router 那种体验,然后在 native 上保持多页特性。(不知道我有没有理解错)
要想实现这个效果的话,还得解决一些工程上的问题。native 上的多页是对应了多个 url 的,把 hash 转成静态的 url,就得打包多个 js bundle 文件。如果路由里含有模式(/:id(\\d+))匹配难度就很大,在 native 上写一份 bundleMap 是不是意味着 native 上又有了一套 router 机制 ……?而且路由之间传参也是个问题。
其实实现 router 还要解决一个问题就是管理数据和作用域。spa 里上一个视图可以向下一个视图传参,而且每个页面都可能会修改全局状态的;然而在 native 上,多个页面的创建销毁调用的是 native 接口,js 层面很难传参,而且数据状态是不共享的。为了避免内存泄露,还专门限制了全局变量,多页面之间不会共享状态的。
如果要保持 native 的特性,就得在 web 上限制多个页面之间能共享状态,不然和 native 上的特性就不一致了。如果 web 上也不能共享状态的话,spa 就鸡肋了。