zhangyuang / ssr

A most advanced ssr framework support React17/React18/Vue2/Vue3 on Earth that implemented serverless-side render specification.
http://doc.ssr-fc.com/
MIT License
2.61k stars 284 forks source link

期望pages下约定式路由匹配规则和controller保持一致 #83

Closed 160905 closed 3 years ago

160905 commented 3 years ago

这是midway已有的controller匹配规则 https://www.midwayjs.org/doc/guide/controller#%E4%BC%98%E5%85%88%E7%BA%A7

如果有更好的解决方案:辛苦提一共一份示例代码

ssr-app框架更加健壮

zhangyuang commented 3 years ago

描述清楚你的需求,约定式路由匹配规则优先级是不可能跟 controller 一样的,这完全是两个独立的功能。 1、约定式路由我看了一圈所有框架都不支持优先级设置,如果你看到了可以发链接,虽然我觉得这个功能跟子路由一样完全属于非必要功能 2、声明式路由你自己通过顺序控制优先级

最后我再说一遍,任何功能在业务代码里都能实现。不要什么都指望框架帮你做,这是没有任何必要的。框架不做就不会写代码了吗。 你完全可以在渲染具体的组件之前,在 app.tsx 里面做判断逻辑 push 到具体的页面,或者直接在具体的页面组件里面根据逻辑判断结果去决定渲染哪个组件。。搞清楚组件的本质就是抽象好吗

要是还是不会写,就给具体代码,描述清楚需求我来写示例。。。

160905 commented 3 years ago

域名下跟路由/:username是用户最终生成的分享链接,所以不希望再添加其他路由前缀,在这基础上其他绝对路由匹配优先级要高于这个动态匹配用户的路由。这就是我的需求。所以这个路由重新push应该是在声明式的路由里。如果不写路由文件能解决这个问题,辛苦提供示例代码。

zhangyuang commented 3 years ago

并没有听懂你的需求。。。

zhangyuang commented 3 years ago

优先级你完全可以自己控制啊。。这到底有什么难的。。。现在渲染的是哪个组件你直接去哪个组件里判断应该渲染哪个具体的你希望的组件不就行了

160905 commented 3 years ago

/:username 是动态的路由 现在访问 /login等其他固定的一级路由页面会在 /:username 的render$username.tsx和fetch$username 页面执行渲染 pages/login/render.tsx 不会被匹配

zhangyuang commented 3 years ago

那你就在 username 组件自己去判断当前到底是应该渲染 login 还是 username 自身啊。。。很难理解吗。。。代码全都在你那。你想做什么判断逻辑,得到什么结果去渲染哪个组件全都是你自己可以控制

160905 commented 3 years ago

我知道这样可以实现,但是约定式的写法就不严谨啊,已经存在的路由还要再次被动态匹配到

zhangyuang commented 3 years ago

不知道你到底想说啥。。。两行代码就能解决的问题扯这么多的功夫早写完了。 另外我看了umi和next的约定式路由也并不支持优先级设置。退一步讲就算它们支持我也不觉得这是必要的功能。。

160905 commented 3 years ago

好吧,重不重要我说了也不算,感谢支持。