V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
IvanLi127
V2EX  ›  React

React 生态里的 umi.js,很好用吗?

  •  
  •   IvanLi127 ·
    IvanLi-CN · 2021-09-03 17:51:41 +08:00 · 7720 次点击
    这是一个创建于 938 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司目前有几个项目用到这个,都是 umi.js + antd,我对 umi 也不太熟悉。 现在我要为新项目搭建一个后台,但是我不太喜欢 umi,感觉对于这个项目来说有点复杂,而且想尽量用 Context 来共享数据。

    1. 对于一个比较小型的后台,有必要使用 umi 吗?
    2. 有什么比较好用的路由库推荐嘛?
    39 条回复    2021-11-22 00:15:20 +08:00
    xingguang
        1
    xingguang  
       2021-09-03 17:55:15 +08:00   ❤️ 1
    小型的后台其实没必要,自建路由也不是很费事,umi 主要是习惯之后出活比较快,缺点是更新换代还挺快的,有时候老点的东西就不支持了
    noe132
        2
    noe132  
       2021-09-03 18:02:55 +08:00   ❤️ 4
    我之前把项目的 umi 干掉了,所有东西直接用 webpack 。
    路由直接自己遍历目录动态生成代码。

    umijs 的文档太不专业了,就跟那种笔记技术博客一个水平。而且很多时候你光看 umi 文档还不够,你还得看他封装的东西的文档。到头来还不如自己搭建来的方便
    IvanLi127
        3
    IvanLi127  
    OP
       2021-09-03 18:08:41 +08:00
    @noe132 我也觉得文档有一些随意,而且这种好像是集大成的框架我有点不敢用。
    我对直接遍历目录生成路由比较感兴趣,不过没找到相关的轮子,大佬你这生成是在 babel 里实现的,还是 webpack ?我觉得这种方案比较舒服,我都差点想上 next.js 了
    jworg
        4
    jworg  
       2021-09-03 18:08:42 +08:00   ❤️ 3
    umi2 和 umi3,怎么说呢,现在网上还有很多教程是 2 的,拿来入门的表示被坑的不要不要的,还是 vite 简洁清楚。
    IvanLi127
        5
    IvanLi127  
    OP
       2021-09-03 18:17:54 +08:00
    @jworg 我发现有不少人拿 vite 和 umi 对比,我感觉在功能上 umi ≈ vite + 应用框架的样子?
    vite 感觉不错,不过之前没用过,这次不敢在公司项目上用。vite 会有什么坑吗?
    basefas
        6
    basefas  
       2021-09-03 18:21:41 +08:00   ❤️ 2
    同不喜欢 umi,连 antd pro 都不用,直接 cra+antd 的 prolayout,剩下的自己撸
    发下自己写的
    https://github.com/basefas/react-antd-admin
    forsigner
        7
    forsigner  
       2021-09-03 18:23:04 +08:00   ❤️ 1
    曾经用了好长一段时间 umi,后面换到 Next.js 了
    Cbdy
        8
    Cbdy  
       2021-09-03 18:25:34 +08:00 via Android
    不建议用,另外这是阿里出品
    IvanLi127
        9
    IvanLi127  
    OP
       2021-09-03 18:27:20 +08:00
    @basefas 加个星星回去看看
    vision1900
        10
    vision1900  
       2021-09-03 18:27:31 +08:00   ❤️ 1
    珍爱生命,远离 Umi 和 Antd
    IvanLi127
        11
    IvanLi127  
    OP
       2021-09-03 18:29:37 +08:00
    @Cbdy 我当时看到有阿里的影子就很慌。
    我觉得这方面,阿里家的就 antd 能用了,哈哈(如果不去回忆按钮被狗啃过的那件事)。
    flybluewolf
        12
    flybluewolf  
       2021-09-03 18:33:37 +08:00
    noe132
        13
    noe132  
       2021-09-03 18:40:49 +08:00   ❤️ 1
    不需要 webpack 也不需要 babel 。
    直接遍历目录,生成一个树结构,然后根据树结构生成一个 route.ts 里面包括所有的页面的动态 import,然后在 App.tsx 里递归生成对应的 路由元素。
    整个解析的代码也就 100 多行。最后就是开发时开一个 watch 服务,检测到文件变化就重新生成一遍就行
    https://pastebin.com/bALG20WF
    basefas
        14
    basefas  
       2021-09-03 18:44:41 +08:00 via iPhone
    @IvanLi127 还有配合写的 Go 后端哈
    rockjike
        15
    rockjike  
       2021-09-03 18:46:47 +08:00
    @noe132 直接遍历目录,生成一个树结构,然后根据树结构生成一个 route.ts 无法支持路由参数灵活的场景, 一般都以配置化为主, 小型项目走约定式路由
    noe132
        16
    noe132  
       2021-09-03 18:53:24 +08:00
    @rockjike 自己生成的好处是有啥需求可以直接改,想要啥结构都不是问题。用这种文档差劲的库,文档还没搞清楚,我自己写代码早就写完了。
    x940727
        17
    x940727  
       2021-09-03 18:56:01 +08:00
    @vision1900 远离 Antd 没问题,React 还有啥好的 UI 框架吗?
    IvanLi127
        18
    IvanLi127  
    OP
       2021-09-03 19:09:46 +08:00
    @noe132 到时候我也试试,不过另启 watch 服务会不会导致多构建一次?
    jworg
        19
    jworg  
       2021-09-03 19:20:20 +08:00
    @IvanLi127 我只是个人用用,写写自己的网页,感觉还没遇到过坑,关键词都能很快搜到解决方法,反倒是 umi 总是搜着搜着发现都是 umi2 的配置 /解决方式。
    yikyo
        20
    yikyo  
       2021-09-03 20:07:12 +08:00   ❤️ 1
    管理后台一般不需要状态管理,hooks + antd procomponents 足够了,开发又快。
    xlsepiphone
        21
    xlsepiphone  
       2021-09-03 20:14:44 +08:00   ❤️ 1
    Vite+TailwindCSS 一把梭,ant design 太重了,umi 个人觉得文档太简略了,封装过头.
    tuomasi
        23
    tuomasi  
       2021-09-04 05:15:01 +08:00
    阿里出品,必属"精品"
    dream4ever
        24
    dream4ever  
       2021-09-04 11:31:32 +08:00
    @noe132 这代码看着 真舒服,好评。
    JerryCha
        25
    JerryCha  
       2021-09-04 22:20:53 +08:00
    小心阿里
    Rocketer
        26
    Rocketer  
       2021-09-05 03:08:22 +08:00   ❤️ 1
    看见很多说自己搭的,我的经验是自己搭还不如用 umi 这种第三方的脚手架呢,至少大家有个统一的文档可以看。

    自己搭的架子,文档 90%比 umi 还差,除非这项目完全是你自己做,否则会给其他人带来更痛苦的困扰。

    当然我也不用 umi 了,因为阿里的开源项目太个人。之前有个项目,umi 升级后发现文档里只有 yarn 和 ts,而不提供 npm 和 js 的说明了。这是逼着我团队里所有人都学 yarn 和 ts 吗?我知道他一定想说 yarn 和 ts 好,但谁规定好东西一定要学的?又不是个人单打独斗,能带着一群新手出活,才是团队的用法。

    还是尽量用 cra 这种用户量大的吧,至少有问题的时候容易搜到答案
    jomsou
        27
    jomsou  
       2021-09-05 17:14:59 +08:00 via iPhone   ❤️ 1
    感觉 umi 对于一般的需求太重了,还有就是 vite 是真香,自己在重构的时候写了个模版,https://github.com/zenquan/react-admin-template.git

    路由库 react-router 算是标配吧
    vision1900
        28
    vision1900  
       2021-09-06 00:41:24 +08:00
    @x940727 Chakra
    ccyu220
        29
    ccyu220  
       2021-09-06 08:28:18 +08:00
    上部分认同,但是 yarn 和 ts 这段不认同。
    fernandoxu
        30
    fernandoxu  
       2021-09-06 10:38:12 +08:00
    出活快,但提供的很多方案并不优秀
    noobma
        31
    noobma  
       2021-09-06 11:48:22 +08:00
    我自己被用过 rax 初始化项目、接手过别人的 umi 项目,都碰到过一个问题,比如 package.json 中 rax 或者 umi 的版本号是 ^1.1.0 这样的,但是过了一段时间他们发版本后,ci 上构建或者把 node_modules 删掉后重装,就会遇到打包的时候报错,项目跑不起来的问题,还要自己去把 "^" 删掉写死版本重新安装才行,这种不是主版本号的升级会有这种问题,让人很无语😓

    所以我如果自己能选择的话,会尽量不用这 2 个😓
    asvencoop
        32
    asvencoop  
       2021-09-06 12:16:02 +08:00 via Android   ❤️ 1
    公司一直用 antd,在 antd 3.12.4 这个基础上拉下来自己修改了一些组件,已经开发的项目 50+以上。
    干活很快,非常方便,个人觉得 ant design 是我用过最好的 ui 框架。

    我不是阿里人,但是那些讽刺 ant design 的我看不下去,你真的用过吗? 做了几个项目?
    jomsou
        33
    jomsou  
       2021-09-06 12:37:51 +08:00
    @asvencoop antd 确实真的很全很好用,react 后台默认 antd,vue 默认 element
    strangeFish
        34
    strangeFish  
       2021-09-06 15:36:20 +08:00
    我一开始也挺抗拒 umi 的,但是后面用久了,还是比自己搭香,除非是高度定制化的项目。
    另外上面那个版本变动导致翻车的,你们不上传 package.lock.json 的吗?跑 npm ci 是读 lock 的。
    vision1900
        35
    vision1900  
       2021-09-06 18:44:55 +08:00
    @asvencoop 只要稍稍做过一点 UI 定制化就知道 Antd 有多难用,尝试一下 Chakra 就知道 Antd 是多么原始
    nanxiaobei
        36
    nanxiaobei  
       2021-10-31 04:01:24 +08:00
    cra + antd
    nanxiaobei
        37
    nanxiaobei  
       2021-10-31 04:02:44 +08:00
    umi 这玩意太丑太重了,完全没必要。

    出了问题不只得研究自己代码了,还得研究 umi
    IvanLi127
        38
    IvanLi127  
    OP
       2021-10-31 09:24:47 +08:00 via Android
    @nanxiaobei 认同,已经抛弃 umi 了
    whevether
        39
    whevether  
       2021-11-22 00:15:20 +08:00
    @IvanLi127 现在 react-router v6 不在需要 umi 那种路由写法。也能跟 vue angular 之类的写 routes 或组件写法.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2780 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 11:51 · PVG 19:51 · LAX 04:51 · JFK 07:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.