为什么我从Python转战到Node.js

老生常谈?这些日子谁不是切换到Node呢?我就是其中之一,下面是我的理由。

Python 2,抑或是Python 3?

Python版本之间缺乏重点和运转是一个巨大的阵痛。是的,我知道很多库正在被转换或已经被转换过了。但是,一个接一个地缺乏重点以及明确的方向使得我对它的信任降到历史最低。我知道这和不想移动的社区有很大的关系,但开发人员对此不买账,尽管是社区驱动项目。

Unicode支持

你有没有试过在Python中使用Unicode?TMD真心太痛苦了。是的,关于这个主题有很多这方面的文档,因此它不应该那么令人费解。Python 3是一个进步。当然我并没有说Node和JavaScript在这方面非常突出,但它们绝对有更佳的选项。

循环导入

循环导入是任何Python程序员的
痛苦之源,并且在我看来是这个语言非常破的一个架构选择。我知道在大多数情况下,循环导入是模块设计被破坏的一个标志。但是,如果你是一个有经验的开发人
员,那么可能你会将更多的时间花在将Python硬塞到高级模式中。好吧,对此我只想说祝你好运。Node.js允许我导入模块到任何地方。

旁注:显然Go也有这个限制。这太让我伤心了:(

NPM VS PIP

Python有PIP,这真的很棒。不过,我在NPM上经常能发现更多最新的现代化模块。随着NPM上其他共享的内容也出现了废话,因而你得对此提防。我一直认为在PIP上共享烦人,而在NPM上真心易如反掌。我的第一个模块共享只用了总共5分钟。

效率=更多钱!

这是毫无疑问的。当涉及到硬件(如果编写正确的话)的时候,Node比Python更精简。能够真正利用低端硬件并产生可接受结果是一个重要优势。

很多优势都可以归结为Node的异步特性。是的,我知道Twisted和类似的库。你有没有在其中实际写过一个异步app?在构建一个产品时,开发速度很
重要,但保持低的开销成本也很重要。我们可以运行相同的Node项目在Python所需的一半硬件上。

团队熟悉度

这总是一个值得探讨的话题,但是我更喜欢整个团队都能有一个基本的JavaScript水平。这意味着他们可以查看Node代码,并理解是怎么回
事。如果团队里面有前端开发人员,那意味着连接到API端点或处理意见非常容易。这对我而言也意味着在帮助他们时受到的干扰更少。太棒了!

MongoDB和JSON

我们喜爱MongoDB和JSON。Node不假思索地使用它俩。当然,显然这也可以用其他语言来完成,但是它的便捷性有着致命的吸引力,使得我不得不提到它。

它就是JavaScript

如果你像我这样热爱JavaScript,那么这是一个额外的优势。如果你不喜欢JavaScript,那么这个优势可能也不是很大。我认为
JavaScript之所以有趣是因为它善于表达。它提供了很多做事的方法,这在应用特定策略来解决关键问题时非常棒。这也滋生了一些愚蠢的辩论,例如
“添加分号VS不要分号”。在此郑重声明,我赞同使用分号。

结论

需要说明的是,我依然深爱着Python。它已经陪伴了我好多年,并且我用Python写了好几个产品app(见Postach.io和
QuoteRobot),然后经常用于快速服务器脚本。Node.js本来并非我的第一选择,但是我想要一些现代化的东西,并且做一些新颖的Web设计。PHP,Python和Ruby显然不符合要求。我的第一个选择是去学习Go(golang),但是由于时间限制和团队技能集让我与之无缘。初创企业对工作玩命,你懂的!Node折中了这些方面,允许我们立刻上手。

你对于现代语言有什么想法?你更喜欢Python抑或其他?为什么?欢迎分享任何有关于Node方面的“陷阱”。

作者:小峰

来源:51CTO

时间: 2024-07-31 07:52:06

为什么我从Python转战到Node.js的相关文章

CentOS上安装Node.js和mongodb笔记

  CentOS上安装Node.js和mongodb笔记        这篇文章主要介绍了CentOS上安装Node.js和mongodb笔记,本文讲解了Python安装.Node.js安装.npm安装.mongodb驱动安装.mongodb数据库操作测试代码等内容,需要的朋友可以参考下 之前听说过Node.js,只是知道它可以应用于服务器端,但是对很多具体的东西并不了解.今天在QCon上听了袁锋的分享<Node.js脱离了浏览器的Javascript>之后,顿时有了想立刻试一下的冲动. No

Node.js, Go, Python, OpenResty Benchmark

心血来潮,简单测试一下各种语言写的API Server的性能. 前言 我已经用过很多Web框架了.Python-httplib, Python-Flask,Python-Tornado,Node-http, Node-Express,Node-koa,Node-restify, Go-http.最近在做OpenAPI,用了一个开源组件Kong,后来觉得这玩意虽然设计的不错但是碍手碍脚,有一些功能还是需要深入底层去自己研究实现.后来发现Kong是基于OpenResty实现的,而OpenResty则

Node.js与PHP、Python的字符处理性能对比_node.js

测试用例分为用函数和类来进行一个大字符串的字符逐一读取. 测试代码 Node.js 函数 var fs = require("fs"); var content = fs.readFileSync("page.html", { encoding: "utf-8" }); function chars(content){ var length = content.length; var pos = 0; while(pos ++ < leng

Node.js 学习笔记之简介、安装及配置

 本文是Node.js学习笔记系列文章的第一篇,主要给大家讲解的是在Windows和Linux上安装Node.js的方法.软件安装版本以0.12.0为例.希望大家能够喜欢.     简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 谁适合阅

PHP vs Node.js 深入讨论(1)

网络正在处于一个日新月异的发展时代.服务器端开发人员在选择语言的时候非常困惑,有长期占主导地位的语言,例如C.Java和Perl,也有专注于web开发的语言,例如Ruby.Clojure和Go.只要你的项目运行良好,你的选择就显得没有那么重要了. 但是如何让这些新的web开发人员做出一个正确的选择呢? 我不希望展开一场PHP.NodeJs两大阵营之间的战争,我将会对比这两种语言所在领域的发展状况: PHP Rasmus Lerdorf在1994年创造出了PHP.它是由安装在web服务器(Apac

Node.js V0.12新特性:给子进程的同步API

尽管发明Node.js的初衷主要是为了编写Web服务器,但开发人员又发现了其他适用(和不适用!)Node的用途.令人觉得惊喜的是,这些用途中有一个是编写shell脚本.并且那确实有意义:Node的跨平台支持已经相当好了,既然前端和后端都用JavaScript写了,如果构建系统也用JavaScript写不是更好吗,对吧? 异步对shell脚本的坏处 在这一用途上值得称道的库是Grunt,它是构建在ShellJS之上的.然而ShellJS有一块硬骨头要啃:Node迫使它用异步I/O.尽管对于Web服

在Visual Studio 2012上开发Node.js程序

  最近准备用Node.js做些东西,于是找找看能否有Visual Studio上的插件以方便开发.结果还真找到了一个,来自微软的Node.js Tools for Visual Studio(NTVS),虽然现在仅发布了1.0 Alpha版本,但使用起来已经非常方便.而且,其开发团队与Python Tools for Visual Studio(PTVS)是同一个,而PTVS就是Visual Studio 2013中要创建自带的Python项目需要安装的那个程序,所以大可放心的使用NTVS.

Node.js和Socket.IO扩展Django的实时处理功能

  这篇文章主要介绍了使用Node.js和Socket.IO扩展Django的实时处理功能,用异步处理实时功能是相当强大的,文中给出的例子是建立一个实时聊天室,需要的朋友可以参考下 今天,我们的目标是使用Django,Redis,和Socket.IO建立一个实时的聊天室.虽然几乎所有的Web应用程序都可以建立一个聊天室的.这篇文章将以较高的水平告诉你如何将基于REST的应用程序转换成一个实时的Web应用程序的.我会使用Django创建REST的部分,实际上自由地使用任何你舒服的语言/框架均可.接

初识Node.js

本文给大家介绍的是node.js的初体验,从最简单的内容开始,慢慢的深入分析node.js.并附上一则很不错的文章<7天学会nodeJS>更加详细的向我们展示了node.js的学习步骤. 先来简单介绍nodeJS 我们知道JavaScript是运行在浏览器中的,浏览器为它提供了一个上下文(context),从而让JavaScript得以解析执行. nodeJS其实可以这么理解,它是另外一种上下文,它允许在后端(脱离浏览器环境)解析执行JavaScript代码. 因为它使用了Google的V8虚