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

使用node.js搭建服務(wù)器

 更新時(shí)間:2017年05月20日 08:52:24   投稿:mrr  
最近需要完成一個(gè)課程設(shè)計(jì),被項(xiàng)目經(jīng)理(組長)分配寫界面功能,下面小編通過本文給大家分享使用使用node搭建小型服務(wù)器的方法,需要的朋友參考下

使用node搭建小型服務(wù)器(其實(shí)就是分析url然后輸出文件給客戶端)

最近需要完成一個(gè)課程設(shè)計(jì),被項(xiàng)目經(jīng)理(組長)分配寫界面,但是總覺得只寫前端的話缺了點(diǎn)什么,所以想自己寫下后端玩一下。

期間還稍微糾結(jié)了一下用什么語言,本來打算正好學(xué)習(xí)一下PHP,可后來轉(zhuǎn)念一想,用nodejs豈不美哉,不僅了解了后臺開發(fā),也相當(dāng)于鞏固了js基礎(chǔ),一舉兩得,美滋滋。

在學(xué)習(xí)node的過程中,學(xué)到了使用node實(shí)現(xiàn)一個(gè)服務(wù)器這一塊,感覺是對前面所學(xué)模塊的一個(gè)很好的總結(jié)。用到了四個(gè)基本的模塊fs stream http path

代碼如下:(內(nèi)含蹩腳英文注釋請見諒)

'use strict'
var url = require('url');
var path = require('path');
var fs = require('fs');
var http = require('http');
//get the current path
//var root = path.resolve('.');//以當(dāng)前的目錄為服務(wù)器的根目錄
var root = path.resolve(process.argv[2] || '.');//以輸入的參數(shù)作為服務(wù)器的根目錄,如果沒有輸入?yún)?shù)就將當(dāng)前目錄作為服務(wù)器根目錄
console.log('local root dir :' + root);
//create server
var server = http.createServer(function(request, response) {
  //get the path of URL
  var pathname = url.parse(request.url).pathname;
  //get the local path
  var filepath = path.join(root, pathname);
  //get the file stat and output the request file by callback function
  fs.stat(filepath, function(err, stat) {
    if(!err && stat.isFile()) {
      console.log('200' + request.url);
      response.writeHead(200);
      fs.createReadStream(filepath).pipe(response);//沒有必要手動讀取文件內(nèi)容。由于response對象本身是一個(gè)Writable Stream,直接用pipe()方法就實(shí)現(xiàn)了自動讀取文件內(nèi)容并輸出到HTTP響應(yīng)。
    } else {
      console.log('404' + request.url);
      response.writeHead(404);
      response.end('404 Not Found');
    }
  });
});
server.listen(8080);
console.log('Server is running at http://127.0.0.1:8080/');

對于其中一些函數(shù)的解釋:

path.resolve() 路徑尋航(這名字不錯(cuò))
path.resolve([from…], to)

有個(gè)解釋很有趣:相當(dāng)于不斷地調(diào)用系統(tǒng)的cd指令

eg:

path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
//相當(dāng)于:
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile1
path.join([path1],path[2]...) 路徑合并

將所有名稱用path.seq串聯(lián)起來,然后用normailze格式化

eg:

path.join('///foo', 'bar', '//baz/asdf', 'quux', '..');
=>'/foo/bar/baz/asdf'

既然提到了normalize

那么:

格式化路徑 path.normalize(p)
將不符合規(guī)范的路徑格式化,簡化開發(fā)人員中處理各種復(fù)雜的路徑判斷

eg:

path.normalize('/foo/bar//baz/asdf/quux/..');
=> '/foo/bar/baz/asdf'

http.response.end()結(jié)束相應(yīng),告訴客戶端所有消息已經(jīng)發(fā)送。當(dāng)所有要返回的內(nèi)容發(fā)送完畢時(shí),該函數(shù)必須要被調(diào)用一次。如果不調(diào)用該函數(shù),那么客戶端將會永遠(yuǎn)處于等待狀態(tài)。

使用方法:

response.end([data], [encoding])

data end()執(zhí)行完畢后要輸出的字符,如果指定了 data 的值,那就意味著在執(zhí)行完 response.end() 之后,會接著執(zhí)行一條 response.write(data , encoding);

encoding 對應(yīng)data的字符編碼

