当前位置:首页 > 文章列表 > Golang > Go教程 > 从Node.js 转到 Go平台

从Node.js 转到 Go平台

来源:脚本之家 2022-12-23 14:44:30 0浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《从Node.js 转到 Go平台》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

在用 Node.js 建立了 Bowery 的第一个迭代版本后,我们在2014年2月切换到了 Go,我们的开发和部署速度也因此得到提升。

从那以后,我们整个团队都变成了专职的地鼠(译者注:Go 的吉祥物)。Go 清晰明确的标准和更简便的工作流程让我们用 Go 用得很舒服。下面是我们热爱用 Go 进行工作的原因,你可以从中瞄一眼我们的地鼠洞。

容易编写跨平台代码

我们切换成 Go 的其中一个最大原因就是它是那么容易去为不同系统编译代码。

在 Bowery, 我们在建立一个能帮忙你和你的团队管理你们的开发环境的app,我们必须要高效地支持所有操作系统——Linux,Windows 还有 OSX。在Go中,你可以为不同的操作系统定义不同的文件,从而实现依赖于操作系统的功能。一个绝佳的例子就是我们的同伴 Larz 在构建一个从命令行读取用户输入的包 Prompt 的事。Larz 希望去创建一个 Go 包用来实现跨平台的行编辑提示。这在 Go 中是如此简单:为每个操作系统创建不同的文件,Go 编译器会根据操作系统来选择应使用的文件来生成最终内容。

为其他的系统编译代码同样很简单,你要做的仅仅是设置一个环境变量,然后你就有了一个你在 Linux 系统上编译的 Windows 二进制文件。

更快的部署

Go 是一款编译型语言并且可以更轻松地在多个平台上分发应用。 对我们而言,部署和测试是很重要的,同时也是我们最终用户的一个资产。通过 Go,构建服务然后运行测试会很容易,因为迁移到生产环境的服务器时就准备好了。 Go 不需要任何的系统依赖,让它的发布真的很简单。 当要发布命令行工具或者其它应用时,我们的用户不需要担心要安装Java,RVM或者NPM才能运行。 我们喜欢这篇Jeremy Saenz 的文章,他讨论了为什么他把他所有的命令行工具迁移到Go(CLI tools to Go)。

并发基元
当切换到Go时我们意识到Node.js的事件循环并不是一切。Node.js 没有提供太多的并发基元。唯一能同时运行的是I/O程序和定时器等。你无法通过这些程序通讯,所以用Node.js建立一个敏捷的系统是一个挑战。使用Go,你可以在运行任意并程序的同时,提供一个频道去给程序发送信号让它做一些事情,或者给它们发送一些值来共享数据。Go还提供了像 mutexes, wait groups等低级别的并发基元 。 有的你可能在NPM上找到,但我们发现在处理并发和并行时频道是决定性因素。

集成测试框架

用Node.js的时候,我们已经有了我们的测试框架选择,但一些框架对于前端来说更好用,比如Jasmine, 其它的框架则对后端来说更好用,比如Mocha。也有其它的选择像JSUnit和PhantomJS,如果你看过StackOverflow的这篇文章,那里也有人推荐许多的框架。在一些世界里,选择是一件好事,但使用Go的时候,我们喜欢测试框架的规范化。在Go里,所有的测试包都是内置的。如果你需要写一个新的测试套件,你必须做就是把(文件名)_test.go文件加到你要测试的软件的同一个包里,它将会在你每次执行go test的时候运行。
你可以在writing tests with Go学到更多关于Go 测试的知识。 需要测试HTTP services? Go同样提供了httptest包

标准库

我们喜欢仅用Go的标准库就能写大多数的软件。用Node.js时,我们几乎都是不得不引入一个外部的库, 这样做既增加了部署的时间,也增加了来自第三方软件的潜在隐患。只用标准库能让我们写的代码更快更安全。

开发者用的工作流工具更强大

