Node.js开发者学习之路

正如所有新兴并被快速采用的技术框架一样,一开始的挑战就是给你的技术团队增加高效的人才资源。在快速得出关于把 Javascript 开发变成 Node.js 工厂的结论之前,让我们先来看看关于 Node 及产品开发环境的核心问题。 简而言之,核心问题就是:

Node.js 具备基于事件的编程风格

Web 趋向于更小的以响应器/消息为基础的架构

最后,大多数我们试图解决的问题仍然需要通过可扩展的后端架构而不是UI来提供支持。

让我们逐个分析这些问题并揭示它们所带来的挑战。那就引出了我们需要招聘什么的人。

基于事件的程序设计

相对于传统的线程模型,Node.js开发与传统模型之间的主要区别是围绕着事件模型。相对于传统的线程模型,框架在基于事件的程序设计中管理的是控制流。在传统模型里,开发者必须在控制流中仔细处理模型中的流程,主动编写控制流向及返回的代码,要完全了解任务执行完后应该如何继续下面的流程。而对循环进行完全控制的事件模型则会返回到它会去的地方,而你却只能交叉手指祈祷好运。于是挑战就在于你如何组织逻辑,在于如何从过程模型到应用系统的输入与响应模型理解上的转变。这就是关键。

一个好候选人,能就传统的问题通过事件的方式进行讨论。他们是否能够清楚哪种类型的应用程序更适合于Node的方式? 例如,一个I / O与CPU密集绑定的应用程序。著名的聊天服务器就是个很好的例子。问他什么样的复杂变化需要使用这种模式放在一起的代码。 一个好的候选人应该能够解释并发模型,事件循环与多线程的差异,以及它们如何影响可扩展性。

开发来自测试,二者手拉手。JavaScript是一门弱类型的动态语言,来自于Java/C#的世界,你突然失去了你的安全保障(你的“编译器”)。此外,你写代码处理事件都处在模型之中,以测试驱动开发(TDD)的经验 确实变得好用。以我的观点来看,TDD更适合基于事件的编程。实际上最好的开发人员已经这么做了,在测试之前甚至只有一行代码。更关键的是,你要确保你所想要雇佣的开发者有使用测试驱动代码设计的思想,而不仅仅只是考虑去用。下面将会做一下介绍。

这样,我们就有了两个关键的技能点用来寻找候选者,即:编码能力和测试驱动设计!这与我之前说的没有太大区别,除了一些细微上的不同!

范型转换

你可能已注意到了网页的范型转换: 我们正快速地从传统的网页加载刷新走向较小的传感器般的信息,快速地访问小片的实时信息。你将也注意到通过开放式API我们走向传感器连接,器件连接,移动访问。Node.js这种情况,这里也是开源,由小模块API提供访问丰富信息组成。加上有不断成长的模块生长生态的外在,我观察到它惊人的成长---大约30%,从我加入Strongloop大概18个月以来。所以,你雇佣的任何Node.js开发人应该擅长在这样的开发模型下工作: 访问实时信息的小部分。

通常,我相信这意味着这样的开发者:擅长互动开发,快速编码试水,写小的重用的代码片段,遵循基于API开发。

基于类似Express, Connet, Async的关键模块的经验肯定都是加分的。github经验,开源贡献都得加高分。事实上,候选人用GitHub合作对等编码,关注Node.js在Google群和StackOverflow的活跃社区,和他写代码的能力同等重要。用模块生态系统的许多模块,找到已有模块,修好别人的模块或者给别人的模块打补丁,终归都是关键的技能。我要检查候选人GitHub的贡献的趋势和质量数量。他们是好的社区成员吗?他们修好代码吗?他们实行干净健康的特征分支,PR,提交吗?

如果你确实发现有人他积极贡献某节点核心,好,移交到附近的办公室。

安全性,后端架构,培训

伴随着代码开源,Node.js又是基于Javascript,这可能会导致你的应用存在安全隐患。开发者应当对服务器端注入比较熟悉,而且知道如何通过编码去避免这些风险。Node.js是单线程的,所以很容易会受到拒绝服务攻击。一名能够考虑到这些恶意情况并且编写出经得起良好测试的代码,在你的Node.js组中将会非常有价值。

Node.js相比其他编程语言还是比较新的,所以找到一名理想的员工可能会是一个挑战。在一些当地的小聚会中,你可能会找到一些黑客,也有可能找到一些经验丰富并希望向Node.js发展的Java工程师。或者为什么不考虑将你手下的一些在大型后端架构、处理大规模问题和容错方面有丰富经验的Java工程师送去参加一个好的培训呢?准备好开始了吗?StrongLoop提供培训和对个人或者组织的认证。

相关课程推荐:

基于node.js+Express.js+Jade+MongoDB开发Web即时聊天系统

