title: "Node.js学习笔记(一)"
date: 2016-03-18 21:07:24
tags: Node.js
概述
Node.js 是一种建立在Google Chrome’s v8 engine上的 non-blocking (非阻塞), event-driven (基于事件的) I/O平台.
以事件驱动为核心,单线程,单进程。Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计。对于高并发的解决方案,传统的架构是多线程模型,也就是为每个业务逻辑提供一个系统线程,通过系统线程切换来弥补同步式 I/O 调用时的时间开销。Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。事件驱动机制是Node.js通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文切换,这意味着面对大规模的http请求,Node.js凭借事件驱动搞定一切。因为Node是基于事件驱动和无阻塞的,所以非常适合处理并发请求。可以通过运行多个Node.js进程的方式来有效利用多个CPU。
服务端JavaScript
其实个人学习JavaScript算的很早之前了,但是因为之前工作的关系,一直使用的是Java后端的开发,真正用在工作之中,是在2013年了。Java感觉是规规矩矩,JavaScript却感觉是灵活与锋利。
一次偶然的机会才接触到Node.js,感觉打开了一扇新的大门,原来JavaScript也能这么后端。
从此之后,开发人员只用JavaScript就能编写整个Web应用,无需进行前后端语言的切换,以及各种跨语言的适配等等。
安装
Node.js的安装可以在官网获取安装,根据自己的系统选择相应的版本下载。
NPM
npm(Node Package Manager),是一个NodeJS包管理和分发的工具,已经成为了非官方的发布Node模块(包)的标准。
现在在官网下载安装NodeJS,一般已默认同时安装npm,可以通过npm --version
或npm -v
命令查看版本号。
之后就可以通过npm install xxx
进行模块安装了,比如我们可以下载express
这个web开发框架。
$ npm install express --save
另外,淘宝对npm
镜像同步了几乎所有的模块,以便国内开发者在安装模块时进行加速。可以通过以下命令进行安装。
$npm install -g cnpm --registery=https://registry.npm.taobao.org
Hello World!
NodeJS可以很快速简单的创建Http服务器,相比Apache HTTP服务器来说,要简单不少,它既能作为HTTP服务器,同时又能处理很多不同的逻辑。
从Hello World
入门来认识一下NodeJS,创建app.js文件,写入一下代码:
//请求http模块
var http = require("http");
//创建HTTP服务器
http.createServer(function(request, response) {
//写入头信息
response.writeHead(200, {"Content-Type": "text/plain"});
//打印Hello World
response.write("Hello World");
response.end();
}).listen(3000); //监听3000端口(nodejs服务器默认端口)
保存,进入该文件所在目录,在命令终端输入:
node app.js
打开浏览器,访问地址http://localhost:3000
会看到页面中Hello World
的结果。