Separate meta from routes
🤔 这个变动的性质是?/ What is the nature of this change?
- [ ] 新特性提交 / New feature
- [ ] bug 修复 / Fix bug
- [ ] 样式优化 / Style optimization
- [ ] 代码风格优化 / Code style optimization
- [x] 性能优化 / Performance optimization
- [ ] 构建优化 / Build optimization
- [ ] 网站、文档、Demo 改进 / Website, documentation, demo improvements
- [ ] 重构代码或样式 / Refactor code or style
- [ ] 测试相关 / Test related
- [ ] 其他 / Other
🔗 相关 Issue / Related Issue
💡 需求背景和解决方案 / Background or solution
dumi 构建需要的 meta 信息,保存在 routes 中,导致 routes 对象巨大,特别是当开启 ssr 时,routes 会有两个一摸一样的数据,分别存于前端和服务端 js 中,导致整体项目大小增加不少。
现将 meta 数据,从 routes 中抽离出来放到 .umi/dumi/metas.json 中。
组件级别可以通过 import metas from '@@/dumi/metas'; 读取。
umi 插件中可以通过 const metas = await api!.getMetas(); 读取。
dumi 主题中,依旧使用 useCurrentRouteMeta 读取。
📝 更新日志 / Changelog
| Language | Changelog |
|---|---|
| 🇺🇸 English | |
| 🇨🇳 Chinese |
🎊 PR Preview 6cc42b4bf8725a9c944c69adf49bd122be5bd073 has been successfully built and deployed to https://umijs-dumi-preview-pr-568.surge.sh
:clock1: Build time: 217.737s
🤖 By surge-preview
🎊 PR Preview 6cc42b4bf8725a9c944c69adf49bd122be5bd073 has been successfully built and deployed to https://umijs-dumi-preview-mobile-pr-568.surge.sh
:clock1: Build time: 177.513s
🤖 By surge-preview
提个思路看看是不是更好:
features/routes.ts做两件事: a. 通过api.modifyRoutes(umi 最后一个处理路由的钩子),基于原 routes 返回一个新的、不带 meta 的 routes,同时把带 meta 的原始 routes 存下来 b. 注册dumi.getMetaRouteskey(类似dumi.getRootRoute),用于获取带 meta 的 routesfeatures/config.ts里通过dumi.getMetaRoutes拿路由,再用来生成导航、菜单等等
好处是大部分原有逻辑都不用改,特殊路径少好写用例
🎊 PR Preview has been successfully built and deployed to https://dumi-preview-pr-568.surge.sh
🎊 PR Mobile Preview has been successfully built and deployed to https://dumi-mobile-preview-pr-568.surge.sh
❤️ 感谢贡献,dumi v1 不再更新,PR 将会关闭;dumi v2 已发布,欢迎继续参与 dumi 的建设,https://d.umijs.org/