http://www.ibeifeng.com/goods-462.html

原文:http://www.ibeifeng.com/tech-69524.html

时间: 2024-10-13 22:19:35

Node.js开发者学习之路的相关文章

Node.js的学习资源、教程和工具

这篇文章编译整理自Stack Overflow的一个如何开始学习Node.js的Wiki帖,这份资源列表在SO上面浏览接近60万次,数千个收藏和顶.特意整理发布到这里,其中添加了部分中文参考资料. 学习指南和教程 NodeSchool.io 交互式课程 Node的艺术 (Node简介) Hello World Hello World Web Server Node.js 指南 使用Node.js, express和MongoDB创建一个博客 Node+MongoDB 100分钟建站攻略 Proj

Node.js知识点学习

Node.js知识点学习 一.基本概念 Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台.可以说,Node.js开创了javascript模块化开发的先河,早期的javascript需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成 类.最后node.js的出现才开始有了js模块化开发的概念,这使得臃肿的js代码免去了命名冲突等一系列开发难题. Node最大的特点就是采用了异步式I/O与事件驱动的架构设

Node.js 参考学习地址

前段时间研究过Node.js 自从由于笔记本硬盘崩了之后就很少在家里搞程序了,但是很想学习之,只因最近在努力学习英文.技术之外的事也需要做好,我们毕竟不是为了技术而生,技术是我们生存的一门得力技能,唯如此方能活得精彩而丰富.人需要有更多的追求,去看看大千世界,所谓读万卷书不如行万里路,如果没有经世之才,又何必去假装大师.所以在此感谢提供如下Node.js文献的作者. Node.js的本质:  http://forjs.org/book/lkaK8WuNme/section/gygez8oTBPg

Node.JS 学习路线图,Node.JS最佳学习资料

原文出处: 张丹的博客(@Conan_Z) Node.JS 让人心动的技术. 从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的 Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都很流畅.Nodejs标准的web开发框架Express,可以帮 助我们迅速建立web站点,比起PHP的开发效率更高,而且学习曲线更低.非常适合小型网站,个性化网站,我们自己的G

如何在2016年成为一个更好的Node.js开发者

本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者,还适合那些管理与维护Node.js基础架构的工作人员.遵循本文提供的这些建议,能够让你更好的进行日常的开发工作. Statement 原文地址:https://blog.risingstack.com/how-to-become-a-better-node-js-developer-in-2016/ 译者:景庄,Web开发者,主要关注JavaScript.Node.js.React.Docker等. 使用ES201

Node.js开发者最常范的10个错误

目录 前言 1 不使用开发工具 1.1 自动重启工具 1.2 浏览器自动刷新工具 2 阻塞event loop 3 频繁调用回调函数 4 圣诞树结构的回调(回调的地狱) 5 创建一个大而完整的应用程序 6 缺少日志 7 没有测试 8 不使用静态分析工具 9 没有监视与性能分析 10 使用console.log来debug 前言 随着一些大公司如Walmart,PayPal等开始采用Node.js,在过去的几年里,Node.js有了快速的增长.越来越多的人开始选择Node并发布modules到NP

Node.js API学习笔记(一)

此文章已经发表于本人博客. Terminal(终端) 说起这个使用过linux系统的兄台一般都会知道的,本人理解:类似Putty这些ssh工具通过 软件来实现远程控制主机,对于我们使用者来说,它会显示信息并能接收信息并处理,这个东东就是终端.至于什么伪终端应该就是用软件实现使一套输入输出设备 可以支持多个软终端. 这里说下node.js中有关的终端模块3个,分别是:STDIO.TTY.REPL. 一.STDIO 如果我没理解错控制台应该是属于noddjs标准的输入输出,一般把信息输出到stdou

node.js 基础学习笔记3 -http

http模块,其中封装了一个高效的HTTP服务器和一个建议的HTTP客户端 http.server是一个基于事件的HTTP服务器 http.request则是一个HTTP客户端工具,用户向服务器发送请求. HTTP服务器 (1)http.Server实现,提供了一套封装级别很低的API,仅仅是流控制和简单的解析. request当客户端请求到来时,该事件被触发,提供两个参数,分别是http.ServerRequest和http.ServerResponse的实例,表示请求和相应信息. var h

为 Node.js 开发者准备的 8 本免费在线电子书(转)

ode.js 是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始.比较独特的是,Node.js会假设你是在POSIX环境下运行它 Linux 或 Mac OS X.如果你是在Windows下,那就需要安装MinGW以获得一个仿POSIX的环境.在Node中,Http是首要的.Node为创建http服务器 作了优化,所以你在网上看到的大部分示例和库都是集中在web上(http框架.模板库等). 本文向你推荐 8 本免费的在线 Node.js 电子书. 1) Best