Node.js的HTTP模塊、URL模塊與supervisor工具介紹
一、Node.js創(chuàng)建第一個(gè)應(yīng)用
如果我們使用 PHP 來(lái)編寫(xiě)后端的代碼時(shí),需要 Apache 或者 Nginx 的 HTTP 服務(wù)器, 來(lái)處理客戶端的請(qǐng)求相應(yīng)。不過(guò)對(duì) Node.js 來(lái)說(shuō),概念完全不一樣了。使用 Node.js 時(shí),我們不僅僅在實(shí)現(xiàn)一個(gè)應(yīng)用,同時(shí)還實(shí)現(xiàn)了整個(gè) HTTP 服務(wù)器。
1、引入 http 模塊
var http = require("http");2、創(chuàng)建服務(wù)器
接下來(lái)我們使用 http.createServer() 方法創(chuàng)建服務(wù)器,并使用 listen 方法綁定 8888 端口。函數(shù)通過(guò) request, response 參數(shù)來(lái)接收和響應(yīng)數(shù)據(jù)。
/*
如果我們使用PHP來(lái)編寫(xiě)后端的代碼時(shí),需要Apache 或者 Nginx 的HTTP 服務(wù)器,并配上 mod_php5 模塊和php-cgi,來(lái)處理客戶端的請(qǐng)求相應(yīng)。
不過(guò)對(duì) Node.js 來(lái)說(shuō),概念完全不一樣了。使用 Node.js 時(shí),我們不僅僅 在實(shí)現(xiàn)一個(gè)應(yīng)用,同時(shí)還實(shí)現(xiàn)了整個(gè) HTTP 服務(wù)器。
*/
//1.引入http模塊
var http=require('http');
//2.用http模塊創(chuàng)建服務(wù)
/*
* request 獲取url信息
* response 瀏覽器返回響應(yīng)信息
*/
http.createServer(function(request,response){
// 發(fā)送 HTTP 頭部
// HTTP 狀態(tài)值: 200 : OK
//設(shè)置 HTTP 頭部,狀態(tài)碼是 200,文件類型是 html,字符集是 UTF-8
response.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
// 發(fā)送響應(yīng)數(shù)據(jù)
response.end('你好 nodejs');
}).listen(8001);
// 終端打印如下信息
console.log('Server running at http://127.0.0.1:8001/');
3.運(yùn)行程序
用命令行切換到程序?qū)?yīng)目錄。通過(guò)node 命令運(yùn)行程序。

瀏覽器運(yùn)行

