非商业转载请注明作译者、出处,并保留本文的原始链接: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等)。

问: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就知道了!

在桌面端,我认为编程会更加聚焦在前端,比如Twitter 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框架”上选择加入,查询以下简报:

  • Node 周报
  • JavaScript 周报
  • Webapplog.com

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

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

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

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

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


更多精彩,加入图灵访谈微信!

《JavaScript快速全栈开发》作者Azat Mardanov:现在是拥抱Node技术栈的最佳时机相关推荐

  1. 三:JavaScript快速入门(脚本开发方向)

    跳转总目录 文章目录 1.js简介 2.js入门 2.1 变量 介绍 变量的声明 2.2 运算符 2.3 数据类型 3.js判断 4.js循环 for循环 While循环 do while循环 5.j ...

  2. Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技

    本文是钢哥的Oracle APEX系列文章中的第一篇,完整 Oracle APEX 系列文章如下:  - Oracle APEX 系列文章1:Oracle APEX, 让你秒变全栈开发的黑科技  - ...

  3. 全栈开发和web开发_成为全栈开发人员

    全栈开发和web开发 This popular article has been updated in June 2017 to include modern technologies. 该热门文章已 ...

  4. 2022 全栈开发值得关注的技术产品

    随着「云原生」以及「serverless」等概念的兴起,越来越多的公司开始不再刻意强调前后端之分,身处其中,我们也能感觉到,前后端的边界越来越模糊,更多的划分更接近于应用开发和基础设施建设,大公司着力 ...

  5. 什么是python全栈开发_什么是python全栈

    全栈即指的是全栈工程师,指掌握多种技能,并能利用多种技能独立完成产品的人.就是与这项技能有关的都会,都能够独立的完成. 全栈只是个概念,也分很多种类.真正的全栈工程师涵盖了web开发.DBA .爬虫 ...

  6. Web前端:全栈开发人员——专业知识和技能

    一个全栈开发人员知道开发的前端和后端.开发人员需要编写代码,遵循敏捷方法,编写应用程序并执行它. 另一方面,他们还需要熟练地开发web应用程序的UI和UX.完整的堆栈开发人员技能包括设计应用程序,使其 ...

  7. 全栈、均栈、MERN栈,哪个才是下一代Web项目的正确栈

    众所周知,我们在开始任何Web或移动应用项目的开发之前,都需要事先选择好最适合项目的主要实现技术.目前,可选择的技术栈可谓林林总总,归纳起来,包括全栈(Full-Stack).均(MEAN)栈和MER ...

  8. 如何为移动开发选择技术栈?

    感谢内容提供者:金牛区吴迪软件开发工作室 今天就来聊一聊 如何选择移动应用开发的技术栈 选择合适的技术栈是移动开发领域最关键的决策之一.你选择的技术栈将为你开发的移动应用提供基本的功能.可拓展和维护性 ...

  9. Qt开发必备技术栈学习路线和资料

    简介 本文为:C++ QT 学习路线大纲+资料(文章底部) Qt 可以做什么? Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部:Qt 除了可以绘制漂亮的界面( ...

最新文章

  1. Private strand flush not complete
  2. Linux系统下Hadoop运行环境搭建
  3. linux 专家认证,ONAP专家认证 (COP)
  4. Property 'submit' of object #HTMLFormElement is not a function
  5. ABP入门系列(2)——领域层创建实体
  6. java 访问路径_java获取项目访问路径的相关方法
  7. JavaScript学习笔记(三)--操作运算符
  8. 牛津美女硕士放弃百万年薪,用废弃物做轻奢包,马斯克妈妈也来捧场
  9. javalibrary 线上_《NBA2K21》MT模式线上3V3任务一览 :: 游民星空 GamerSky.com
  10. 每天执行一次批处理_关于静态批处理/动态批处理/GPU Instancing /SRP Batcher的详细剖析...
  11. 从区块链中的通证模型设计看项目的未来
  12. java素数的判断方法_Java素数判断
  13. 计算机桌面的照度,学校建筑实验室实验桌面照度标准值?
  14. 利用华为ENSP模拟器分析和配置中小型企业网络的综合实验(上)
  15. EPLAN软件安装教程
  16. Word文献右上角标注以及自动更新——以Word2016为例
  17. 我从来都不是什么好人——脚本小子智斗绿茶小妹
  18. 2011年的暑假(大一的暑假——还算充实)
  19. 应用交付为什么会受到用户青睐
  20. 台式电脑键盘错乱会出现计算机模式怎么办,电脑键盘按键错乱怎么回事

热门文章

  1. RESTful API 设计指南(转)
  2. 【刷算法】判断链表是否有环以及返回入环节点
  3. CentOS Firewall防火墙设置规则
  4. php基础:switch cass控制结构 代替if
  5. Git 2.7: 一个新的带来许多新特性和性能提升的主要版本
  6. 【算法题】天平砝码称重
  7. 古典加密算法-----置换密码
  8. jsp验证身份证号并自动计算年龄和出生日期
  9. 图片(img标签)的onerror事件
  10. Centos的网络配置命令和文件