Umi: Roadmap

Created on 14 Jun 2018  ·  20Comments  ·  Source: umijs/umi

2.1

  • [ ] 完善 pwa 插件,插入 meta 信息,缓存 html 等
  • [ ] 完善 umi generate 命令, 包括覆盖 antd-pro-cli 的场景
  • [x] 完善出错信息
  • [x] 运行时插件

2.x

  • [ ] umi ui, umijs/umi#272
  • [ ] 物料市场, #1350
  • [x] SSR & prerender
  • [x] 英文版文档

3.0

  • [ ] 支持小程序
  • [ ] config/config.js 的路径从 config/ 开始找,#1208

2.0 (Published)

计划 8 月底。

大图

相关

  • sorrycc/ama#3
  • sorrycc/tmp#38
  • sorrycc/todos#231
type(discussion)

Most helpful comment

@SHITianhao umi@2 发布(预计 8 月底)之后吧。

All 20 comments

加油

备份下上周周报里的内容。

花了一些时间整理 umi@2 的细化方案。

为什么要 umi@2 ?

  • webpack@4, less@3, postcss@6 等重要依赖更新,这些重要的基础设施更新势必会带来一些 break change
  • umi@1 业务债umi@1 设计初期是为云凤蝶和 h5 应用服务的,为支持云凤蝶的发布在内部做了不少事情,以及内置了不少 h5 相关的优化,而这些并非 umi 的核心功能,并且内置的功能(比如 hd 方案)不能满足所有人的需求,也有些配置项会造成使用上的困扰,所以通过插件的方式进行扩展会比较合适
  • 默认配置、优化和插件在设计上的问题,比如 umi@1 做了很多默认优化,按需加载、按需编译、pwa、dll、hard-source-webpack-plugin 等等,这些是最佳实践,但对于初学者并不友好,从而引入了很多问题反馈,umi@2 会关闭很多默认优化,按需开启,对入门用户更友好
  • 时间上的考虑,希望能赶在 bigfish@2 正式发布前,把该升的该改的都做了

umi@2 做啥?

  • 精简内核,在明确 umi 的核心是啥之后,做这点很容易,同时考虑在之后支持 vue、rn 和 小程序
  • 改进插件体系,更多约束,明确做什么不做什么
  • 依赖更新webpack@4
  • 重构静态 HTML 生成,更灵活的 HTML 生成方式,next.js 新版和 vuepress 都是如此
  • SSR,和上一个点一起做,提升静态站点(生成 HTML)时的渲染速度,以及支持 SEO
  • 配置收敛和 umi-plugin-react
  • umi ui,提供 ui 辅助项目管理、插件管理、配置管理、路由管理、dva 的 model/service/connect/selector、mock 等

更多详见 [email protected] milestone 和 umi roadmap

备份下上周周报里的内容。

本周有梳理 umi 的架构图,按 2.0 的规划画的,所以点暂时没有实现。其中物料市场的部分 bigfish 周会上也有讨论,我细化下自己的想法。

先设想一个具体的 user case。

  1. 接到需要,要做一个首页
  2. 看物料,觉得 https://alibaba.github.io/ice/block/excellent-home-page 不错
  3. 在 umi 项目里执行 umi page https://alibaba.github.io/ice/block/excellent-home-page,下载完成后后,访问 http://localhost:8000/excellent-home-page 能看到效果
  4. 修改细节
  5. 需求完成

一些细节的点。

  1. 约定要简单才容易做成,即任何返回 react component 的文件都可以是物料,然后不关心内部怎么组织
  2. 为什么是 umi 来做?因为 umi 的约定式路由,所以 1) 是我们实现简单,因为 pages 下的文件即路由;2) 是物料可以具备数据流能力,dva model 也可通过目录方式做约定
  3. 物料的来源?由于第一点,所以可支持 umi 官方维护的物料市场、antd-pro、github 仓库、ice
  4. umi 提供 umi page 命令来做物料的下载,上传和更新可先走 github PR

