搭建一个简单的服务器html
经过下面的代码能够搭建一个简单的服务器:前端
var http = require("http"); http.createServer(function(request,response){ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello my first demo"); response.end(); }).listen("8080"); console.log("server start");
搭建一个简单的服务器须要依赖http模块,经过http.createServer()来生成一个服务器实例经过listen()来启动这个实例。node
http.createServer()参数是一个函数,这个函数的两个参数分别为request和response,request记录着从前端到服务器的各类信息,response记录从服务器端到前端的各类信息。服务器
request有三个重要的属性:request.url:表示请求的地址,request.method:表示请求的方式,request.headers:表示全部的请求头信息。函数
另外咱们能够经过request.setEncoding()来设置请求的编码。post
咱们也能够经过on()来为request的事件来注册处理函数,request.on()有两个事件分别为data和end,data表示正在接收数据,end表示数据接收完成,咱们从前台向服务器发送数据经常使用的方式就是get和post,对于get请求咱们能够直接从url中提取出传输的数据,而post的数据通常是放在请求体中的此时咱们就须要data这个事件来获取前台的发送数据,使用方式为:ui
var postData = ""; request.on("data",function(data){ postData +=data; }); request.on("end",function(){ console.log(postData); });
在开始的例子中response.writeHead用来设置http返回的头信息,write()的参数表示要写入的内容,end()用来将write()的内容写入到response对象中。this
listen()函数表示启动当前的http实例,listen()函数能够接收两个参数,第一个参数表示要监听的端口,第二个参数表示要监听的地址,也就是只有请求地址符合listen()的设置,http.createServer()里面的函数才会执行,listen()的默认地址为localhost。编码
处理不一样的请求url
上面的例子对于全部的请求执行的操做都是同样的,在实际开发中这个状况是不存在,咱们须要针对不一样的URL来作不一样的处理,此时咱们就须要对request对象的url属性进行判断了:
var http = require("http"); var demo = http.createServer(function(request,response){ var path = request.url; console.log(path); switch(path){ case "/homepage": response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello this is homepage"); response.end(); break; case "/details": response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello this is details"); response.end(); break; default: response.writeHead(404,{"Content-Type":"text/plain"}); response.write("sorry"); response.end(); break; } }).listen("8080"); console.log("server start");
返回一个html页面
上面的这些咱们只是返回几个字而已,正常状况下咱们返回的一般是一个完整的页面,若是咱们在response.write()中拼一个html页面出来,就会很麻烦并且很容易出错,此时咱们就能够利用fs模块来简化这个操做:
var http = require("http"); var fs = require("fs"); var demo = http.createServer(function(request,response){ var path = request.url; if(path=="/register"){ fs.readFile("register.html",function(err,data){ response.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}); response.write(data); response.end(); }); }else{ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello node"); response.end(); } }).listen("8080"); console.log("server start");