Conversation
|
Taro 是基于微信小程序规范做的一个解决方案,路由机制也是按微信小程序规范制定的,而 如果能帮助开发者提升开发效率或开发体验的手段当然是好的,但前提是不违反规范。按微信的路由规范其实是和 history 的 API 是有部分冲突的,例如 当然实现自己的路由系统也给了开发者更多的选择和控制权,同时也会增加额外的复杂度(包括对开发者使用的复杂度和对 Taro 实现的复杂度)。更重要的是,实现自己的路由系统也会和原生的路由系统冲突。不仅仅是在小程序的原生路由系统冲突,也会和 Taro 在 H5/RN 基于小程序规范的路由系统冲突。 |
|
提案中为了实现 history api, 难度确实有些大, 当初是想实现 history 中的效果. 经过尝试, 给 Current.router 属性定义 setter, 根据 getCurrentPages() 的前后差异推断等方式, 目前实现了以下效果: import appConfig from '@/app.config'
const history = createTaroHistory({ appConfig })
其中 history.listen 在点击"返回按钮"和使用 navigateBack 和 switchTab 在极端情况下分不清. 未实现(理论上可行):
|
|
绕过 History API, 改为直接仿照 history 模块实现类似效果. 如果 Current.router 在赋值时可以触发一个事件, 就可以避免对其进行 monkey patch. |
完整提案请看:
https://github.com/cncolder/taro-rfcs/blob/history-api/rfcs/0000-history-api.md