---恢复内容开始---
nodejs的安装请参考官网:https://github.com/joyent/node/wiki/Installation
第一 小试牛刀
在服务器的根目录创建server.js
1 //请求(require)Node.js自带的http模块 并且将其赋值给http 2 var http = require("http"); 3 //调用http的createServer函数,这个函数返回一个对象。这个对象有一个listen方法 此方法接收一个数值参数 用来指定服务器端口号 4 //看到里面的function没有 这个可是高级货啊 在js里面可以进行函数的传递 并且这里使用的是匿名函数。 5 http.createServer(function(reueset , response){ 6 response.writeHead(200, {"Content-Type" : "text/plain"}); 7 response.write("hello world"); 8 response.end(); 9 }).listen(8888);
运行node server.js
然后在浏览器里面访问localhost:8888 你会在页面上看到 hello world
第二:nodejs是基于事件驱动的
多问下自己nodejs为什么是基于事件回调的?
建议先看下:
Understanding node.js
当我们使用 http.createServer 方法的时候,我们当然不只是想要一个 侦听某个端口的服务器,我们还想要它在服务器收到一个 HTTP 请求的 时候做点什么。
问题是,这是异步的:请求任何时候都可能到达,但是我们的服务器却 跑在一个单进程中。
写 PHP 应用的时候,我们一点也不为此担心:任何时候当有请求进入 的时候,网页服务器(通常是 Apache)就为这一请求新建一个进程, 并且开始从头到尾执行相应的 PHP 脚本。
那么在我们的 Node.js 程序中,当一个新的请求到达 8888 端口的时候, 我们怎么控制流程呢?
嗯,这就是 Node.js/JavaScript 的事件驱动设计能够真正帮上忙的地方 了——虽然我们还得学一些新概念才能掌握它。让我们来看看这些概念 是怎么应用在我们的服务器代码里的
我们创建了服务器,并且向创建它的方法传递了一个函数。无论何时我 们的服务器收到一个请求,这个函数就会被调用。
我们不知道这件事情什么时候会发生,但是我们现在有了一个处理请求 的地方:它就是我们传递过去的那个函数。至于它是被预先定义的函数 还是匿名函数,就无关紧要了。
这个就是传说中的 回调 。我们给某个方法传递了一个函数,这个方法 在有相应事件发生时调用这个函数来进行 回调 。
第三:服务器是如何处理请求的
当回调启动,我们的 onRequest() 函数被触发的时候,有两个参数被传 入:request 和 response 。
它们是对象,你可以使用它们的方法来处理 HTTP 请求的细节,并且响 应请求(比如向发出请求的浏览器发回一些东西)。
所以我们的代码就是:当收到请求时,使用 response.writeHead() 函 数发送一个 HTTP 状态 200 和 HTTP 头的内容类型(content-type), 使用 response.write() 函数在 HTTP 相应主体中发送文本“Hello World"。
最后,我们调用 response.end() 完成响应
第四 模块化
如何模块化?
看下代码 server.js
1 var http = require("http"); 2 function start() { 3 function onRequest(request, response) { 4 console.log("Request received."); 5 response.writeHead(200, {"Content-Type": "text/plain"}); 6 response.write("Hello World"); 7 response.end(); 8 } 9 http.createServer(onRequest).listen(8888); 10 console.log("Server has started."); 11 } 12 //关键的地方 导出什么呢? 13 exports.start = start;
在看看在index.js
1 var server = require("./server");2 server.start();
请求这个文件(server.js)并将其赋值给server变量,然后导出的函数就可以被使用了。
这样之后,我们只需要执行 node index.js就启动服务了