以上所述是小編給大家介紹的使用node.js搭建服務(wù)器的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的,在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Node調(diào)用Java的示例代碼

    Node調(diào)用Java的示例代碼

    本篇文章主要介紹了Node調(diào)用Java的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • node環(huán)境執(zhí)行js文件的完整步驟

    node環(huán)境執(zhí)行js文件的完整步驟

    Nodejs下運(yùn)行JS代碼有兩種方式,一種是在Node.js的交互環(huán)境下運(yùn)行,另外一種是把代碼寫入文件中,然后用node命令執(zhí)行文件代碼,下面這篇文章主要給大家介紹了關(guān)于node環(huán)境執(zhí)行js文件的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Node.js利用斷言模塊assert進(jìn)行單元測試的方法

    Node.js利用斷言模塊assert進(jìn)行單元測試的方法

    最近在用Node寫一個(gè)實(shí)時(shí)聊天小應(yīng)用,其中就用到了單元測試,所以死下面這篇文章主要給大家介紹了關(guān)于Node.js利用斷言模塊assert進(jìn)行單元測試的方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用

    window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用

    nvm可以管理不同版本的node和npm,可以簡單操作node版本的切換、安裝、查看等,下面這篇文章主要給大家介紹了關(guān)于window10系統(tǒng)下nvm詳細(xì)安裝步驟以及使用的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 簡單模擬node.js中require的加載機(jī)制

    簡單模擬node.js中require的加載機(jī)制

    大家都知道Node 采用的模塊化結(jié)構(gòu)是按照 CommonJS 規(guī)范,模塊與文件是一一對應(yīng)關(guān)系,即加載一個(gè)模塊,實(shí)際上就是加載對應(yīng)的一個(gè)模塊文件。這篇文章顯示簡單的介紹了nodejs中require的加載機(jī)制,而后簡單的模擬require函數(shù),有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 淺談Node框架接入ELK實(shí)踐總結(jié)

    淺談Node框架接入ELK實(shí)踐總結(jié)

    這篇文章主要介紹了淺談Node框架接入ELK實(shí)踐總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • Node.js之網(wǎng)絡(luò)通訊模塊實(shí)現(xiàn)淺析

    Node.js之網(wǎng)絡(luò)通訊模塊實(shí)現(xiàn)淺析

    本篇文章主要介紹了Node.js之網(wǎng)絡(luò)通訊模塊實(shí)現(xiàn)淺析,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • electron安裝報(bào)錯(cuò)終極解決辦法詳細(xì)講解

    electron安裝報(bào)錯(cuò)終極解決辦法詳細(xì)講解

    當(dāng)使用npm安裝electron時(shí),有時(shí)候會遇到各種各樣的錯(cuò)誤,如網(wǎng)絡(luò)錯(cuò)誤、權(quán)限錯(cuò)誤等等,這篇文章主要給大家介紹了關(guān)于electron安裝報(bào)錯(cuò)終極解決辦法的相關(guān)資料,需要的朋友可以參考下
    2024-09-09
  • 你所未知的3種Node.js代碼優(yōu)化方式

    你所未知的3種Node.js代碼優(yōu)化方式

    這篇文章主要為大家介紹了3種你所未知的Node.js代碼優(yōu)化方式,幫助大家剛好的進(jìn)行代碼優(yōu)化,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Nodejs關(guān)于gzip/deflate壓縮詳解

    Nodejs關(guān)于gzip/deflate壓縮詳解

    本文主要向大家介紹了nodejs中關(guān)于gzip/deflate壓縮的2種方法,分別是管道壓縮和非管道壓縮,十分詳細(xì),并附帶示例,這里推薦給大家參考下。
    2015-03-03

最新評論

德安县| 祁阳县| 海淀区| 桐柏县| 阳城县| 德化县| 舞钢市| 潮安县| 祁连县| 红桥区| 凉城县| 磴口县| 军事| 东光县| 辽阳市| 无极县| 玉屏| 遵义市| 龙川县| 周宁县| 五常市| 纳雍县| 长乐市| 扶余县| 山丹县| 吴江市| 札达县| 庆云县| 平罗县| 洛宁县| 青龙| 华蓥市| 柳林县| 威信县| 台安县| 海南省| 麦盖提县| 镇雄县| 奇台县| 遂川县| 故城县|