我们打开浏览器浏览网页时,点击上面不同的模块,地址栏中的路由会发生相应的变化,从而,浏览器向服务器发起请求的内容也会发生改变,那么服务端,是如何来做的呢?
服务端也是,通过路由来做出不同的响应的,我们已经知道,服务器对象的参数有request,和response两个参数。request里就携带了,浏览器请求所携带的值。
request.url返回的是浏览器中路由的值
我们可以根据这个值来判断,服务器需要返回给浏览器什么内容,
下面来看一下server.js的代码:
var http = require("http"); var fs = require("fs"); var startServer = function(){ var onRequest = function(request,response){ console.log("request received"+request.url); if(request.url==="/"||request.url==="/home"){ response.writeHead(200,{"Content-Type":"text/html"}); fs.createReadStream(__dirname+"/index.html","utf8").pipe(response); }else if(request.url==="/review"){ response.writeHead(200,{"Content-Type":"text/html"}); fs.createReadStream(__dirname+"/review.html","utf8").pipe(response); }else if(request.url==="/api"){ response.writeHead(200,{"Content-Type":"application/json"}); var jsonObj={name:"lili",job:"coder",age:18}; response.end(JSON.stringify(jsonObj)); }else{ response.writeHead(200,{"Content-Type":"text/html"}); fs.createReadStream(__dirname+"/404.html","utf8").pipe(response); } } var server = http.createServer(onRequest); //最后让服务器监听一个端口 server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地 console.log("server started on localhost port 3000");//加一个服务器启动起来的提示 } module.exports.startServer=startServer;
上面server.js中,根据不同的路由,让服务器返回给浏览器不同的内容,当找不到内容时,返回一个404页面
把server.js引入到app.js中
var server = require("./server"); server.startServer();
执行node app
在浏览器中 localhost:3000
后面跟上不同的路由,会显示不同的页面,当匹配不到路由时,会显示404页面!!!