最近准备搞个开源后台管理系统,技术栈为Vite+React+TS+Axios+Tailwind+React Router+AntDesign,简单的说下为啥选择这些个技术哈
-
TypeScript
现在都2022年了,我实在不想回答这个问题。不过还是要回答一下,如果你的项目代码量很小,只使用JavaScript当然可以很快速完成第一个版本,但是代码量稍微多了以后,很容易就出现各种细节上的bug,如果和别人一起合作,你根本就想不到别人会把某个变量在某个地方修改成某个类型,比如let name = “张三”;很快另一个地方就是name = new Date();因为没有约束性,所以没有预期性,代码检查工具也发现不了异常,因为它压根就没违反语法规则啊!使用TypeScript后,有了约束性,自然就有了约束性,不会因为小小的bug浪费大大的时间,另外加上TeypScript的代码提示使开发效率更上一层楼,妈妈再也不用担心我写错字段了。从实际情况看,我们实践了一年的TypeScript,只是在使用初期确实有一定的学习成本,开发时间稍微加长了一点点。当熟悉TypeScript之后,开发效率是坐火箭式提升。我求求你了,快用TypeScript吧,真香!
-
React
一开始我们是使用Vue2.6的,它最大的问题就是和TypeScript结合的非常之差劲,当我们决定上TypeScript时,首先就排除了Vue2.6。毫无疑问,Angular才是TypeScript的亲兄弟,不过Angular找不到工作呀!只剩下Vue3和React可选了,当时Vue3刚刚发布,稳定性还不好说,另外Vue入门过于简单,我担心以后招Vue开发人员,很容易招到笨蛋,事实确实如此,Vue开发者里的笨蛋比React开发者里的笨蛋要多很多。而且fiber和hooks确实是很漂亮的设计,很难不被它吸引,对吗?
-
Vite
webpack启动太慢了,我们受不了每次启动的时候都要等那么两分钟,so,先将webpack换成了snowpack,后来snowpack作者鸽了,遂转Vite。
-
Tailwind
直接将我原来的总结搬过来。注意tailwind有一定的学习成本,懒得学的我劝你早点回家生孩子种地
css冲突与重复问题
react中没有vue中scope的概念,由此可能会导致css冲突,解决css冲突有两种方案,
- 使用css module方式限制其生效范围,由此带来的小问题是,需要额外引入type插件、打包后的css文件可能会增加,像其他的css in js等方案和css module归于一类
- 减少抽象,使用tailwind大量减少css抽象,即可大幅度降低css冲突的可能性,同时减小css文件体积,并且可以更好的和设计师配合,由此带来的问题是className的增多,至于是降低了可读性还是增加了可读性,还不好下定论
实际DOM层级问题
类似dawer和modal组件会依附在body上,这时候你用css module也好,scope也好,其实都解决不了,因为它的DOM层级并没有和css选择器对应上。使用tailwind直接在DOM上直接添加样式会更简单。
组件提取问题
提取组件时,往往需要将其附带的css一起提取出去,这个css可能在别的地方使用,因此给提取组件带来了额外的工作量。在这个问题上,tailwind相对css module更有优势
-
为什么不需要Redux
关于这个我实在是不吐不快!一个后台管理系统,需要Redux做什么呢?本质上它就是一个大号的全局变量,加了个更新的机制(虽然我不懂)。如果不是多组件交互特别复杂的情况,你需要这玩意吗?还是说你看别人用你也用?