国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

node web模塊 (服務(wù)器端和客戶端)

MonoLog / 655人閱讀

摘要:模塊服務(wù)器服務(wù)器指網(wǎng)站服務(wù)器,指駐留在因特網(wǎng)上的某種程序,瀏覽器的基本功能,提供信息瀏覽服務(wù)支持服務(wù)器端的腳本語言,通過腳本語言從數(shù)據(jù)庫獲取數(shù)據(jù),將結(jié)果返回給客戶端瀏覽器應(yīng)用基本架構(gòu)即客戶端,通過協(xié)議向服務(wù)器發(fā)起請求服務(wù)器端,指服務(wù)器,接收

node web模塊

web服務(wù)器

web服務(wù)器指網(wǎng)站服務(wù)器,指駐留在因特網(wǎng)上的某種程序,web瀏覽器的基本功能,提供信息瀏覽服務(wù)
web支持服務(wù)器端的腳本語言,通過腳本語言從數(shù)據(jù)庫獲取數(shù)據(jù),將結(jié)果返回給客戶端瀏覽器

web應(yīng)用基本架構(gòu)
Client => Server => Business => Data
Client 即客戶端,通過http協(xié)議向服務(wù)器發(fā)起請求
Server 服務(wù)器端,指web服務(wù)器,接收客戶端請求,并向客戶端發(fā)送響應(yīng)的數(shù)據(jù)
Business 即業(yè)務(wù)層,通過Web服務(wù)器處理應(yīng)用程序,數(shù)據(jù)庫的交互,邏輯運(yùn)算,調(diào)用外部程序
Data 數(shù)據(jù)層,儲(chǔ)存數(shù)據(jù)
使用Node創(chuàng)建Web服務(wù)器

使用http模塊創(chuàng)建

需要使用substr()方法,一個(gè)從指定位置返回指定結(jié)束的方法,繼承自String 最后一個(gè)參數(shù)可省 https://developer.mozilla.org...
// server.js
// 引入模塊
var http = require("http");    // http模塊
var fs = require("fs");        // fs 文件模塊
var url = require("url");    // url 統(tǒng)一資源定位符模塊

// 創(chuàng)建服務(wù)器
http.createServer((request, response) => {
    // 解析請求,保存進(jìn)變量內(nèi)
    var pathname = url.parse(request.url).pathname;

    // 輸出請求的文件名
    console.log(pathname);

    // 從文件系統(tǒng)中讀取文件,進(jìn)行返回
    fs.readFile(pathname.substr(1), (err, data) => {    // 使用substr方法進(jìn)行讀取文件的字節(jié),將文件名返回給回調(diào)函數(shù)
        if (err){    // 對(duì)錯(cuò)誤進(jìn)行處理
            console.log(err);    // 打印出錯(cuò)誤
            // 返回一個(gè)404
            response.writeHead(404, {"Content-Type": "text/html; charset=utf-8"});
            response.write("呀,什么都沒有╮(╯_╰)╭");
            response.write("我猜你要的是 " + data + " ?");
            response.end();
        } else {
            // 返回 200
            response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
            // 返回文件內(nèi)容
            response.write(data.toString());    // 將讀取的文件內(nèi)容進(jìn)行字符串化,并進(jìn)行輸出
            response.end();    // 關(guān)閉連接,發(fā)出數(shù)據(jù)
        };
    });
}).listen(1937);
// index.html


    
        
        這是一個(gè)小Dome
    
    
        

hello word!

訪問 http://127.0.0.1:1937/index.html
出現(xiàn)hello word完成!

PS C:UsersmingmDesktop	est> node Server.js
/index.html
/
/input.html
/
{ [Error: ENOENT: no such file or directory, open "C:UsersmingmDesktop	estinput.html"]
  errno: -4058,
  code: "ENOENT",
  syscall: "open",
  path: "C:UsersmingmDesktop	estinput.html" }
改進(jìn)一點(diǎn)

訪問/出現(xiàn)404,說明沒有設(shè)置首頁,設(shè)置首頁

    // 增加對(duì)首頁的支持,設(shè)置默認(rèn)首頁為index.html
    if (pathname === "/") {
        pathname = pathname + "index.html";
    }

完成后的文件如下

// 引入模塊
var http = require("http");    // http模塊
var fs = require("fs");        // fs 文件模塊
var url = require("url");    // url 統(tǒng)一資源定位符模塊

