Node.js 介绍
Node.js 介绍
Node.js是Javascript运行环境(runtime)。实际上它是对Google V8引擎进行了封装。V8引 擎执行Javascript的速度非常快,非常好。Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
Node.js是基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
外文名 Node.js 类 别 JavaScript工具 发布时间 2009年5月 开发者 Ryan Dah
Node.js允许通过JavaScript和一系列模块来编写服务器端应用和网络相关的应用。核心模块系统、网络(HTTP、TCP、UDP、DNS、TLS/SSL等)、二进制数据流、加密算法、数据流等等。Node模块的API形式简单,降低了编程的复杂度。
使用框架可以加速开发。常用的框架有Express.js、Socket.IO和Connect等。Node.js的程序可以在Microsoft Windows、Linux、Unix、Mac OS X等服务器上运行。Node.js也可以使用CoffeeScript(一种旨在简化JavaScript的替代语言,其可按照一定规则转化为合法的JavaScript)、TypeScript(微软开发的强化了数据类型的JavaScript变体)、Dart语言,以及其他能够编译成JavaScript的语言编程。
Node.js主要用于编写像Web服务器一样的网络应用,这和和Python是类似的。但是Node.js与其他语言最大的不同之处在于,等语言是阻塞的(只有前一条命令执行完毕才会执行后面的命令),而Node.js是非阻塞的(多条命令可以同时被运行,通过回调得知命令已结束运行)。
Node.js是事件驱动的。开发者可以在不使用线程的情况下开发出能够承载高并发的服务器。其他服务器端语言难以开发高并发应用,而且即使开发出来,也不尽如人意。Node.js正是个前提下被创造出来。Node.js把JavaScript的易学易用和Unix网络编程的强大结合到了一起。
Node.js使用Google V8 JavaScript引擎,因为:
V8是基于BSD许可证的开源软件
V8速度非常快
V8专注于网络,在HTTP、DNS、TCP等方面更加成熟
Node.js已经有数十万模块,它们可以通过名为npm的管理器。Node.js开发社区主要有两个列表、在freenode的名为#node.js的IRC频道。社区集中在NodeConf
Node.js教程适用人群
对于不会运用Python、以及Java等动态编程语言的前端程序员来说,选择Node.js作为创建自己的服务的工具是非常明智的。
Node.js是运行在服务端的JavaScript,因此,熟悉Javascript的使用将有助于学习Node.js。
同时,学习该Node.js教程也可以帮助后端程序员部署一些高的服务。
学习本教程前你需要了解
在继续本教程之前,你应该了解一些基本的计算机编程术语。如果你学习过Javascript,,Java等编程语言,将有助于你更快的了解Node.js编程。
第Node.js程序:Hello World!
以下是我们的第Node.js程序:
console.log("Hello World");
保存该,名为helloworld.js,并通过node命令来执行:
node helloworld.js
程序执行后,正常的话,就会在终端Hello World。
打开终端,键入node进入命令交互模式,可以输入一条语句后立即执行并结果,例如:
$ node > console.log('Hello World!'); Hello World!
第服务器的Node.js示例就从 “Hello World” 开始:
var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(8124);console.log('Server running at http://127.0.0.1:8124/');
把拷贝到example.js里,使用node程序执行:
> node example.js Server running at http://127.0.0.1:8124/
备注:在该Node.js官方文档中的所有的例子都可以使用上述执行。