最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js創(chuàng)建Web、TCP服務(wù)器

 更新時(shí)間:2017年12月05日 14:52:13   投稿:laozhang  
這篇文章主要介紹了用Node.js創(chuàng)建Web服務(wù)器和TCP服務(wù)器的方法和處理技巧,需要的讀者們學(xué)習(xí)一下吧。

使用http模塊創(chuàng)建Web服務(wù)器

Web服務(wù)器的功能:

接受HTTP請(qǐng)求(GET、POST、DELETE、PUT、PATCH)

處理HTTP請(qǐng)求(自己處理,或請(qǐng)求別的程序處理)

做出響應(yīng)(返回頁(yè)面、文件、各類數(shù)據(jù)等)

常見(jiàn)的Web服務(wù)器架構(gòu):

Nginx、Apache:負(fù)責(zé)接受HTTP請(qǐng)求,確定誰(shuí)來(lái)處理請(qǐng)求,并返回請(qǐng)求的結(jié)果

php-fpm / php模塊:處理分配給自己的請(qǐng)求,并將處理結(jié)果返回給分配者

常見(jiàn)請(qǐng)求種類:

請(qǐng)求文件:包括靜態(tài)文件(網(wǎng)頁(yè)、圖片、前端JavaScript文件、css文件...),及由程序處理得到的文件

完成特定的操作:如登錄、獲取特定數(shù)據(jù)等

Node.js的Web服務(wù)器:

不依賴其他特定的Web服務(wù)器軟件(如Apache、Nginx、IIS......)

Node.js代碼處理請(qǐng)求的邏輯

Node.js代碼負(fù)責(zé)Web服務(wù)器的各種“配置”

使用Express創(chuàng)建Web服務(wù)器

簡(jiǎn)單的Express服務(wù)器

靜態(tài)文件服務(wù)

路由

中間件

簡(jiǎn)單的Express服務(wù)器:

var express = require('express'); 
var app = express(); 
app.get('', function(req, res){ 
<span style="white-space:pre"> </span>res.end('hello\n'); 
<span style="white-space:pre"> </span>}); 
<span style="white-space:pre"> </span>app.listen(18001, function afterListen(){ 
<span style="white-space:pre"> </span>console.log('express running on http://localhost:18001'); 
<span style="white-space:pre"> </span>}); 

靜態(tài)文件范圍:

網(wǎng)頁(yè)、純文本、圖片、前端JavaScript代碼、CSS樣式表文件、媒體文件、字體文件

使用Express訪問(wèn)靜態(tài)文件

<span style="white-space:pre"></span>app.use(express.static('./public'));

路由:

將不同的請(qǐng)求,分配給相應(yīng)的處理函數(shù)

區(qū)分:路徑、請(qǐng)求方法

三種路由實(shí)現(xiàn)方法:

path:比較簡(jiǎn)單

Router:比較適合同一個(gè)路由下的多個(gè)子路由

route:比較適合API

中間件

Connect:Node.js的中間件框架

分層處理

每層實(shí)現(xiàn)一個(gè)功能

創(chuàng)建TCP服務(wù)器

使用net模塊創(chuàng)建TCP服務(wù)器

使用telnet連接TCP服務(wù)器

使用net創(chuàng)建TCP客戶端

利用node.js搭建簡(jiǎn)單web服務(wù)器JS代碼部分:

var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三個(gè)參數(shù),用來(lái)接收目錄,可為空,相對(duì)當(dāng)前server.js文件的目錄名稱
// 比如使用命令 node server debug,意思就是debug文件夾與server.js文件同級(jí)
// 且你想以debug文件夾啟動(dòng)web服務(wù)
 
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
dir = dir ? dir : pathname; // 記住dir(目錄)
pathname = dir ? pathname.replace(dir, dir + arg + '/') : pathname; // 替換文件靜態(tài)路徑
if (path.extname(pathname) == "") {
pathname += "/";
}
if (pathname.charAt(pathname.length - 1) == "/") {
pathname += "index.html"; // 入口文件,此處默認(rèn)index.html
}
 
