重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
注:这是一篇翻译文章,不代表我们的观点!
因为努力和真诚,有更多的客户和我们聚集在一起,为了共同目标,创新互联建站在工作上密切配合,从创业型企业到如今不断成长,要感谢客户对我们的高要求,让我们敢于面对挑战,才有今天的进步与发展。从网站到小程序定制开发,软件开发,重庆App定制开发,10余年企业网站建设服务经验,为企业提供网站设计,绵阳服务器托管一条龙服务.为企业提供营销型网站,按需网站策划,原创设计,10余年品质,值得您的信赖.
Node.JS是一个非常糟糕的平台,他的糟糕之处体现在非常简单而重要的一个方面,就是他的核心工作机制:基于I/O的回调。
我想大家现在都知道。这种方式编写代码是很糟糕的。一段时间前我注意到了这个事情,
在使用了Go语言几周后我喜欢上了他。使得,我承认Go语言比python少了一些动态特性,而导致做开发的时候可能会多出一些任务(主要是做一些样
板)。Go比Python还少了一些“magic”的性质,从而代码具有明确性。
Go的这种明确性使得你更容易的阅读源代码。因为没有了这些“magic”特性,你就
弊,Python的开发速度要快,而Go的代码维护要容易。
可是,当你把这些事情往Node.JS上想的时候,你会发现没有了代码可维护性、没有了安心、得到了速度。可是我想说你真的得到了速度么?因为在此同时你同时失去了简易开发和简单维护。
我花费了很长时间去学习Node.JS,并试着做了一些东西,但是并没有成功,我是真的不知道从何开始。
通常我评价一个技术的好坏,是通过它自身的一些性质。是否容易上手、是否能帮助我提高
生产力、文档做的好不好、有没有帮助资源。很显然Node.JS没能通过上面的测试。在我学习了那么久之后我仍然没有做出一个产品。API参考虽然已经文
我看到HN(Hacker News)上的一些人说Node.JS有多好。我当时认为这些人都是很聪明的,Node.JS应该是一个不错的平台。很不幸,我花费了几个月时间最终发现这是一个非常糟糕的平台。我没能写出一点读起来很舒服的代码,(当然写起来也是很不舒服)
我开始怀疑我的编程能力!
当然,一些读者可能会说:我们将Node.JS用到的生产环境,所以这是你的无能。
也好,我接受,可能是我钻到某个牛角尖里了。但是我所说的权衡利弊的问题仍然成立,为了满足所承诺的可扩展性,你必须牺牲代码的可读性和可写性。而在Python下你可以非常方便的扩展。你可用gevent
,一个基于网络库/服务器的并发框架。这就意味着IO阻塞将不再是问题,剩下的唯一问题是python的解释器,而这也可以通过分布式多服务器来解决负载均衡问题。
现在只有一件事情是Node.js可以而Python不可以的,那就是
websockets。实际上我不确定是不是python确实不能,在Google后也许会找到一些方案。当然
Go可以很容易的实现websockets(go get code.google.com/p/go.net/websocket)
即便你认为websocket就是你使用Node.js的原因,但是我想说你仍然可以选择使用Node.js实现websocket,而其余部分都是用Python来做。这里有个例子
。是的,这个架构设计(联合Python和Node.js)可能是有点令人费解,但是还是要比使用Node.js开发整个web程序要好的多。
学c++或者c语言吧。node.js应用太少。学c语言,可以加深你的知识,受益无穷。
强大的跨平台编程能力
Bowery团队指出Go能很方便地在不同系统里进行程序编译,这是他们转入Go的重要原因之一。
作为开发平台,对Linux,Windows,OSX等常见操作系统提供支援是能否吸引开发者的基本要素。在Go中,开发者可以针对不同操作系统定义不同的文件来实现相同的功能函数。Bowery团队成员Larz在创建Prompt应用(命令行输入)时,就是借助Go而轻松实现了跨平台编译。而开发者要做的,就是设置好不同的环境变量。
快速部署
在Go平台中,从测试环境到真实环境的切换是非常便捷的,因为它无需额外的系统依赖。特别是对于Bowery提供给用户的命令行工具来说,用户无需安装Java,RVM或者NPM等工具便可正常运行。
并发处理
Node.js在并发处理方面处于劣势,仅有I/O程序或计时器运行在并发模式。因此如果希望打造一个快速响应的跨程序通讯系统,Go无疑是更好的选择。Go提供了低级别的并发处理基元,例如mutexes、wait groups等等。
整合测试框架
如果希望找到一个标准化的整合测试框架,不妨进入Go来体验一番,它内建了完整的测试包,免去了四处寻找的麻烦。如果想编写一个新的测试套件,只要把_test.go文件添加到相同的包里就可以了。有关Go测试的更多信息,请点击这里进行访问。
标准库
Go提供了标准库,标准库的好处是无需包含其他扩展库,从而能节省开发时间并且还提高了健壮性。
强大的开发者工作流工具
Go的工作区界面能帮助建立标准化的工作流,虽然这或许会压缩了开发的自由度,但得到的是一个结构化的有条理的工作区:该区有三个根目录,src用于放置源码包,pkg用于放置编译包,bin放置的是执行文件。把源码和依赖文件集中存储的好处是使团队成员都有一个相同的文档结构,而不会出现杂乱的文档情况。此外gofmt能以相同风格对代码进行格式化,这是一个非常实用的功能。所以一旦需要进行调试,只需集中精力解决当前问题而无需分心处理结构或风格等琐碎问题