在使用模块化的方式来配置路由结构的时候,发现一个问题:
业务逻辑(页面的从属关系)和路由结构(影响组件在哪个router-view中渲染)之间有些不匹配.
下面将以segmentfault的移动app应用作为例子来描述这个问题(各位应该都有安装这个app吧).
在app中,底部有tab-bar按钮;点击"我的"->"最新动态",将看到"最新动态"的内容列表.
这个内容列表是占全屏的,即底部的tab-bar没有了.
根据上述的业务,配置以下路径:
从业务逻辑上来讲,"最新动态"这个页面应该是属于"我的"这个页面的子页面,所以它的路径为path:'/account/news'
.
但是在页面展示上,"最新动态"页面是占全屏的,可以理解为一个新的页面,"news.vue"这个组件必须在"app.vue"中的"router-view"中渲染.因此,在路由结构上,"News"要跟"Main"同级,而不是在"Account"的"children"中作为子路由.
引申的问题:
如果是把所有的路由配置统一写在"/router/index.js"中,上述的问题其实不大,但是如果使用模块化的思想,强调父子组件的层级关系,就会出现组件渲染的位置不正确的问题.
以下是在使用模块化的路由配置:
从上图可以看出,"News"这个组件在作为"Account"子路由时,不会被渲染在"app.vue"中的"router-view"中.
以上的问题其实还是比较小的,在实际开发过程中,业务逻辑页面会非常多,层级关系又很死,如果不用模块化来整理,会很难受.
不知道各位大大有没有遇到相似的问题,是怎么处理的?
慕桂英4014372
相关分类