Node.js除了NPM的包和脚本控件,没有真正的标准化的工作流。除此之外, 因为这些工具是社区创造的,虽然很好用但是实在太多了,以至于最终的结果就是事情被每个人以不同的方式完成了。在Go里工作流标准化的一个很好的例子就是工作区的布局。你要放弃很多开发自由因为你必须遵守工作区的布局,不过它提供了大量的结构:你可以保留你的Go源码和依赖在同一个位置。在你的工作区你有3个根目录: src 放源码包,pkg放编译过的包,bin放可执行的程序。让你的源码和依赖放在一个单独的工作区是一个最佳实践, 让它在每个人的机器上都是这个标准。在团队合作里这些可预测性是让人满意的。我们可以去任何人的机子上提供帮助,并且知道我们的代码将会出现在$GOPATH/src/github.com/Bowery这个路径,而不是其它像$HOME/some/path/to/Bowery这样的路径。类似的,gofmt用同样的方式格式化每个人的代码。对于一些肤浅的问题,像组织代码和代码风格差异在Go里根本不需要担心,这是一个大大的解放。你可以专注修复你的问题,其它的事都被考虑到了。

还有一大堆其它的原因去喜欢Go,我们看到越来越多的公司采用Go让内部应用变得更强大并且是可分布式的。但总的来说,Go团队发现如果你创造标准并弄成范例让别人同意的话,开发者们会更高产。 比如, MongoDB 的应用管理团队喜欢用Go的"明智的、 统一的开发经验"。 在 Soundcloud,他们喜欢用Go严格的格式化代码规则和“实现的方式只有一种”的哲学。这意味着你会在代码审查和争论代码风格和格式上花很少的时间,而可以用更多的时间去解决你问题的根源。

如果你刚开始使用Go并且想了解更多,这里有一些资源可以看看。

阅读Golang 官方博客的更新和核心团队的公告
阅读核心团队提供在官网的学习文档
我们喜欢Ardan工作室的Bill Kennedy写在博客 Going Go Programming 上的窍门和指南
Go by Example 有一堆用Go写的不同任务的例子
GopherAcademy 有很多关于Go的最佳实践的文章
Brian McCallister 有一篇很好的文章是 Go 工作区和总体开发环境
更多关于Go的代码组织,阅读Jared Carroll发布在 Pivotal Labs blog 的文章
如果要开始你的第一个Go项目,设置你的新环境并在Bowery分享给你的团队吧。

请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

版本声明
本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
GO语言利用K近邻算法实现小说鉴黄GO语言利用K近邻算法实现小说鉴黄
上一篇
GO语言利用K近邻算法实现小说鉴黄
五步让你成为GO 语言高手
下一篇
五步让你成为GO 语言高手
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • ljg-skills -
    ljg-skills
    ljg-skills 是李继刚开源的 AI 技能与提示词集合,面向大模型使用者整理了一批可复用的 prompt、角色设定和任务技能模板,适合用于学习提示词设计、搭建个人 AI 工作流和沉淀团队常用智能体能力。
    2113次使用
  • MELO音乐 - AI 音乐生成平台,支持多模态创作能力
    MELO音乐
    MELO音乐是一站式AI视频与音乐制作助手,对标suno, udio的高品质体验。提供伴奏生成、原创写词、无损导出、哼唱识曲、混音变声等全套音频与短视频编辑工具。无论是流行Kpop、电音说唱、民谣古风、摇滚儿歌还是商用轻音乐,MELO为你免费谱曲,轻松做同款!
    1959次使用
  • UniScribe - AI 免费在线音视频转文字平台
    UniScribe
    UniScribe 是一款 AI 音视频转文字与内容整理工具,支持上传音频、视频文件或粘贴 YouTube 链接,自动生成转写文本、摘要、思维导图和关键问题,并支持多格式导出,适合会议记录、课程学习、访谈整理和内容创作复盘。
    1901次使用
  • 剧云 - 免费 AI 智能中文剧本创作平台
    剧云
    剧云是专业中文剧本创作平台,安全稳定运行十余年,集成AI编剧、剧本医生审核、人物小传、剧情关系图、大纲编写、多人协作、Word导入导出、版权管控功能,数据安全防护,轻松高效创作剧本。
    2106次使用
  • 万象有声 - AI 一站式有声内容创作平台
    万象有声
    万象有声,一个专为有声创作者打造的新一代智能有声内容创作平台。平台提供专业的智能拆章、智能画本编辑、AI配音、AI生成音效、后期制作、智能对轨、智能审听等有声创作全流程工具,可以帮助创作者高效、低成本创作出引人入胜的有声作品。立即体验,让有声书制作更简单!
    2093次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码