国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

使用node.js搭建服務器

2024-05-06 15:16:59
字體:
來源:轉載
供稿:網友

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

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

期間還稍微糾結了一下用什么語言,本來打算正好學習一下PHP,可后來轉念一想,用nodejs豈不美哉,不僅了解了后臺開發,也相當于鞏固了js基礎,一舉兩得,美滋滋。

在學習node的過程中,學到了使用node實現一個服務器這一塊,感覺是對前面所學模塊的一個很好的總結。用到了四個基本的模塊fs stream http path

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

'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('.');//以當前的目錄為服務器的根目錄var root = path.resolve(process.argv[2] || '.');//以輸入的參數作為服務器的根目錄,如果沒有輸入參數就將當前目錄作為服務器根目錄console.log('local root dir :' + root);//create servervar 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);//沒有必要手動讀取文件內容。由于response對象本身是一個Writable Stream,直接用pipe()方法就實現了自動讀取文件內容并輸出到HTTP響應。    } 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/');

對于其中一些函數的解釋:

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

有個解釋很有趣:相當于不斷地調用系統的cd指令

eg:

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

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

eg:

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

既然提到了normalize

那么:

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

eg:

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

http.response.end()結束相應,告訴客戶端所有消息已經發送。當所有要返回的內容發送完畢時,該函數必須要被調用一次。如果不調用該函數,那么客戶端將會永遠處于等待狀態。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 天等县| 望谟县| 界首市| 丰都县| 昆明市| 嘉鱼县| 纳雍县| 砀山县| 西昌市| 北川| 青川县| 临夏市| 阿克陶县| 阳原县| 马鞍山市| 吉水县| 鲁山县| 桐乡市| 奈曼旗| 南投市| 九龙坡区| 衡阳县| 时尚| 资溪县| 思南县| 定襄县| 常宁市| 大城县| 新昌县| 新建县| 鱼台县| 夏河县| 齐齐哈尔市| 宁陵县| 柳州市| 宁都县| 资兴市| 佳木斯市| 雷波县| 台东县| 柘荣县|