看了下
react.dev 网站,不过已经忘记之前的 beta 版推荐的起始工具是啥了。
个人一点看法:
CRA 确实太过时了,但是确实又有人真的在用,尤其是 Junior 刚刚学完课程那种,我甚至见过公司项目有 CRA 创建的连 eject 都没做,可以说是基本没有任何优化了。如果从这个角度来说,NextJs 虽然看着很重型,但是 NextJs 很多优化是 default 就启用的,例如拆散打包,图片优化,SSR oob 体验这比 CRA 那种看似为了照顾新人就隐藏大多核心内容,最终导致其实很多人不敢去探究底层和优化完全是两条相反的路径。
而且就像前面几楼说的 Nextjs 如果你不去管 Api route ,SSR 这些后端东西,只用 Page 下面的东西,它依然不过就是个 React + React Router 的东西,重吗?并不重。
CRA 另一个关键的问题是它的设计其实并不代表 React 的真正最优结构,尤其是初始空白 Html 文档的纯 Clien render 。Dan Abramov 自己几次三番都站出来说他建议新人不要用这个 CRA ,他的原话就是 "Every truly efficient React setup was custom, different, and unachievable with Create React App." Link:
https://github.com/reactjs/react.dev/pull/5487#issuecomment-1409720741最后再说回来 NextJs ,它是 Framework ,不是 UI library ,而一个 Framework 必然需要支持大量的应用场景,这就包括很多功能其实大部分人和公司确实用不上。但是如果它恰好符合某些公司的需求,那就是他们用这个 framework 的根本原因。
最后再说 SSR ,与其说 SSR 是为了解决性能问题( cache )不如说是为了搜索和分享 optimization ,因为如果是传统 client render 我们的 html 就是个空架子,而我们的内容全靠 js 执行后填充才有,而如果是搜索爬虫,他们是不会去执行 js ,所以导致你的 page rank 就很低,类似的,如果你用 fb ,tw ,微信分享也是,纯 client render 就没有那个预览图。因为这些分享的时候也是抓个网页回来截图,发现对面只是个空 html 文件,自然就什么都没有。