1. 路由選擇過(guò)程 處理不同的HTTP請(qǐng)求在我們的代碼中是一個(gè)不同的部分,叫做“路由選擇”。 那么,我們接下來(lái)就創(chuàng)造一個(gè)叫做 路由 的模塊吧。我們需要查看HTTP請(qǐng)求,從中提取出請(qǐng)求的URL以及GET/POST參數(shù)。 url.parse(string).query | url.parse(string).pathname | | | | | ------ ------------------- http://localhost:8888/start?foo=bar&hello=world --- ----- | | | | querystring(string)["foo"] | | querystring(string)["hello"] 2. 路由選擇實(shí)現(xiàn)代碼 新建屬于服務(wù)器端的路由文件router.js 復(fù)制代碼 1 //-----------------router.js-------------------------------- 2 module.exports={ 3 login:function(req,res){ 4 res.write("我是login方法"); 5 }, 6 register:function(req,res){ 7 res.write("我是注冊(cè)方法"); 8 } 9 } 復(fù)制代碼 服務(wù)端調(diào)用路由,方式和上一節(jié)課《nodejs進(jìn)階2--函數(shù)模塊調(diào)用》中最后提到的字符串調(diào)用函數(shù)一樣。 復(fù)制代碼 1 //---------4_router.js----------- 2 var http = require('http'); 3 var url = require('url'); 4 var router = require('./router'); 5 http.createServer(function (request, response) { 6 response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); 7 if(request.url!=="/favicon.ico"){ 8 var pathname = url.parse(request.url).pathname;//得到請(qǐng)求的路徑 9 console.log(pathname); 10 pathname = pathname.replace(/\//, '');//替換掉前面的/ 11 console.log(pathname); 12 router[pathname](request,response); 13 response.end(''); 14 } 15 }).listen(8000); 16 console.log('Server running at http://127.0.0.1:8000/'); 復(fù)制代碼 上面我們用到了node自帶模塊url。url.path(urlStr):將一個(gè)URL字符串轉(zhuǎn)換成對(duì)象并返回。 3. url.path(urlStr)實(shí)例 下面展示兩個(gè)url.parse的實(shí)例 例1. url.parse('http://stackoverflow.com/questions/17184791').pathname 結(jié)果為:"/questions/17184791"  例2: 復(fù)制代碼 1 var url = require('url'); 2 var a = url.parse('http://example.com:8080/one?a=index&t=article&m=default'); 3 console.log(a); 4 5 //輸出結(jié)果: 6 { 7 protocol : 'http' , 8 auth : null , 9 host : 'example.com:8080' , 10 port : '8080' , 11 hostname : 'example.com' , 12 hash : null , 13 search : '?a=index&t=article&m=default', 14 query : 'a=index&t=article&m=default', 15 pathname : '/one', 16 path : '/one?a=index&t