《JavaScript快速全栈开发》作者Azat Mardanov:现在是拥抱Node技术栈的最佳时机(图灵访谈)

jopen 10年前

原文  http://www.ituring.com.cn/article/195742


Azat Mardanov是一位有着12年开发经验的资深软件工程师,他曾涉足web、移动、软件开发领域。他著有9本JavaScript和Node.js技术领域相关书籍,其中的 Express.js Guide , Practical Node.js ,以及 《JavaScript快速全栈开发》 在 Amazon.com专业类别中成为了#1的畅销书。作为技术作者,其个人博客 webAppLog.com 一度成为谷歌搜索“express.js tutorial”结果中排名第一的教程站点。

Azat现在在 DocuSign 任高级工程师,他利用由Node.js, Express.js, Backbone.js, CoffeeScript, Jade, Stylus以及Redis组成的技术栈,带领团队重构了具有5000万用户的DocuSign。Azat还是科技聚会和编程马拉松活动的常客,他曾和 FashionMetric.com团队一起在AngelHack活动上12次入围决赛。长期以来,他都是General Assembly、Hack Reactor、pariSOMA和Marakana等机构的讲师,其技术课程获得一致好评。另外,他还开发了很多Node.js开源项目(如 ExpressWorks、mongoui以及HackHall等)。

《JavaScript快速全栈开发》作者Azat Mardanov:现在是拥抱Node技术栈的最佳时机(图灵访谈)

问:Io.js另起炉灶,这将对Node造成什么影响?Io.js和Node分别具有什么优势?

在我看来,Joyent公司构建的Node需要加一把力了。他们需要缩短发布周期提高速度。他们也需要吸引新的代码贡献者。换句话说,为了提高整体轨迹和速度,Node必须要有所改变。

Io.js之所以被创造出来,主要是因为Joyent版Node决策过于缓慢。就目前来说,Io.js更加前沿,贡献者更多,发布周期也更短。Io.js已经到了版本1.6.2而Node仍然处在0.12.1版。

当然,版本号并不是成熟度的绝对指标。因为有一些项目可能只是提交了几个小补丁就跃进了主要版本号。

问:Node.js阵营的分裂你觉得会是一件好事吗?(早期硅谷不少成功的公司都是仙童公司分裂出去的。)

我认为分裂是一件好事。我们拥有的优秀分支越多,这些分支就会变得越好。可能这个例子不太合适,但是看看Linux的各种发行 版:Debian,Fedora,openSUSE,Red Hat,Ubuntu等等。这些版本帮助传播了Linux基础的系统,彼此间的竞争也让它们越变越强。

但我并不是100%赞成这个论调。我更愿意集中精力在我自己的项目上,我建议大家远离政治和闹剧。因为只有时间能告诉我们未来会发生什么。分裂也可能是一件坏事,如果Io.js表现平庸的话,有可能会把人们从 Node/Io.js阵营赶走。

但是,如果让我预测的话,我认为未来是很光明的,而现在就是拥抱Node/Io.js/JavaScript技术栈的最佳时机。

问:PayPal从Java迁移到Node非常成功。你认为Node会在后端取代Java吗?

是的。Node已经在取代Java了。

大多数Java应用都是很庞大的,所以很多公司把他们的巨型应用拆分成用Node实现的小型web服务。其他一些公司把Node用到前端层,这层 的作用相当于Java或.NET的老API之间的中间人,优点是易于迭代(缩短的发布周期),易于构建(一种语言),而且更好扩展(应用更快)。

我推荐大家阅读这篇名为 Monolithic Node.js 的文章。

另外,企业和大公司需要的技术,其背后必须有一些声誉好的公司和工具。StrongLoop正在帮助大公司使用Node.js/Io.js。

初创企业已经爱上了Node/Io,因为便宜,可扩展,而且也更容易雇到程序员。

问:看起来Node.js比Python的框架Twisted火很多,为什么会这样?对于后端来说,Node.js和Python各有什么优缺点?

