Learning NodeJs(1)

原创
2013/07/02 16:12
阅读数 67

「简介」 NodeJs是一个将JavaScript运行在服务端的开发平台,其最大的特点是异步I/O和事件驱动。通俗一点来说,NodeJs是JavaScript在服务器端的一个实现,其中自带了http的服务器,因此其地位相当与Apache+PHP。至于事件驱动,通俗来说也就是callback机制,事先为每个事件注册一些listener,当事件被触发的时候,会自动执行listener。而异步I/O,是建立在事件驱动之上,在每个I/O操作的时候不会去等待操作完成,而是在添加一个事件listener之后继续执行下面的语句。当I/O事件完成之后,其对应的listener才会被执行。

「安装」 NodeJs的安装比较简单,在此略过。(linux上面package名称一般为nodejs)但是有一点要说明的是,NodeJs有一个叫做npm的包管理器(或者说是插件管理器比较好?),可以用来安装各种NodeJs的拓展。npm一般在安装NodeJs的时候会被自动安装。

「命令使用」 安装好NodeJs之后,可以使用node命令来运行NodeJs程序(也就是js文件)。其大概的用法和python比较类似,不带参数的时候会进入到REPL模式;或者可以加一个xxx.js文件来执行文件中的JavaScript;或者可以使用'-e'等参数直接执行JavaScript语句。

「使用http服务器」

//http.js
var http = require('http');
http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<h1>Hello World</h1>');
    res.end('<h2>end of html</h2>');
}).listen(3000);
console.log("HTTP Server is listening to port 3000");
用node命令执行上面的文件,然后访问http://127.0.0.1:3000,可以看到输出的信息。


我们来分析一下代码。require('http')引用了http包,并将其赋值给http变量。然后调用了http.createServer来创建一个服务器,服务器中有个callback函数,函数中的req,res分别代表request和response。writeHead向response中写入了回复头信息,write向response中写入信息,而end也是写入信息,但是在写完之后会把整个response发出去。listen(3000)表示在3000端口开始监听。这个时候通过http://127.0.0.1:3000访问,则会被http server监听到,执行其中的callback函数。

NodeJs提供了很底层的http server,但是直接使用起来是很费力的(什么事情都要自己做)。还好NodeJs的大量拓展中有一些实现了较高层的http server,比如express。

「express」express框架是目前最稳定、应用最广的Web开发框架。提供了http的高层接口,并实现了一些其他功能。

「express安装」$ npm install -g express

「express创建工程」$ express -e projectname

express会自动创建很多文件,并且会提示你进入文件夹下载依赖。(上面-e的意思是使用ejs作为模板引擎,而不是默认的Jade)

「express启动」使用$ node app.js 来启动http服务器。

(to be continued...
展开阅读全文
打赏
0
0 收藏
分享
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部