各位go学长、va学弟、rust教徒、js孝子、python嘉豪、cpp大佬...,计算机和医学、土木机械、生化环材牢九门专业学子(如有冒犯纯属巧合)聊点实在的。考虑到互联网这行懂得都懂啊,加上AI的冲击。我选技术栈已经没有什么顾虑了。聊一下这一年来新选的技术栈,顺便做个总结和我国庆要出课程的先导课。废话不多说,开始。
网页三件套HTML+CSS+JS,这三个东西就是1、HTM学懂标签有什么参数、对应什么元素、语义化L2、CSS学懂选择器、有什么样式、网格、弹性盒子、响应式布局。3、js,这东西我要好好聊了。你要学懂他的变量类型、函数、控制语句、原型和类和错误处理。但你以为这就完了吗,nonono。你还要理解es6的异步编程promise、模块,甚至还有浏览器和Nodejs的各种API。This指向背背面试八股差不多得了,没人会在工作中写一些非常Fancy的东西,这玩意就是JS的深水区。
作为一个1995年出的弱类型和动态类型的函数式编程语言,debuff拉满了。那个残废的类型系统,会在你运行的时候不知道怎么给你来个大的。如今可以构建许多应用的老登,是否会想起过去那个只是在网页写脚本的玩具。虽然它作为一个算什么的语言,它足够简单。但是它的历史包袱太重了,诸如:1、浏览器和 Node 虽都叫 JS,却像两个生态,模块系统、可用能力、心智模型都不一样。结果同一门语言,写前端、后端、工具像在切换几套语言。我的刘工就跟我吐槽过这一点。如果很幸运,你是一个TS全栈,那真是有福了(包括我)。2、JS 默认单线程,多线程不是没有,但基本当没有。隔离重、通信烦、生态不友好,要是没有异步,前端就永远只配叫"切图崽"。3、,要知道这个是95年的老东西,想去吸收go、rust这些新生代语言的优点,还得考虑各章历史包袱。等等若至东西,其他语言看了不笑的你是这个。
Typescript,Github登顶第一的含金量无需多言,和Python并肩AI时代双子星。给js补全了拼图:类型系统,学懂类型、注解、断言、泛型、接口和类之类的基本毕业了。AI老喜欢这个了(我也喜欢),起码不用猜某个变量之前埋了什么雷。用GO重写的TS7,几乎就是编程语言史上最强的升级。编译速度快了10倍(保守估计),量变引起质变,如果AI辅助编程每做1次tsc快3秒,10次就是30秒。
前端工程化,当小登写着写着项目堆成上千行,发现要拆代码方便维护。这时候就要了解工程化和相关工具链,并且不要直接入开发框架,不然就是一脸懵。
运行时和包管理Bun,这东西解决怎么在浏览器之外运行JS、下载被人放网上的包、怎么管理项目依赖。新手推荐学node+npm,个人自从被A社收购就蠢蠢欲动想换Bun了,最后在Bun1.4用Rust重写就直接a上去了。管理项目和跑服务端真的是快的飞起,不用白不用(而且Logo这么可爱)
代码风格与审查oxfmt+oxlint,这个就是保证代码语法和风格的。出去工作项目组长基本会给你配了,学学怎么配差不多得了。原来使用eslint+prettier的,但是天下武功唯快不破,尤雨溪大大这波用rust重写的工具真的太快了。ai每改完代码跑一次lint和format,都快好几倍,量变引起质变
构建与编译vite+swc,这两就是帮你把代码弄成最简单的浏览器能跑的,和任何浏览器都能跑的代码。推荐去看看webpack和babel,对这工程化有个基本了解。
测试vitest+playwright,这个没什么好说的,软件工程能给自己造贼多种测试。反正我自己懒得写,让AI帮我写e2e啥的测试。这里讲个地狱笑话,playwright好像是因为残疾人的那个朗读模式,调用了可访问树来实现点点点工程师的功能。
样式方案tailwind+shadcnUI+animate,如果你有幸写过css,会发现给元素命名、选择器、堆样式。有个博主说的,无论你技术多nb,你的css都会是石山。一是css你要考虑那个命名,而且你过一段时间或者给别人接手,项目的css贼难阅读。二是css和注释一样,没有固定的最佳实践。可能别人看你项目,不懂你的实践就直接往上堆石。tailwind原子化css就很好解决了这些问题,而且伴随react框架推行的组件化思想,你也无需担心dom难看的问题,拆分职责就行。shadcn就是解决传统组件库黑盒的问题,以前组件库一是要被那个沟槽的文档,二是想改个样式和逻辑就像和组件库开发者打架一样。animate没什么好说的,css动画库,tw也对它有适配。
开发框架React,最喜欢的一集,学学设计思想、jsx、属性传递、Hooks、路由、状态管理zustand和一点框架原理就行,其他都是深水区。让网页各个部分拆成组件,让你想造和搭积木一样做网页。快速地描述UI,让你关注数据怎么变的,而不是数据变了还要操作Dom。我用来写Vue的,老有人说vue简单。但是我觉得它的文档没有像react一样引导新手了解框架哲学(这个老重要了,理解到位学框架就贼容易),还有每个章节有关联,而且双向数据写到后面都不知道哪里绑哪里了。最后看着react生态好,就跑去react了,懒得和别人卷vue+java了。国内react干不过vue,那主要是react这玩意心智负担太严重了,人家vue给api封装太好了。但是有一说一,现在这两发展有点瓶颈期,加上有人发现用框架就是用一个很甜的JS语法糖,在那对着UI一顿造,什么UI和逻辑都依赖框架,导致框架做的东西越来越多。虽然我觉得这些框架有时候做封装的思想挺好的,但是避免不了像个黑箱。


