欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談使用nodejs搭建web服務(wù)器的過(guò)程

 更新時(shí)間:2020年07月20日 14:27:09   作者:suwu150  
這篇文章主要介紹了淺談使用nodejs搭建web服務(wù)器的過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

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

什么是 Web 服務(wù)器?

Web服務(wù)器一般指網(wǎng)站服務(wù)器,是指駐留于因特網(wǎng)上某種類型計(jì)算機(jī)的程序,Web服務(wù)器的基本功能就是提供Web信息瀏覽服務(wù)。它只需支持HTTP協(xié)議、HTML文檔格式及URL,與客戶端的網(wǎng)絡(luò)瀏覽器配合。

大多數(shù) web 服務(wù)器都支持服務(wù)端的腳本語(yǔ)言(php、python、ruby)等,并通過(guò)腳本語(yǔ)言從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),將結(jié)果返回給客戶端瀏覽器。

目前最主流的三個(gè)Web服務(wù)器是Apache、Nginx、IIS。

Node.js 提供了 http 模塊,http 模塊主要用于搭建 HTTP 服務(wù)端和客戶端,使用 HTTP 服務(wù)器或客戶端功能必須調(diào)用 http 模塊,代碼如下:

var http = require('http');

在通常的服務(wù)器中,數(shù)據(jù)流通的方式是客戶先通過(guò)瀏覽器進(jìn)行發(fā)送請(qǐng)求,服務(wù)器在項(xiàng)目中進(jìn)行查找,然后進(jìn)客戶所需要的頁(yè)面進(jìn)行返回,在查找的過(guò)程中可能存在兩種情況,就是存在和不存在,當(dāng)然,我們會(huì)做出判斷,下面就是簡(jiǎn)單的服務(wù)器實(shí)現(xiàn)過(guò)程:

1、編寫服務(wù)器代碼server.js

var http=require('http');
var fs = require('fs');
var url = require('url');
 
//創(chuàng)建服務(wù)器
http.createServer(function(request,response) {
 //解析請(qǐng)求,包括文件名
 var pathname= url.parse(request.url).pathname;
 //輸出請(qǐng)求的文件名
 console.log("Request for "+ pathname + " received.");
 
 //從文件系統(tǒng)中都去請(qǐng)求的文件內(nèi)容
 fs.readFile(pathname.substr(1),function(err, data) {
 if(err) {
 console.log(err);
 //HTTP 狀態(tài)碼 404 : NOT FOUND
 //Content Type:text/plain
 response.writeHead(404,{'Content-Type': 'text/html'});
 }
 else {
 //HTTP 狀態(tài)碼 200 : OK
 //Content Type:text/plain
 response.writeHead(200,{'Content-Type': 'text/html'});
 
 //寫會(huì)相應(yīng)內(nèi)容
 response.write(data.toString());
 }
 //發(fā)送響應(yīng)數(shù)據(jù)
 response.end();
 });
}).listen(8081);
 
console.log('Server running at http://127.0.0.1:8081/');

通過(guò)上面代碼,我們就能夠?qū)崿F(xiàn)服務(wù)器對(duì)于文件的查找,下面,我們就進(jìn)行創(chuàng)建一個(gè)html文件,然后通過(guò)瀏覽器進(jìn)行訪問

2、編寫html文件(index.html),用于瀏覽器進(jìn)行請(qǐng)求

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>index</title>
</head>
<body>
 這是一個(gè)用于進(jìn)行nodejs服務(wù)器測(cè)試的html文件,我們能夠通過(guò)在瀏覽器上面輸入
 http://127.0.0.1:8081/WebServer/index.html進(jìn)行訪問
</body>
</html>

創(chuàng)建完之后,我們進(jìn)行測(cè)試,現(xiàn)在我的目錄結(jié)構(gòu)是這樣的:


3、進(jìn)行測(cè)試

    (1) 首先我們啟動(dòng)服務(wù)器,使用命令node WebServer/server.js  
    (2) 在瀏覽器進(jìn)行訪問,在url欄中輸入http://127.0.0.1:8081/WebServer/index.html   

其顯示效果如下所示:


后臺(tái)效果如下所示:


