本文发表于入职啦(公众号: ruzhila) ,也可以访问入职啦官网(https://ruzhila.cn) 制作简历和查找招聘岗位。
为什么不推荐NodeJS做后端开发
理论上已经掌握了Vue的基础,想转后端开发,大部分人会考虑直接用NodeJS做后端开发,这样就不需要学习新的语言,只需要学习新的框架。
但是我不推荐这样做,原因如下:
- Node后端开发岗位极少, 国内很少有团队使用NodeJS做后端开发,大部分团队都是用Java、Python、Go等语言做后端开发。
- NodeJS的后端没有一个一统天下的Web框架,不要小看这个统一框架的价值,这个会影响团队的技术选型,大部技术选型会考虑框架的占有率,社区活跃度等。很不幸的是Node生态里面没有一个绝对领先的框架,Express、Koa、NestJS等框架都有自己的优缺点,团队内部技术选型会有很大的争议。
- Node的第三方SDK不成熟,比如最重要的支付SDK,基本上都没官方的Node SDK,成熟度不够高,很多时候需要自己封装SDK,影响团队的开发效率
- Node的服务端配套不够,最典型的就是性能跟踪,Go和Python都有很多成熟的性能跟踪工具,而Node的性能跟踪工具就少很多,这对于团队的性能优化是一个很大的障碍。
这些原因会导致大部分团队不会轻易的用Node做后端的主要开发语言,导致了岗位少,那么必然不建议作为后端的主要学习语言
建议在Go和Python之间选一个
Go 和 Python 哪个更适合做后端开发
做一个简单的对比
Go | Python | |
---|---|---|
语言特性 | 静态类型 | 动态类型 |
性能 | 高 | 低 |
语言生态 | 少 | 丰富,擅长数据处理 |
适用场景 | 高并发,高性能 | 数据处理,科学计算 |
学习难度 | 中 | 低 |
项目领域 | Web、游戏服务、Web3、通信、运维、监控、物联网 | Web、CRM、管理系统 |
从国内的招聘市场来看,Go的岗位比Python略少,但是Go的岗位的薪资普遍比Python高,而且Go的岗位更多的是一线大厂,比如腾讯、阿里、字节跳动等,而Python的岗位更多的是中小型公司,所以Go的岗位更适合有一定经验的开发者。
Python特别适合做一些快速的业务系统,很多公司都选择用Django作为基础框架,但是因为脚本语言的特点,导致很多团队业务到一定规模之后,会从可维护、性能角度考虑,从Python转Go,所以如果是刚入门的开发者,建议直接学习Go,这样可以避免以后的转型。
Go擅长的领域并不是Java的业务系统开发,更多还是在底层的网络通信、基础服务领域,所有如果你对这些领域兴趣,就更应该选择Go。
当然从技术储备角度,建议还是要学一门脚本语言,但是如果你已经会NodeJS,那么Python就是可选的了。
比较理想的就是Go+NodeJS,这样既可以做高性能的服务端,又可以做前端开发,这样的技术栈在国内的市场上非常有竞争力。
如何学习Go
Go的学习资料非常多,但是我推荐的是官方的教程,因为Go的官方教程非常简洁,而且很多第三方的教程都是基于官方教程的,所以建议直接看官方教程。
Go的入门从环境设置到写第一个web程序,大概需要1周的时间,然后就可以开始写一些简单的服务了。
学习路线
- 环境搭建 推荐VSCode, 内置的go的扩展就够用, 国内务必要使用 goproxy.cn 代理,不然你编译都很慢
- 基础语法 Go的语法非常简单,根据课程学习最基本的语法,包括变量、函数、结构体、接口等
- Web开发 Go的Web开发非常简单,推荐学习gin框架,这是一个非常简单的Web框架,可以用gin写一个简单的登录注册,就能体会到Go的优势
- 标准库 Go的标准库非常丰富,学习标准库的使用,包括http、json、io等
- 并发编程 Go的并发编程是它的特色,这个需要有场景才能理解,推荐基于gin的SSE写一个简单的多人聊天室
- 数据库 Go的数据库操作非常简单,推荐学习gorm,这是一个非常简单的ORM框架,可以快速上手, 支持MySQL、PostgreSQL、SQLite等,根据前面的登录注册,实现一个简单的用户管理系统
总结
基于Gin+Gorm,做一个多人的聊天室功能,那么就可以把go的Web开发入门,等入门之后,那么建议深入学Go的网络编程技术,可以根据自己的兴趣实现:
- 基于gin实现一个MQTT的服务器, 深入了解网络编程和复杂的数据结构
- 实现一个发送通知到企业微信、钉钉、邮件、短信的通知服务,深入了解Go的并发编程和任务调度
- 实现一个SFTP Proxy, 深入了解Go的文件操作和网络编程
这些项目都是非常有挑战性的,可以加我微信交流学习:jinti2000
很多人光看文档是很难把后端技术入门,需要学习的知识点太多,所以建议跟着一个项目学习,这样会更有动力,更有成就感。
回到文章开头的问题,为什么不推荐NodeJS做后端开发,因为NodeJS的生态不够完善,Go和Python的生态更完善,学习成本更低,更适合做后端开发。
而Go和Python的选择,建议学习Go作为后端开发的主要语言。
关注入职啦公众号,获取更多编程知识,加入入职啦编程交流群,一起学习进步。