go:
Golang的诞生有着很强的目的性,所以根基显得非常的沉稳,语言未来针对高性能,高并发的优化也更得心应手。更主要Golang可以切实的解决实际问题,并在内存与CPU使用上大幅优于node。为此,针对有大量请求的服务端,Golang是个不错的选择。
从大型工程的角度来说,go 是完爆 Node 的。性能,内存开销,静态类型,对异步的处理,异常的处理,可调试性,系统稳定度,工具链的成熟度,等等,都是 go 占优。
Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。
Node.js
Node 在依赖处理方面更好,npm 对依赖版本的管理 (go 的依赖不能指定版本,还需要借助非官方的工具)非常优秀,另外 Node 社区的活跃度要比 go 好。
Node 在做网站这方面,尤其是需要直接面向用户的 http 服务器这方面,有一个天然的优势,那就是前后端的语言统一。一方面可以减少切换语言的脑力成本,提高开发者的效率,另一方面可以实现前后端共享模板,从而实现首屏服务器渲染,局部更新浏览器渲染的架构,提高首屏的加载速度。
如果你做的网站后台就是个简单的 CRUD 应用,或者是做产品原型,或者你同时还想兼顾前端,Node 会是更好的选择;但如果你的后台很复杂,需要区分各种服务,搞数据分析,分布式集群等等,那绝对是选 go。
有疑问加站长微信联系(非本文作者)