你會(huì)發(fā)現(xiàn),我們本地寫(xiě)一個(gè) js,打死都不能直接拖入瀏覽器運(yùn)行,但是有了 node,我們?nèi)魏我粋€(gè) js 文件,都可以通過(guò) node 來(lái)運(yùn)行。也就是說(shuō),node 就是一個(gè) js 的執(zhí)行環(huán)境。
二、HTTP 模塊、URL 模塊
Node.js 中,將很多的功能,劃分為了一個(gè)個(gè) module(模塊)。 Node.js 中的很多功能都是通過(guò)模塊實(shí)現(xiàn)。
2.1、HTTP模塊的使用
//引用模塊
var http = require("http");
//創(chuàng)建一個(gè)服務(wù)器,回調(diào)函數(shù)表示接收到請(qǐng)求之后做的事情
var server = http.createServer(function(req,res){
//req 參數(shù)表示請(qǐng)求, res 表示響應(yīng)
console.log("服務(wù)器接收到了請(qǐng)求" + req.url);
res.end(); // End 方法使 Web 服務(wù)器停止處理腳本并返回當(dāng)前結(jié)果
});
//監(jiān)聽(tīng)端口
server.listen(3000,"127.0.0.1");設(shè)置一個(gè)響應(yīng)頭:
res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"});
我們現(xiàn)在來(lái)看一下 req 里面能夠使用的東西。
最關(guān)鍵的就是 req.url 屬性,表示用戶的請(qǐng)求 URL 地址。所有的路由設(shè)計(jì),都是通過(guò) req.url
來(lái)實(shí)現(xiàn)的。
我們比較關(guān)心的不是拿到 URL,而是識(shí)別這個(gè) URL。
識(shí)別 URL,用到了下面的 url 模塊
2.2、 URL 模塊的使用
url.parse() //解析 URL url.format(urlObject) //是上面 url.parse() 操作的逆向操作 url.resolve(from, to) //添加或者替換地址
var http = require('http');
var url = require('url');
// 2.用http模塊創(chuàng)建服務(wù)
/*
req獲取url信息 (request)
res 瀏覽器返回響應(yīng)信息 (response)
*/
http.createServer(function(req, res) {
// 輸入http://localhost:8001/news?aid=123 拿到aid
// 輸入http://localhost:8001/news?aid=123&cid=3 拿到aid和cid
// req.url 獲取瀏覽器url輸入的信息
// var query=url.parse(req.url,true);
// console.log(query);
res.writeHead(200,{"Content-Type":"text/html;charset=UTF-8"});
if (req.url != '/favicon.ico') {
//http://localhost:8001/news?aid=123
console.log(req.url); //返回 /news?aid=123
var result = url.parse(req.url, true); //第一個(gè)參數(shù)是地址 第二個(gè)參數(shù)是true的話表示把get傳值轉(zhuǎn)換成對(duì)象
console.log('aid=' + result.query.aid);
/*獲取url的get傳值*/
console.log('cid=' + result.query.cid);
}
res.write('你好 nodejs');
res.end();
/*結(jié)束響應(yīng)*/
}).listen(8001);1、url.parse()




2、url.format()

3、url.resolve()

三、Nodejs 自啟動(dòng)工具 supervisor
supervisor 會(huì)不停的 watch 你應(yīng)用下面的所有文件,發(fā)現(xiàn)有文件被修改,就重新載入程序文件這樣就實(shí)現(xiàn)了部署,修
改了程序文件后馬上就能看到變更后的結(jié)果。麻麻再也不用擔(dān)心我的重啟 nodejs 了!
1. 首先安裝 supervisor
npm install -g supervisor
2. 使用 supervisor 代替 node 命令啟動(dòng)應(yīng)用
supervisor js文件

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
NodeJS學(xué)習(xí)筆記之網(wǎng)絡(luò)編程
Node.js采用了Google Chrome瀏覽器的V8引擎,性能很好,同時(shí)還提供了很多系統(tǒng)級(jí)的API,如文件操作、網(wǎng)絡(luò)編程等。Node.js則是一個(gè)全面的后臺(tái)運(yùn)行時(shí),為Javascript提供了其他語(yǔ)言能夠?qū)崿F(xiàn)的許多功能。今天我們來(lái)看下Nodejs的網(wǎng)絡(luò)編程2014-08-08
node.js學(xué)習(xí)筆記之koa框架和簡(jiǎn)單爬蟲(chóng)練習(xí)
這篇文章主要介紹了node.js學(xué)習(xí)筆記之koa框架和簡(jiǎn)單爬蟲(chóng)練習(xí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
nodejs操作mongodb的填刪改查模塊的制作及引入實(shí)例
下面小編就為大家分享一篇nodejs操作mongodb的填刪改查模塊的制作及引入實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
node.js中的path.dirname方法使用說(shuō)明
這篇文章主要介紹了node.js中的path.dirname方法使用說(shuō)明,本文介紹了path.dirname的方法說(shuō)明、語(yǔ)法、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下2014-12-12
用Electron寫(xiě)個(gè)帶界面的nodejs爬蟲(chóng)的實(shí)現(xiàn)方法
這篇文章主要介紹了用Electron寫(xiě)個(gè)帶界面的nodejs爬蟲(chóng)的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

