Node.js的HTTP模塊、URL模塊與supervisor工具介紹
一、Node.js創(chuàng)建第一個(gè)應(yīng)用
如果我們使用 PHP 來編寫后端的代碼時(shí),需要 Apache 或者 Nginx 的 HTTP 服務(wù)器, 來處理客戶端的請(qǐng)求相應(yīng)。不過對(duì) Node.js 來說,概念完全不一樣了。使用 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ù)器
接下來我們使用 http.createServer() 方法創(chuàng)建服務(wù)器,并使用 listen 方法綁定 8888 端口。函數(shù)通過 request, response 參數(shù)來接收和響應(yīng)數(shù)據(jù)。
/* 如果我們使用PHP來編寫后端的代碼時(shí),需要Apache 或者 Nginx 的HTTP 服務(wù)器,并配上 mod_php5 模塊和php-cgi,來處理客戶端的請(qǐng)求相應(yīng)。 不過對(duì) Node.js 來說,概念完全不一樣了。使用 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)目錄。通過node 命令運(yùn)行程序。
瀏覽器運(yùn)行
你會(huì)發(fā)現(xiàn),我們本地寫一個(gè) js,打死都不能直接拖入瀏覽器運(yùn)行,但是有了 node,我們?nèi)魏我粋€(gè) js 文件,都可以通過 node 來運(yùn)行。也就是說,node 就是一個(gè) js 的執(zhí)行環(huán)境。
二、HTTP 模塊、URL 模塊
Node.js 中,將很多的功能,劃分為了一個(gè)個(gè) module(模塊)。 Node.js 中的很多功能都是通過模塊實(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)聽端口 server.listen(3000,"127.0.0.1");
設(shè)置一個(gè)響應(yīng)頭:
res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"});
我們現(xiàn)在來看一下 req 里面能夠使用的東西。
最關(guān)鍵的就是 req.url 屬性,表示用戶的請(qǐng)求 URL 地址。所有的路由設(shè)計(jì),都是通過 req.url
來實(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文件
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
nodejs中art-template模板語法的引入及沖突解決方案
本篇文章主要介紹了nodejs中art-template模板語法的引入及沖突解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11Node Puppeteer圖像識(shí)別實(shí)現(xiàn)百度指數(shù)爬蟲的示例
本篇文章主要介紹了Node Puppeteer圖像識(shí)別實(shí)現(xiàn)百度指數(shù)爬蟲的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02Nodejs+angularjs結(jié)合multiparty實(shí)現(xiàn)多圖片上傳的示例代碼
這篇文章主要介紹了Nodejs+angularjs結(jié)合multiparty實(shí)現(xiàn)多圖片上傳的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09修改node.js默認(rèn)的npm安裝目錄實(shí)例
今天小編就為大家分享一篇修改node.js默認(rèn)的npm安裝目錄實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-05-05node實(shí)現(xiàn)定時(shí)發(fā)送郵件的示例代碼
本篇文章主要介紹了node實(shí)現(xiàn)定時(shí)發(fā)送郵件的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08