写本篇的目的是发现和总结迄今为止最适合自己或者前端的全栈开发框架,想要直接浏览结果请到滑动到最后观看。
自从逛推(x)以来,频频出现在我推荐中的,除了政治、颜色、就剩下设计和“独立开发”了,看着大佬们日进斗金,实现财富自由,心里是无比的羡慕。我总在想,不能打工一辈子吧,要么创个小团队利用信息差创创业,还是自己独立出来利用自己的业务时间做一些有意义的事件,不以赚钱为目的、但还是要赚钱。毕竟互联网的整个流程我都有涉及过(产品分析、原型设计、界面设计、前端开发、后端开发、部署运维、域名注册、支付系统、备案流程)。而独立开发的第一件事就是“工欲善其事,必先利其器”,我得选择好我的最好的最适合的开发技术栈。有人说,这有啥选的,跟着美国人走呗,美国人用啥你就用啥,事实上我也尝试过NextJs和NuxtJs。一言难尽,无论是拦截器,路由,还是SSR都还是有各种隐藏小问题。遇到很多问题还是需要花很多时间去查找问题,理解底层实现,况且技术在不断的持续更新,带来的学习成本和心智模式不断增加。生活的压力很大,我还是想要一个框架成熟、使用简单、社区强大的框架。
谈谈过去!不知偶一天,曾经大学的我,偶然间在酷安发现了一款叫FusionApp的东西,下载试玩了一下,直接惊艳我一整年,FusionApp在基于WebView和Lua语言的基础上,让一个从未学过编程的人,三分钟之内,开发好一个自己的App。自己加了群,认识到原作者“韩歌,韩歌还开发了一个木函,酷安下载量好几百万,据说凭借着个人开发,已经实现了财富自由(可能小几百万是有的),最开始的版本就是基于Lua+Android开发的,我开始也模仿着自己的偶像,梦想自己也能有一天写下一款App,实现财富自由,一夜暴富。这种感觉驱使着我开始学习,接触互联网。当然,或许是自己有点天赋,没学过的Lua代码偶尔也能看懂点,顺着代码你能发现语言的规律。再后来,Lua渐渐的满足不了我的需求了,因为我需要更美的界面,更强大的开源组件,慢慢的,我入坑学了Java,毕竟当时Java还是Android的官方开发语言,Java开始的时候其实挺难学的,我记得我学了两遍,就那种特别基础的部分,什么堆栈IO抽象实现。基础学完了,我开始加入到AndroLua社区(FusionApp核心实现),加了QQ群,还贡献了50块钱。后来自己也开始写一些开源的代码,想去带动社区的发展,也在群里发了不少的demo。后来自己也写了一个OpenLua,也开始有一群对你一键三连的一堆朋友。OpenLua可以理解为一个移动端的IDE,可以使用Lua语言开发AndroidApp,期间也学了不少反编译的知识,当然现在基本忘完了。后来,我也不知道为啥,可能是不感兴趣了,还是快要毕业了,慢慢的放弃了。也记得曾经有人说在手机上开发App是不是脑子不好使,我曾经以为他们脑子才不好使,现在看来,不是那么很极端的说,用手机开发App就是一个笑话。
学学设计?做好一个软件,不仅仅是代码、思想,还要有UX/UE(用户体验)、UI(视觉传达),那些年很多刚做短视频起步的,结合算法的智能推荐,总是被乔布斯和培训班洗脑,后来就自学了UI设计,开始就找一些系统的课程,打一些基础,例如达内教育,淘宝9.9百度网盘,学了一部分,感觉教学质量很一般,偏平面部分讲的还行,PS、AI(illustrator)。达内的UI部分简直烂成一坨,后来又找了一些高质量的课程,像素范儿等。整体来说还不错,但是前面讲的太假大空了,可能自己没有那方面天赋,无法理解,受限于自己的过往,自己也没有创造能力。后来深入职场深有体会,同理可得,我的临场反应能力和情商是偏低的,我能意识到自己哪方面不足,但好像大学之后,个人的性格好像就固定了,改变不了,我不知道是我的环境问题,还是坚持的不够久,总之,有待努力。
学学前端?学完了Android开发,学完了设计,你会发现,你还是造不出来一个像样的软件,一个人要做一个完整的软件,要设计,要前端,要后端,要运维。前端又不只仅仅是Android,还有IOS,Linux,浏览器等各种平台,只是这些就要学四到五门语言和相关生态,我那时就在期盼,世界上是否存在有一门语言能搞定软件开发的所有流程。那时候Flutter才刚出来,安装环境特别复杂,其实就是梯子代理的问题,国内的网络环境导致,再加上当时自己对梯子的把握度,上个Github都够呛,Flutter从安装到卸载。经过反复思考,所以后来我选择了WEB前端开发(HTML\CSS\JAVASCRIPT),毕竟一套代码能运行在三个端,而且语法逻辑都和我学过的Java及其相似,缺点就是要舍弃点性能。我也更喜欢即用即走的模式,不喜欢在手机上安装许许多多乱七八糟的软件。又占内存,还占空间,有些软件还是破解的,不是很安全。
学学后端?我选择了我已经学会的Java,又补习了几个月,从SSM、SpringBoot、SpringCloud。我也就会跟着视频敲敲代码,能写一些最基础的,能连接数据库写个增删改查,复杂的SQL我就不会了。而且Spring虽然设计很好,但是太重了,一个服务就要占用我500M以上的内存,大的时候会占用一个G,这对个人买的VPS或服务器上使用,就不能写多个项目了,所以后来我对Java做独立开发不是很报希望。面对解决方案,又了解了一部分云原生GO,RUST。都是很不错的语言,跨平台编译,原生,高并发,就是语言设计的感觉有点反人类,卒,放弃了,可能是我太垃圾了,但是语言设计出来,不就是为了简化程序员的工作吗。
学习全栈?回归到现在,我最熟悉的还是JavaScript,也现在最硅谷最流行的,例如NextJs,借助于ServerLess的发展,一度成为前端最强大的框架。NextJs和NuxtJs也学了,它们最开始是解决SSR的问题,后来基于ServerLess演变成全栈框架,总体还行,但是坑有点多,而且还需要自己查文档,网上的解决方案很少,文档又是全英文阅读有点困难,而且官方写的文档据说好像也一般(来自reddit),最受不了的是在我的32G内存、I9处理器的拯救者电脑上,启动或者编译一个NextJs应用或者界面,几乎需要一分钟,也就是,你改动一行代码,保存更新,需要一分钟后才看的到效果,用惯了Vite的我,是一定受不了的,网上评价编译速度好像也确实很慢,但是总有很多人在吹,在捧,梅西造神,硬吹?。Nuxt也很好,不巧的是Vue的生态嘛,就太小了,全世界无数强大的组件大部分都是基于React开发的,我不是说Vue不好,Vue很好,设计理念很先进,未来可期,可是老外都不用,中国人用的多,但是开源的东西太少了,无论如何我还是选择React的生态。
整合全栈!2024,是AI蓬勃发展的一年,一个偶然的时间点,我问AI,能不能将express和vue整合到一起,AI给出了最完美的答案,createViteServer函数加上pnpm包管理器,这个时候我才意识到利用pnpm workspace构建monorepo是多么强大,现在我一度认为它比maven更加强大。经过几天研究,我终于将世界上最强大的JavaScript后端框架Express和世界上最强大的前端框架React整合到一起了,Vue也整合了一遍。最后他们使用同一个仓库,同一个包管理器,同一个服务端口,同一个开发语言(TypeScript),同一个打包结果。利用workspace的分包策略还能将很多模块进行独立拆分解偶,这也是后端框架最常见的模块拆分思想。之前学Vue源码核心部分好像也用到了pnpm workspace,看来大家主力的选择都没错。最后可以很方便的将框架打包结果部署到dokploy上,dokploy是个开源的基于docker的容器部署工具,自带CICD,支持Github。非常现代,高效,强烈推荐给各位前端开发者,有VPS或服务器的就可以开始慢慢放弃Vercel了,Vercel虽然能白嫖,但是国内的访问速度太慢了,CloudFlare也有点慢。
到这里,我想JavaScript对我来说简直就是我的梦中情语,我用它在一个项目里同时写后端,写前端,写库,写任何东西,甚至完成独立开发。世界上哪里还有这么优雅的语言。
最后总结一下,这将是我认为的未来独立开发的最完美的全栈框架技术路线:
类别 | 推荐技术 | 备选方案 | 说明 |
---|
开发语言 | TypeScript | JavaScript | 提供类型安全,更好的开发体验 |
前端框架 | React | Vue 3 | React生态更丰富,Vue上手更容易 |
后端框架 | Koa | Express, NestJS | Koa轻量灵活,NestJS适合大型项目 |
包管理器 | pnpm | npm, yarn | 更快的安装速度,更好的磁盘空间利用,更好的模块管理 |
构建工具 | Vite | esbuild, Webpack | 开发体验好,热更新快 |
CSS方案 | Tailwind CSS | UnoCSS, Sass | 原子化CSS,开发效率高 |
React组件库 | shadcn/ui | Ant Design, MUI | 高度可定制,设计优雅 |
Vue组件库 | Element Plus | Naive UI, Vuetify | 社区活跃,组件丰富 |
React状态管理 | Zustand | Redux Toolkit, Jotai | 轻量简单,学习成本低 |
Vue状态管理 | Pinia | Vuex | Vue官方推荐,更现代的API |
数据库 | PostgreSQL | MySQL, MongoDB | 功能更强大,类型支持更好 |
ORM | Prisma | TypeORM, Sequelize | 类型安全,开发体验好 |
缓存 | Redis | Memcached | 功能丰富,使用广泛 |
对象存储 | MinIO | AWS S3, 阿里云OSS | 自托管对象存储解决方案 |
版本管理 | GitHub | Gitea, GitLab | 最流行的代码托管平台 |
代码规范 | ESLint + Prettier | StandardJS | 可定制性强,主流方案 |
Git工作流 | Husky + lint-staged | simple-git-hooks | 自动化代码检查和格式化 |
测试工具 | Vitest | Jest, Cypress | 更快的测试执行速度 |
部署方案 | Dokploy | Vercel,Railway, Netlify | 容器化 + Serverless部署 |
CI/CD | Dokploy | GitHub Actions,Jenkins, GitLab CI | 与Git完美集成 |
监控日志 | Sentry | ELK Stack, Loki | 错误追踪和性能监控 |