React 生态里的 umi.js,很好用吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
IvanLi127
V2EX    React

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

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

    公司目前有几个项目用到这个,都是 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     Solana     2558 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 59ms UTC 14:58 PVG 22:58 LAX 06:58 JFK 09:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86