我并不是Python及其框架方面的专家。但是我从其他人那里听来的结果是这样:当你编写非阻塞的I/O代码时,Python的框架 Twisted更加复杂。因为Python并不是从一开始就设计成非阻塞平台的。而Node从一开始就是为非阻塞和异步类型的代码和架构而设计的。

Node在NPM(Node包管理器)中的模块比Python多。Python标准库比Node更丰富。Python对于JavaScript开发者来说更难学,同时Node对于JavaScript开发者和前端开发者来说更容易学。

Python的结构很严谨,空格和缩进都是语言的一部分。

问:Node.JS+NoSQL的方式衍生出了很多便捷的工具让开发者能够快速响应前端需求,特别是像Parse这类的工具。你觉得在整个敏捷创新的过程中,未来在哪些方面可能会有更多这样的创新?

做预测很难,但是我认为移动开发会变得更加容易。只要看看Ionic和Swift就知道了!

在桌面端,我认为编程会更加聚焦在前端,比如推ter Bootstrap,LESS这样的框架,而且类似Webflow,WordPress这样的服务会变得越来越流行。

后端所需要的编码越来越少。Node/Io/JS会一直笼络新生代后端开发者的心,同时也会占据PHP,.NET以及Java世界的“市场”。可能未来会产生面向后端的视觉拖放框架。

在部署层,Docker的方式变得越来越流行,因为你在生产环境开发(无差异)。

在2015年之初,我写下了一些预测。并不是所有都和科技有关。但是可能对你来说会很有趣: http://webapplog.com/my-predictions-for–2015

问:有哪些设计决策让JavaScript在开发和企业级应用方面一直保持长青?

使用JS,你可以直接解决问题。因为JavaScript是一种表现力很强的语言,这意味着你不用花很多时间来设置,换句话说,更小的额外负担。 与之相比,Java的架构师仅仅在创造界面、类,构建梯阶、环境上就要花很多时间。总之:JavaScript更简单,用起来也更有乐趣。

使用Node/Io时,你可以在后端和数据库层使用JavaScript的API或语言。所以在浏览器和服务器之间代码不需要上下文切换。如果没有上下文切换,那么生产力也会更高。

NPM能够帮助企业切换得更快是因为企业意识到NPM是由很多好用的优秀模块构成的。但是,主要原因还是可扩展性。利用非阻塞I/O,企业应用可以用更少的资源(服务器,内存,CPU)伺服更多页面。

问:作为一种编程语言JavaScript有些“不好的部分”,你认为基于JavaScript开发出的语言CoffeeScript如何?

CoffeeScript很不错,对于企业来说甚至更合适。ECMAScript 6标准从CoffeeScript那里借鉴了很多。

如果你需要一个好结构,那就用CoffeeScript吧!

你可以注册我的免费CoffeeScript线上课程: https://www.udemy.com/coffeescript

问:JavaScript有很多框架和库,如何才能在众多资源中选择,然后建立属于自己的技术栈?

NPM(Node包管理器)发展很快,应该是你选择过程的最好起点。另外,我创造了 “Node框架” 网站,在那里我选出了最佳模块。你可以在“Node框架”上选择加入,查询以下简报:

问:如今,移动互联网已经变得越来越重要,在这种情况下前端工程师需要面临什么样的机会和挑战?

最开始的挑战在于平台分隔,开发者们试图通过HTML5解决问题。但是HTML5的问题在于,相比于原生平台,HTML5的工具有些简陋。

现在,像Ionic这样的框架让你可以使用前端技术以及Angular和Backbone框架,同时你也可以利用一些原生的功能。我认为这是一个好的趋势。(Node和JS不仅被用在桌面开发中,也被用在机器人和嵌入式系统中。)

问:在读你的书之前,你建议读者先了解什么知识?在读完你的书后你建议他们读些什么或做些什么?

《JavaScript快速全栈开发》 是一本Node栈的入门书,在读完之后我建议阅读 Practical Node.js 。这本书会为你完全综述整个开发过程的全貌:模板引擎、部署、代码组织、安全、数据库、等等。