fs.exists(pathname, function (exists) {
if (exists) {
switch (path.extname(pathname)) {
case ".html":
res.writeHead(200, {"Content-Type": "text/html"});
break;
case ".js":
res.writeHead(200, {"Content-Type": "text/javascript"});
break;
case ".css":
res.writeHead(200, {"Content-Type": "text/css"});
break;
case ".gif":
res.writeHead(200, {"Content-Type": "image/gif"});
break;
case ".jpg":
res.writeHead(200, {"Content-Type": "image/jpeg"});
break;
case ".png":
res.writeHead(200, {"Content-Type": "image/png"});
break;
default:
res.writeHead(200, {"Content-Type": "application/octet-stream"});
} 
// res可以自己添加信息來(lái)簡(jiǎn)單交互 比如可以修改點(diǎn)header信息 或者修改返回的資源數(shù)據(jù)
fs.readFile(pathname, function (err, data) {
res.end(data);
});
}
else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("<h1>404 Not Found</h1>");
}
});
}).listen(8085, "127.0.0.5"); // 服務(wù)器端口
console.log("server running at http://127.0.0.5:8085/");

相關(guān)文章

  • node中koa中間件機(jī)制詳解

    node中koa中間件機(jī)制詳解

    本篇文章主要主要介紹了node中koa中間件機(jī)制詳解,詳細(xì)的介紹了koa和兼容問(wèn)題,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-08-08
  • 使用node打造自己的命令行工具方法教程

    使用node打造自己的命令行工具方法教程

    這篇文章主要介紹了使用node打造自己的命令行工具方法教程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Node發(fā)出HTTP POST請(qǐng)求的方法實(shí)例小結(jié)

    Node發(fā)出HTTP POST請(qǐng)求的方法實(shí)例小結(jié)

    這篇文章主要介紹了Node發(fā)出HTTP POST請(qǐng)求的方法,結(jié)合實(shí)例形式總結(jié)分析了三種常用的post請(qǐng)求操作方法,以及相關(guān)庫(kù)操作注意事項(xiàng),需要的朋友可以參考下
    2023-05-05
  • koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼

    koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼

    這篇文章主要介紹了koa+mongoose實(shí)現(xiàn)簡(jiǎn)單增刪改查接口的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • linux服務(wù)器快速卸載安裝node環(huán)境(簡(jiǎn)單上手)

    linux服務(wù)器快速卸載安裝node環(huán)境(簡(jiǎn)單上手)

    這篇文章主要介紹了linux服務(wù)器快速卸載安裝node環(huán)境(簡(jiǎn)單上手),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Nodejs學(xué)習(xí)筆記之NET模塊

    Nodejs學(xué)習(xí)筆記之NET模塊

    之前兩篇文章基本上都是給我們介紹的nodejs的理論基礎(chǔ),今天我們來(lái)點(diǎn)干貨,先從NET模塊開(kāi)始講起吧。
    2015-01-01
  • node.js讀取Excel數(shù)據(jù)(下載圖片)的方法示例

    node.js讀取Excel數(shù)據(jù)(下載圖片)的方法示例

    這篇文章主要給大家介紹了關(guān)于node.js讀取Excel數(shù)據(jù)(下載圖片)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • npm與node版本不匹配問(wèn)題解決思路及方法

    npm與node版本不匹配問(wèn)題解決思路及方法

    當(dāng)nodejs和npm的版本不匹配時(shí),會(huì)出現(xiàn)一些奇怪的報(bào)錯(cuò),這是因?yàn)閚pm與nodejs版本不兼容導(dǎo)致的,這篇文章主要給大家介紹了關(guān)于npm與node版本不匹配問(wèn)題解決思路及方法的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • nodejs 子進(jìn)程正確的打開(kāi)方式

    nodejs 子進(jìn)程正確的打開(kāi)方式

    本文給大家總結(jié)了nodejs 子進(jìn)程的正確用法,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2017-07-07
  • NPM全局安裝與本地安裝的區(qū)別詳析

    NPM全局安裝與本地安裝的區(qū)別詳析

    NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于NPM全局安裝與本地安裝區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-10-10

最新評(píng)論

同仁县| 团风县| 莱芜市| 岫岩| 德安县| 囊谦县| 石河子市| 闸北区| 原阳县| 高青县| 寻乌县| 星座| 北辰区| 慈溪市| 巴里| 镇沅| 金阳县| 黄山市| 佛坪县| 遂宁市| 图木舒克市| 大渡口区| 珲春市| 河北省| 桦川县| 麻栗坡县| 泰顺县| 昌邑市| 富裕县| 四平市| 孟州市| 达州市| 衡阳市| 洛宁县| 衡南县| 邵东县| 六盘水市| 安顺市| 治县。| 东阳市| 宜兴市|