// 創(chuàng)建服務(wù)器
http.createServer((request, response) => {
    // 解析請求,保存進(jìn)變量內(nèi)
    var pathname = url.parse(request.url).pathname;

    // 輸出請求的文件名
    console.log(pathname);

    // 增加對(duì)首頁的支持,設(shè)置默認(rèn)首頁為index.html
    if (pathname === "/") {
        pathname = pathname + "index.html";
    }

    // 從文件系統(tǒng)中讀取文件,進(jìn)行返回
    fs.readFile(pathname.substr(1), (err, data) => {    // 使用substr方法進(jìn)行讀取文件的字節(jié),將文件名返回給回調(diào)函數(shù)
        if (err){    // 對(duì)錯(cuò)誤進(jìn)行處理
            console.log(err);    // 打印出錯(cuò)誤
            // 返回一個(gè)404
            response.writeHead(404, {"Content-Type": "text/html; charset=utf-8"});
            response.write("呀,什么都沒有╮(╯_╰)╭");
            response.write("我猜你要的是 " + data + " ?");
            response.end();
        } else {
            // 返回 200
            response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});
            // 返回文件內(nèi)容
            response.write(data.toString());    // 將讀取的文件內(nèi)容進(jìn)行字符串化,并進(jìn)行輸出
            response.end();    // 關(guān)閉連接,發(fā)出數(shù)據(jù)
        };
    });
}).listen(1937);
使用node創(chuàng)建客戶端
PS C:UsersmingmDesktop	est> node get.js

302 Found

302 Found


nginx
PS C:UsersmingmDesktop est>
var http = require("http");

// 請求的選項(xiàng)
var options = {    // 創(chuàng)建一個(gè)對(duì)象保存相關(guān)數(shù)據(jù)
    host:"www.iming.info",    // 主機(jī)地址
    port:"443",    // 訪問端口
    method:"GET",
    path:"/",    // 訪問的文件
};

// 處理響應(yīng)的回調(diào)函數(shù)
var callback = (response) => {
    // 更新數(shù)據(jù)
    var body = "";
    response.on("data", (data) => {        // 綁定事件,data
        body += data;    
    });

    response.on("end", () => {    // 綁定end事件
        console.log(body);    
    });
};

// 開始發(fā)送請求
var req = http.request(options, callback);    // 發(fā)送請求,options為發(fā)送請求的選項(xiàng),callback為處理請求的回調(diào)函數(shù),將會(huì)有拋出三個(gè)事件一個(gè)data一個(gè)end,一個(gè)error,必須有end表示請求完畢,關(guān)閉連接
req.end();    // 關(guān)閉連接

由于小站使用的是nginx的https,使用了證書,需要使用驗(yàn)證秘鑰的過程,所以拒絕訪問,302沒有權(quán)限

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/96338.html

相關(guān)文章

  • FEDAY第二屆前端開發(fā)者大會(huì)回顧

    摘要:使用和構(gòu)建通用應(yīng)用演講者是來自的,他為我們介紹了怎么樣用和等技術(shù),建立一個(gè)通用應(yīng)用或者同構(gòu)應(yīng)用。開發(fā)者可以使用微信的測試號(hào)來測試域名沒備案也可以測。如何提前運(yùn)用下一代技術(shù)提升性能和安全主講人是陳子舜。一個(gè)常見的前端面試題時(shí)代的性能 使用React、Redux和Node.js構(gòu)建通用應(yīng)用 演講者是來自Facebook的Stepan,他為我們介紹了怎么樣用Node和React、React-...

    浠ラ箍 評(píng)論0 收藏0
  • 初識(shí)Node.js

    摘要:一旦替換已經(jīng)完成,該模塊將被完全棄用。用作錯(cuò)誤處理事件文件,由在標(biāo)準(zhǔn)功能上的簡單包裝器提供所有模塊都提供這些對(duì)象。 Node.js簡介 Node 定義 Node.js是一個(gè)建立在Chrome v8 引擎上的javascript運(yùn)行時(shí)環(huán)境 Node 特點(diǎn) 異步事件驅(qū)動(dòng) showImg(https://segmentfault.com/img/bVMLD1?w=600&h=237); no...

    lk20150415 評(píng)論0 收藏0
  • CAS 5.2.x 單點(diǎn)登錄 - 搭建服務(wù)端和戶端

    摘要:一簡介單點(diǎn)登錄,簡稱為,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。客戶端攔截未認(rèn)證的用戶請求,并重定向至服務(wù)端,由服務(wù)端對(duì)用戶身份進(jìn)行統(tǒng)一認(rèn)證。三搭建客戶端在官方文檔中提供了客戶端樣例,即。 一、簡介 單點(diǎn)登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系...

    Lin_YT 評(píng)論0 收藏0
  • package.json 中 你還不清楚的 browser,module,main 字段優(yōu)先級(jí)

    摘要:本文就來說下這幾個(gè)字段的使用場景,以及同時(shí)存在這幾個(gè)字段時(shí),他們之間的優(yōu)先級(jí)。當(dāng)存在和這種同名不同后綴的文件時(shí),或者是會(huì)優(yōu)先加載文件的。或者優(yōu)先級(jí)是通過直接執(zhí)行腳本只有字段有效。 browser VS module VS main 前端開發(fā)中使用到 npm 包那可算是家常便飯,而使用到 npm 包總免不了接觸到 package.json 包配置文件。 那么這里就有...

    caozhijian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<