应用框架,这个就太多了。写小程序taro、uniapp,桌面应用electron,安卓鸿蒙IOS用reactnative。什么?你问我为什么不去用flutter,那是因为我纯懒狗,喜欢一招鲜吃遍天。懂个web技术,就想着写所有东西。这些就只需要知道框架给你封装了什么能力,比如taro对接了小程序的什么接口,electron的主线程和渲染线程怎么pv交易去调用系统能力,reactnative理解一下移动端交互。我要吐槽electron这玩意,这东西就是往我的电脑塞了一个谷歌浏览器和Nodejs,电脑里头喜提100多个谷歌浏览器。那帮写vscode的,你微软养一堆人是吃干饭的吗,个人用用差不多得了。你大厂还用这玩意,我现在电脑上一堆类vscode的ide,恶心死了。
服务端和数据库,fastify、nestjs、prisma、postgresql、redis。本来写java的,数据库用的mysql。后面感觉写起来太麻烦了,加上mysql各种若至设计,有想过换golang的。但是懒得学了(不过真心推荐go,相对其他后端语言不算难,而且有很多优秀的思想设计),就跑路去用node写服务端,反正自己接触不到什么大业务。js后端要么不学,要么学nestjs。其他框架太自由了,服务端这种地方就该一堆写写差不多的代码围着业务转。其他orm、数据库就不多说了,学的不深。懂个curd、优化和安全配置就行。毕竟性能虽然能用数字体现,提升一下xx%让你有口饭吃,但是安全没了直接就是乘以0,你再多优化也是徒劳。性能优化,对计算机知识体系理解更深入,就可以知道怎么进一步优化。这也是半年来我才意识到的东西,不应该只停留在框架这些应用层,尤其是有AI在。

运维这快,就不怎么懂了。单纯用用,刚好比大数据那时候学过linux。然后docker,nginx,cicd那些也仅仅停留在会用的层面。
其他方向,前端图形webgpu、canvas、svg、echarts和three.js。python那边就是爬虫scrapy、数据分析polars,总之就是TS用来构建应用,python用来处理数据。我原本想玩一门稳重点的语言,顺便搞搞嵌入式。原定是cpp的,本来也玩过。但是后面想换rust了,这玩意天天重构前端工具链,不得不看看几斤几两了。

AI这边首先是Skill、mcp和rag这些概念要懂,最后学一个agent开发框架。比如langchain,这个有ts和python版的,不赖。开发项目的时候,一定要落成文档。比如在项目根目录写个agent.md描述项目背景和技术栈,然后写几个spec开发规范让AI分开读。避免占用过多AI上下文,不然占用过半它就会变蠢。然后没什么了,就是得多用。没烧个10亿token就别说会用AI,用多了就知道AI能干什么,不同AI的能力边界,哪些agent好用。最后就是在你把编码遇到的问题,和对应答案过一遍再用AI写项目
最后就是一些深水区,数据结构、计算机网络、操作系统和计算机组成这个四大件。前后端这块,工程化、浏览器和网络、登录鉴权和搜索引擎等等
差不多就到这,很高兴你能看到这,这代表你已经超过95%的人了(玩梗)。现在太多人受AI和互联网短视频信息流的影响,沉不住心来看一篇长文,更别说耐下性子学东西。即使有AI,问题和对应的答案也不会自动出现在脑子里。想不去干苦力,躺在办公室吹空调把工作干了。少抱怨环境、思考别人的事情,老老实实地干自己的东西,学了再说