Bowery为什么放弃Node.js,转向Go?

英文来自:Moving from Node.js to Go at Bowery

  Go 语言自从面世就受到了很多开发者的欢迎,越来越多的项目基于 Go 语言实现,例如非常著名的云计算项目 Docker。而本文作者分享了其从 Node.js 转到 Go 语言后,整个开发平台的性能得到显著提升,并从中总结出 Go 的六大亮点。

以下为译文:

  Bowery 是一个基于云技术的开发平台,强大的协同处理技术让即使分散各地的团队成员都能无缝地进行工作。在 2014 年进行的一次由 Node.js 转到 Go 的变更中,Bowery 获得了不错的性能提升。那么 Go 有哪些亮点值得开发者关注的呢?

强大的跨平台编程能力

  Bowery 团队指出 Go 能很方便地在不同系统里进行程序编译,这是他们转入 Go 的重要原因之一。

  作为开发平台,对 Linux,Windows,OSX 等常见操作系统提供支援是能否吸引开发者的基本要素。在 Go 中,开发者可以针对不同操作系统定义不同的文件来实现相同的功能函数。Bowery 团队成员 Larz 在创建 Prompt 应用(命令行输入)时,就是借助 Go 而轻松实现了跨平台编译。而开发者要做的,就是设置好不同的环境变量。

快速部署

  在 Go 平台中,从测试环境到真实环境的切换是非常便捷的,因为它无需额外的系统依赖。特别是对于 Bowery 提供给用户的命令行工具来说,用户无需安装 Java,RVM 或者 NPM 等工具便可正常运行。

并发处理

  Node.js 在并发处理方面处于劣势,仅有I/O程序或计时器运行在并发模式。因此如果希望打造一个快速响应的跨程序通讯系统,Go 无疑是更好的选择。Go 提供了低级别的并发处理基元,例如 mutexeswait groups 等等。

整合测试框架

  如果希望找到一个标准化的整合测试框架,不妨进入 Go 来体验一番,它内建了完整的测试包,免去了四处寻找的麻烦。如果想编写一个新的测试套件,只要把_test.go 文件添加到相同的包里就可以了。有关 Go 测试的更多信息,请点击这里进行访问。

标准库

  Go 提供了标准库,标准库的好处是无需包含其他扩展库,从而能节省开发时间并且还提高了健壮性。

强大的开发者工作流工具

  Go 的工作区界面能帮助建立标准化的工作流,虽然这或许会压缩了开发的自由度,但得到的是一个结构化的有条理的工作区:该区有三个根目录,src 用于放置源码包,pkg 用于放置编译包,bin 放置的是执行文件。把源码和依赖文件集中存储的好处是使团队成员都有一个相同的文档结构,而不会出现杂乱的文档情况。此外 gofmt 能以相同风格对代码进行格式化,这是一个非常实用的功能。所以一旦需要进行调试,只需集中精力解决当前问题而无需分心处理结构或风格等琐碎问题。

  最后总结几点 Go 语言学习心得,希望对新接触 Go 语言的开发者有所帮助:

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-06-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

微服务Microservices——应用架构的未来

能够构建、演变和扩展大型应用程序对于组织来说是至关重要的,但是所涉及的挑战使其成为一项困难的任务。正因为如此,微服务已经成为构建现代云应用的主导模式,它将单个组...

17820
来自专栏GopherCoder

『项目结构与框架:Go』

29030
来自专栏老九学堂

这是篇Java数据库开发的干货,你确定不收藏吗?

无论你开发的是一款PC端的Web应用,还是一款移动端的app,都需要一个数据库来存储你的业务数据(包括电商的商品信息、游戏的道具信息、社交的人员信息等等)。可以...

46550
来自专栏皮振伟的专栏

超融合架构设计之概述

背景: 相比于传统的私有云IaaS产品(例如vmware、华为),nutanix引领了一个新的技术方向---超融合。 nutanix本身是存储起家,分布式存储上...

57970
来自专栏Java架构师学习

浅析常用软件架构的三种架构模型

常用的软件架构模型可以归类为三种架构模型:3/N层架构、“框架+插件”架构、地域分布式架构。 一.三种架构模型 1.3/N层架构 这是经典的多层架构模型,对于稍...

49470
来自专栏软件

ERP管理软件系统设计方案

【微信运营】微信公众号开发、朋友圈广告、微信运营活动、微信小程序、微商城搭建; 【电脑端网站】网站建设、网站结构、网站功能、关键字策划、UI设计、网站SEO、升...

50850
来自专栏Aox Lei

微信公众号信息抓取方法(一)——抓取公众号历史消息列表数据

研究微信抓取之前, 看过知乎有大神写的比较完善的例子, 受到启发, 才完成了整个微信公众号的抓取。 微信公众号内容的批量采集与应用 微信抓取的难点: 1. 无法...

7.2K30
来自专栏北京马哥教育

运维CMDB建设思路

? ? 在我们日常的运维工作中,面对着大量的基础设施和软件服务,该如何管理?这个管理的原则又是什么?粒度该如何控制?我们是否可以建立一个统一的标准模...

75690
来自专栏DevOps时代的专栏

开发高质量软件的5大原则

多少次的惨痛教训告诉我们,在软件应用发布维护版本或者补丁之前,应该避免使用其最新版本。虽然每个人都知道初始发布版本V和稳定发布版本V.n之间存在软件质量鸿沟,这...

45260
来自专栏phodal

【图说】全栈工程师的 18 项基本技能,你会多少?

30分钟了解《Growth:Web开发思想》 本文总结了正在撰写的《Growth:Web开发思想》里提出的一系列实践,为18个步骤。 任务切分 即将目标切换成...

25370

扫码关注云+社区

领取腾讯云代金券