在React社区里,各种轮子可谓是百花齐放,让人眼花缭乱,本篇文章就准备好好聊聊为啥会出现这样的情景,废话不多说,开搞!
React社区现状
我们知道React本身只是一个 用于构建用户界面的JavaScript库,它只承担 界面的渲染,但是一个应用程序的运行除了界面本身的渲染,还涉及到 路由管理、状态管理、样式管理 等功能,而这些功能React官方是没有提供的,而是需要借助社区中的其他库来完成
这种情况就直接导致了在做一个新项目的技术选型时,难度是比较大的,因为不仅要考虑各个社区库本身的稳定性以及性能,还需要考虑选择出来的社区库之间是否存在冲突,兼容性如何,这一过程无疑是非常麻烦的
Vue社区现状
与React相反,如果我们采用Vue来开发项目,我们完全没有上述技术选型的困扰,因为官方已经帮我们打包好了,即所谓的“全家桶”,列举如下
- 路由:vue-router
- 状态管理:vuex
- 样式隔离:scoped
- 服务端渲染:nuxt
我们可以使用上述官方提供的全家桶快速搭建新项目,体验丝滑般的感受
React里的哲学
为啥React不能像Vue一样,搞一个官方全家桶呢?其实是因为React官方本身认为React只是一个 构建界面ui 的库,因此需要遵循 单一职责原则
官方认为他们只需要维护核心功能,而其余的功能都应该交给社区来完成,是的,这很React
因此就造成了React社区中各种库满天飞的情形,我认为这是一把双刃剑,好的一面是让React社区欣欣向荣,坏的一面是给技术选型造成了巨大的困难。这样最终是好是坏,就需要我们每个人自己去斟酌了
结语
我想,爱React的人,爱它的“自由不羁”,不爱它的人,不爱它的“群魔乱舞”,这不矛盾,反而更体现出了React的魅力,好啦,就写到这里啦,over!