當(dāng)然,我們也能夠通過(guò)訪問通過(guò)http://127.0.0.1:8081/LoveYou.html訪問server.js文件夾外邊的文件,進(jìn)行到這里,我們就可以得到文件返回給前端,但是有些同學(xué)可能會(huì)問,樣式該怎么做??如下面代碼,我們進(jìn)行了樣式的定義,修改了兩個(gè)div的大小,并且給div設(shè)置邊框

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>index</title>
 <style>
 body {
 border: 1px solid red;
 }
 
 div {
 border-radius: 10px;
 width: 500px;
 height: 200px;
 border: 2px solid green;
 }
 </style>
</head>
<body>
這是一個(gè)用于進(jìn)行nodejs服務(wù)器測(cè)試的html文件,我們能夠通過(guò)在瀏覽器上面輸入
http://127.0.0.1:8081/WebServer/index.html進(jìn)行訪問
<div>1</div>
<div>2</div>
</body>
</html>

效果如下所示


有了這些,我們還會(huì)問,你這樣直接將樣式寫在html中,我可不干,我要把樣式寫道另外單獨(dú)一個(gè)文件中,然后通過(guò)引用的方式引入,于是就會(huì)有人使用下面代碼:

 <link rel="stylesheet"  rel="external nofollow" >

然而,這段代碼并不會(huì)起作用,因?yàn)閭鬟f給前端的方式Content-Type是有問題的,需要我們的服務(wù)器進(jìn)行下一步操作,也就是處理靜態(tài)文件。既然傳給前端時(shí)需要告訴type是css,那么我們就進(jìn)行區(qū)分對(duì)待,如下面代碼,我們對(duì)server.js進(jìn)行修改如下:

var http=require('http');
var fs = require('fs');
var url = require('url');
 
//創(chuàng)建服務(wù)器
http.createServer(function(request,response) {
 //解析請(qǐng)求,包括文件名
 var pathname= url.parse(request.url).pathname;
 //輸出請(qǐng)求的文件名
 console.log("Request for "+ pathname + " received.");
 //當(dāng)請(qǐng)求static文件夾時(shí),設(shè)置文件返回類型是text/css
 var firstDir = pathname && pathname.split('/')[2];
 var ContentType = null;
 if (firstDir && firstDir === 'static') {
 ContentType = {'Content-Type': 'text/css'};
 } else {
 ContentType = {'Content-Type': 'text/html'}
 }
 
 //從文件系統(tǒng)中去請(qǐng)求的文件內(nèi)容
 fs.readFile(pathname.substr(1),function(err, data) {
 if(err) {
 console.log(err);
 //HTTP 狀態(tài)碼 404 : NOT FOUND
 //Content Type:text/plain
 response.writeHead(404, {'Content-Type': 'text/html'});
 }
 else {
 //HTTP 狀態(tài)碼 200 : OK
 //Content Type:text/plain
 response.writeHead(200, ContentType);
 
 //寫會(huì)回相應(yīng)內(nèi)容
 response.write(data.toString());
 }
 //發(fā)送響應(yīng)數(shù)據(jù)
 response.end();
 });
}).listen(8081);
 
console.log('Server running at http://127.0.0.1:8081/');

接著,我們需要在項(xiàng)目中創(chuàng)建一個(gè)static文件夾,如下面所示結(jié)構(gòu):


在static文件夾中創(chuàng)建index.css文件,代碼內(nèi)容如下所示:

body {
 border: 1px solid blue;
}
 
div {
 border-radius: 10px;
 width: 400px;
 height: 200px;
 border: 2px solid yellow;
}

也就是修改body邊框?yàn)樗{(lán)色,div邊框?yàn)辄S色,同時(shí)我們需要更新index.html中文件內(nèi)容如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>index</title>
 <link rel="stylesheet"  rel="external nofollow" >
</head>
<body>
這是一個(gè)用于進(jìn)行nodejs服務(wù)器測(cè)試的html文件,我們能夠通過(guò)在瀏覽器上面輸入
http://127.0.0.1:8081/WebServer/index.html進(jìn)行訪問
<div>1</div>
<div>2</div>
</body>
</html>

也就是通過(guò)引入的方式將樣式引入到html文件中,然后在瀏覽器查看內(nèi)容,效果如下所示:

很明顯,我們的樣式已經(jīng)通過(guò)引入的方式引進(jìn)到html頁(yè)面中了,同樣的原理,我們能夠進(jìn)行將js也通過(guò)引入的方式進(jìn)行使用,在這里我就不一一貼出代碼了,看看效果如下所示:


