Node.js[0] 简介
学习node的过程很美妙,不断有新的概念出现;这个过程也大大拓展了技术视野,之后会把学习中遇到的点点滴滴整理出来。
Node是什么?
“Node.js”是官方称呼,交流多用node简称。
Ryan Dahl给Chrome V8 Javascript引擎添加了一组友好的Javascript API,并让V8能够独立运行于多个平台上(暂且把V8看做是js虚拟机),这样js也能写出跨平台非浏览器页面的应用。
关于node是什么?github上node项目的 readme 标题为“Evented I/O for V8 Javascript”,也能看出node给自己的定位; 下面是一小段 node代码 ,实现了一个简单http server:
var http = require( 'http' ); http.createServer( function (req, res) { res.writeHead(200, { 'Content-Type' : 'text/plain' }); res.end( 'Hello World\n' ); }).listen(1337, '127.0.0.1' ); console.log( 'Server running at http://127.0.0.1:1337/' );
node本身只提供实现应用程序的精简 api集合 。为了让node能提供更强大的功能,Ryan借鉴了Perl、Python等语言的经验,提出了NPM(Node Packaged Modules,暂且叫模块)的概念,并创建了一整套的模块发布、安装、依赖管理机制;node后来的成功,也是所有node社区成员共同努力的结果,NPM起了关键的作用。
更多node介绍可查看 这里 。
Node为何成功?
node最初的宣传“噱头”是 单线程异步编程模型 ; 单线程 意味着编程复杂性更容易控制;node事件驱动的异步编程模型实现的非阻塞IO,可以编写出更高并发量的网络程序(如web server);对某些特定应用场景是非常有吸引力的,比如Twitter的 tweet处理队列 ,其他应用场景包括:RESTFUL API、实时数据统计;总的来说,高并发小数据量的场景比较适合node。
不可否认node概念新颖,初期尤其对前端工程师吸引力巨大,因为不需要花费太大代价就能实现浏览器之外的相当丰富的功能;从 NPM Registry 也能看出来,早期的项目以前端为主。
node发展飞快,随着node名声鹊起,也吸引了更多非前端程序员的加入,我们看到了诸如关系数据库、no-sql、MVC framework 等类型更为丰富的模块出现了。
node发展过程获得了node社区的大力支持,从 NPM Registry 站点的火热程度可见一斑;截止2012-11-17已有17700+模块,目前仍然在持续增长中(后续会专门介绍NPM)。
这些因素一起推动了node在数年内就风靡全球。
“磨刀不误砍柴功”
Node资源
现在 安装node 变得很简单,支持多个平台;
API文档: 官方 第三方 NPM
入门书籍,好书不在多
《 NodeJs Beginner 》 中文版 ,开源node教程;实现了一个完整精悍的Web应用,包含:server、router、handler 《 Node for Front End Developers 》,简练而较全面地介绍了node的网络、数据、MVC等方面的原生技术和第三方模块更多的资源可以访问 nodejs.org
Git & Github
进入node的世界,git成了最常见的源码管理工具;希望多了解git,可以参考开源git教程《 ProGit 》。
github是目前最火的git远程库托管中心;github制作之精良、热度之高只有亲身体会一下才能了解;目前github上前端项目总量排名第一 。
IDE
Sublime、Notepad++、EditPlus、Ultra Editor都行;个人觉得WebStorm实在强悍,值得一试。
之后的安排
希望在开始介绍代码之前能让大家看到一个活的node,一个真正改变我们技术生活的node;所以首先介绍NPM,简介+所有模块分类+热门模块介绍;之后可能有:
node开发环境 node api结构剖析 动手开发一个模块 connect & express简介 connect源码分析 express源码分析 grunt …暂时想到这些。
分类: Node
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息