备份下周报里关于插件的内容。

  1. 插件本质上上就是挖坑和填坑,通常是内部实现里挖坑交给插件来填,然后插件也可以再挖坑交给其他插件来填,这样插件之间就有了依赖
  2. 如何优雅的填坑需要再好好设计下,主要是要设限,umi@1 里暴露很多底层修改的方法,容易冲突和出问题,umi@2 会取消掉,代替之的是一些设计好的高阶方法和事件
  3. 插件需要能扩展命令行,umi 的 build、dev 和 test 就是由此实现
  4. 插件需要区分编译时和运行时,目前只支持编译时,运行时也是通过编译时的方法提供,可参看 gastby 提供多种环境(编译时和运行时)的扩展
  5. 插件需要支持生成额外的文件
  6. 插件要能提供 ui 扩展能力,扩展 umi ui 提供的 ui 辅助

相关: umijs/umi#710

物料市场那个功能十分期待~~飞冰也让人大开眼界。

任何返回 react component 的文件都可以是物料 ,,.......,是物料可以具备数据流能力

物料可以具备数据流能力,我可以理解为物料里可以用到 dva 吗??这个 Component 不像 antd 提供的纯组件,内部是有业务处理的。umi 怎么处理这个??还是 umi 只是将物料的代码拷贝到当前工程下面??

通过 umi new 命令提供脚手架

这个类似vue-cli的一样的全局cli+ 插件的generator 来做还是其他方式? 我看2.0已经有registerCommand的支持,如果都是插件的方式,那么业务线后续统一配合umi cli 来做脚手架模板

这个类似vue-cli的一样的全局cli+ 插件的generator 来做还是其他方式?

@ishenli cli + 插件的 generator 吧。

请问英文版文档有没有具体时间计划?

@SHITianhao umi@2 发布(预计 8 月底)之后吧。

就喜欢这种每天发一个版本,撸代码就应该是这种态度。

备份下周报里关于支持组件开发的内容。

bigfish 周会上有讨论组件开发工具,结合大家的讨论,这里梳理下我的想法。

  • 有点类似之前的 spm doc,spm deprecated 之后还有不少同学在用 spm doc,以及日常维护 umi 和 roadhog 时,也有不少同学咨询是否支持组件开发,所以这个功能的必要性应该是没问题的
  • 组件开发应该包含本地开发、单测、发布、文档、文档发布
  • 文档可选方案有 storybookmdx,以及 mdx 的上层封装 doczx0,还可以结合 react-live 实现网页上编辑即生效,甚至可以介入 codesandboxstackblitz,还可以考虑和 riddle 打通
  • 实现上,umi 可以通过插件封装 umi storybookumi mdx 命令,然后 bigfish 选择一个实现 bigfish doc
  • 关于文档发布,umi 需提供一键发布到 gh-pages 或者 now 等平台,bigfish @水鱼 有考虑做一个 bigfish.alipay.com/components,我理解为组件市场,个人觉得还是有一定维护成本的,参考之前的 spmjs.io
  • 组件的打包在 umi 层做,基于 rollup,考虑 es modules、mjs、umd、@babel/runtime、web component 等
  • 相比组件市场,我觉得目前来说,物料市场的价值会更大,可以先投精力做物料市场

参考:

物料市场怎么一个玩法,数据流会加入吗?

@kaoding 会,具体方案还没定。

@sorrycc 你好,2.x版的 umi 计划支持 ReactNative 吗?现在 ReactNative 缺乏这样的解决方案

@tomgao365 没有,RN 不好支持,他不走 webpack,很多功能会失效。

Babel 7 Released

怎么做物料市场,能给一个思路不?

@sorrycc umi 的 SSR 是否可以参考这个类 Next 框架? Serlina: 渐进式的 React 服务器渲染框架

在 #1365 继续跟进。

小程序的支持不在计划了吗?

Was this page helpful?
0 / 5 - 0 ratings

Related issues

onReadyL picture onReadyL  ·  3Comments

sorrycc picture sorrycc  ·  4Comments

kitebear picture kitebear  ·  3Comments

Artoria-0x04 picture Artoria-0x04  ·  3Comments

afc163 picture afc163  ·  3Comments