在上面效果中,當(dāng)我點(diǎn)擊2號(hào)div的時(shí)候,將會(huì)調(diào)用我在js文件夾中的方法去執(zhí)行彈窗,詳細(xì)代碼請(qǐng)到github下載:https://github.com/suwu150/node-http-server

使用 Node 創(chuàng)建 Web 客戶端

Node 創(chuàng)建 Web 客戶端需要引入 http 模塊,創(chuàng)建 client.js 文件,代碼如下所示:

var http = require('http');
//用于請(qǐng)求的選項(xiàng)
var options = {
 host: 'localhost',
 port: '8081',
 path: '/WebServer/index.html'
};
 //處理響應(yīng)的回調(diào)函數(shù)
var callback= function(response) {
 //不斷更新數(shù)據(jù)
 var body = '';
 response.on('data',function(data) {
 body+=data;
 });
 response.on('end', function() {
 //數(shù)據(jù)接收完成
 console.log(body);
 });
};
//向服務(wù)器端發(fā)送請(qǐng)求
var req = http.request(options, callback);
req.end();

新打開終端,運(yùn)行程序如下所示:


對(duì)與服務(wù)器,可以參見我以前寫過(guò)的服務(wù)器,其工作原理是一致的:http://www.dbjr.com.cn/article/191240.htm 這是使用java進(jìn)行寫的服務(wù)器

到此這篇關(guān)于淺談使用nodejs搭建web服務(wù)器的過(guò)程的文章就介紹到這了,更多相關(guān)nodejs搭建web服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 我用的一些Node.js開發(fā)工具、開發(fā)包、框架等總結(jié)

    我用的一些Node.js開發(fā)工具、開發(fā)包、框架等總結(jié)

    這篇文章主要介紹了我個(gè)人使用的一些Node.js開發(fā)工具、開發(fā)包、框架等總結(jié),需要的朋友可以參考下
    2014-09-09
  • 傻瓜式解讀koa中間件處理模塊koa-compose的使用

    傻瓜式解讀koa中間件處理模塊koa-compose的使用

    這篇文章主要介紹了傻瓜式解讀koa中間件處理模塊koa-compose的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • node.js中的buffer.toString方法使用說(shuō)明

    node.js中的buffer.toString方法使用說(shuō)明

    這篇文章主要介紹了node.js中的buffer.toString方法使用說(shuō)明,本文介紹了buffer.toString的方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 給nodejs升級(jí)的兩種方法

    給nodejs升級(jí)的兩種方法

    nodejs是一種流行的服務(wù)器端JavaScript運(yùn)行環(huán)境,它經(jīng)常需要更新以獲取最新的功能和性能優(yōu)化,本文將給大家介紹了給nodejs升級(jí)的兩種方法,文中通過(guò)代碼示例講解非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • node版本管理工具n包使用教程詳解

    node版本管理工具n包使用教程詳解

    這篇文章主要介紹了node版本管理工具n包使用教程詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • node+express實(shí)現(xiàn)分頁(yè)效果

    node+express實(shí)現(xiàn)分頁(yè)效果

    這篇文章主要為大家詳細(xì)介紹了node+express實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法

    webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法

    今天小編就為大家分享一篇webstorm配置支持nodejs并自動(dòng)補(bǔ)全的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Node.js操作MongoDB數(shù)據(jù)庫(kù)實(shí)例分析

    Node.js操作MongoDB數(shù)據(jù)庫(kù)實(shí)例分析

    這篇文章主要介紹了Node.js操作MongoDB數(shù)據(jù)庫(kù),結(jié)合實(shí)例形式分析了node.js連接MongoDB數(shù)據(jù)庫(kù)以及增刪改查等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • express.js中間件說(shuō)明詳解

    express.js中間件說(shuō)明詳解

    這篇文章主要介紹了express.js中間件說(shuō)明詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 吐槽一下我所了解的Node.js

    吐槽一下我所了解的Node.js

    用了一年多 Node.js, 現(xiàn)在已經(jīng)是 Node.js 的腦殘粉了,這篇日志比較雜,算是我對(duì) Node.js 方方面面的一個(gè)集中吐槽。
    2014-10-10

最新評(píng)論