亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

在windows上用nodejs搭建靜態文件服務器的簡單方法

2019-11-20 09:15:27
字體:
來源:轉載
供稿:網友

在windows上用nodejs搭建一個靜態文件服務器,即使你一點基礎沒有也能學會nodejs靜態文件服務器的搭建,本文介紹的非常詳細,很適合零基礎入門的朋友學習。

首先安裝nodejs:

•新建一個node文件夾

•下載node.exe到該文件夾

•下載npm然后解壓到該文件夾

•現在node文件夾是這樣的

•把該目錄加入到path環境變量

•在命令行執行

node -vnpm -v

如果得到了版本號則表示nodejs安裝完成

•在命令行中執行

npm config set registry https://registry.npm.taobao.org

以后安裝nodejs模塊 都會從淘寶的npm鏡像中下載

•如果想要發布自己的模塊到npm要先把npm的registry切換回來

npm config set registry https://registry.npmjs.org

接下來搭建靜態文件服務器

•創建一個文件夾server,一個文件夾root,server內是服務器的js代碼,root是根目錄

•server文件夾里面創建js文件 index.js mime.js server.js

•index.js

var server = require('./server.js');var rootpath = 'root';var sv = server.create({port: '9587',host: '127.0.0.1',root: rootpath}); •mime.js var types = {"css": "text/css","less": "text/css","gif": "image/gif","html": "text/html","ejs": "text/html","ico": "image/x-icon","jpeg": "image/jpeg","jpg": "image/jpeg","js": "text/javascript","json": "application/json","pdf": "application/pdf","png": "image/png","svg": "image/svg+xml","swf": "application/x-shockwave-flash","tiff": "image/tiff","txt": "text/plain","wav": "audio/x-wav","wma": "audio/x-ms-wma","wmv": "video/x-ms-wmv","xml": "text/xml","default": "text/plain"};module.exports = function (ext) {return types[ext] || 'text/plain'}

•server.js

var http = require('http');var path = require('path');var fs = require('fs');var url = require("url");var mime = require('./mime.js');function getPromise(cbk) {return (new Promise(cbk));}exports.create = function (opts) {var root = opts.root;var sv = http.createServer();function request(request, response) {var pathname = decodeURIComponent(url.parse(request.url).pathname);var realPath = path.resolve(path.join(root, pathname));//請求的實際路徑getPromise(function (resolve, reject) {fs.exists(realPath, function (isExists) {//判斷路徑是否存在isExists ? resolve() : reject();});}).catch(function () {resWrite(response, '404', 'html', '<h1>404</h1>file or dir : <h3>' + pathname + '</h3>not found');}).then(function () {return getPromise(function (resolve, reject) {fs.stat(realPath, function (err, stat) {//判斷路徑是文件還是文件夾if (err) {reject(err);} else {resolve(stat);}})}).then(function (stat) {if (stat.isFile()) {//路徑對應的是一個文件resFile(response, realPath);} else if (stat.isDirectory()) {//路徑對應的是一個文件夾var defaultIndexPath = path.resolve(realPath, 'index.html');return getPromise(function (resolve, reject) {fs.exists(defaultIndexPath, function (isExists) {if (isExists) {//如果該文件夾內有index.htmlresolve(true);} else {//該文件夾內沒有index.html 則 顯示該文件夾的內容列表resolve(false);}})}).then(function (isExistsIndex) {if (isExistsIndex) {resFile(response, defaultIndexPath);} else {return getPromise(function (resolve, reject) {fs.readdir(realPath, function (err, list) {if (err) {reject(err);} else {resolve(list);}})}).then(function (list) {var pmlist = list.map(function (item) {return (new Promise(function (resolve, reject) {fs.stat(path.resolve(realPath, item), function (err, stat) {if (err) {console.error(err);resolve('');} else if (stat.isFile()) {resolve(`<li class="file"><a href="${item}">${item}</a></li>`);} else if (stat.isDirectory()) {resolve(`<li class="dir"><a href="${item}/">${item}</a></li>`);} else {resolve('');}})}));});Promise.all(pmlist).then(function (linkList) {var links = '<ul>';links += '<li class="dir"><a href="../">../</a></li>';links += linkList.join('');links += '</ul>';var dirPage = `<!doctype html><html><head><meta charset="utf-8"/><style>a{color:blue;text-decoration: none;}.dir a{color:orange}</style></head><body>${links}</body></html>`;resWrite(response, '200', 'html', dirPage);});}).catch(function (err) {resWrite(response, '500', 'default', err.toString());})}})} else {//既不是文件也不是文件夾resWrite(response, '404', 'html', '<h1>404</h1>file or dir : <h3>' + pathname + '</h3>not found');}}).catch(function (err) {resWrite(response, '500', 'default', err.toString());})})}sv.on('request', request);sv.listen(opts.port, opts.host);return sv;};function resFile(response, realPath) {//輸出一個文件fs.readFile(realPath, function (err, data) {if (err) {resWrite(response, '500', 'default', err.toString());} else {var ext = path.extname(realPath).toLocaleLowerCase();ext = (ext ? ext.slice(1) : 'unknown');resWrite(response, '200', ext, data);}});}function resWrite(response, statusCode, mimeKey, data) {response.writeHead(statusCode, {'Content-Type': mime(mimeKey)});response.end(data);}

•在server文件夾內按住shift按鈕,鼠標右鍵點擊文件夾內空白區域,點擊在此處打開命令窗口,執行命令

node index.js

以上所述是小編給大家介紹的在windows上用nodejs搭建靜態文件服務器的簡單方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲色图在线观看| 国产精品大片wwwwww| 最近2019中文字幕在线高清| 色狠狠av一区二区三区香蕉蜜桃| 91国产美女在线观看| 欧美夫妻性视频| 亚洲第一精品夜夜躁人人躁| 亚洲人精品午夜在线观看| 国产精品嫩草影院久久久| 91大神福利视频在线| 青青精品视频播放| 亚洲电影天堂av| 中日韩美女免费视频网站在线观看| 日韩亚洲成人av在线| 亚洲成av人乱码色午夜| 38少妇精品导航| 久久久久久网址| 国产精品视频网址| 亚洲成人1234| 另类视频在线观看| 亚洲午夜精品久久久久久久久久久久| 国色天香2019中文字幕在线观看| 欧美午夜久久久| 亚洲一区二区久久久久久| 亚洲国产精品人人爽夜夜爽| 成人精品网站在线观看| 亚洲国产精品悠悠久久琪琪| 91地址最新发布| 色综合天天狠天天透天天伊人| 欧美成人免费播放| 欧美尤物巨大精品爽| 精品亚洲男同gayvideo网站| 欧美风情在线观看| 亚洲国产精品国自产拍av秋霞| 国产一区二区三区网站| 91免费看片在线| 影音先锋日韩有码| 国产精品欧美在线| 欧美亚洲成人精品| 少妇高潮久久久久久潘金莲| 亚洲肉体裸体xxxx137| 日韩h在线观看| 成人综合国产精品| 国产v综合v亚洲欧美久久| 日本精品久久久久影院| 亚洲专区国产精品| 亚洲视频网站在线观看| 中国日韩欧美久久久久久久久| 欧美洲成人男女午夜视频| 国模视频一区二区| 国产成人精品久久二区二区91| 国产成人高清激情视频在线观看| 久国内精品在线| 韩日欧美一区二区| 久久视频免费观看| 91精品国产91久久久久福利| 久久久免费精品视频| 亚洲色图日韩av| 欧美激情精品久久久久久| 在线免费观看羞羞视频一区二区| 亚洲一区二区三区xxx视频| 日韩av电影手机在线观看| 国产中文字幕亚洲| 91理论片午午论夜理片久久| 欧美麻豆久久久久久中文| 日韩精品久久久久久福利| 久久免费少妇高潮久久精品99| 国产精品成人观看视频国产奇米| 国模极品一区二区三区| 性欧美在线看片a免费观看| 欧美在线视频观看免费网站| 欧美精品videosex牲欧美| 精品国产欧美成人夜夜嗨| 国模视频一区二区| 超薄丝袜一区二区| 欧美成人精品在线视频| 国产精品久久久久久久久久99| 国产一区二区色| 国产丝袜一区二区| 毛片精品免费在线观看| 国产在线视频2019最新视频| 欧美精品一本久久男人的天堂| 97高清免费视频| 97视频com| 欧美精品videossex性护士| 国产精品国产三级国产专播精品人| 欧美日韩亚洲一区二区三区| 成人黄色影片在线| 欧美性猛交丰臀xxxxx网站| 国产精品久久久久国产a级| 欧美精品aaa| 在线亚洲午夜片av大片| 国产亚洲精品美女久久久久| 国产一区二区三区在线观看视频| 51ⅴ精品国产91久久久久久| 性色av香蕉一区二区| 在线播放日韩专区| 成人免费淫片aa视频免费| 国产成人精品a视频一区www| 日韩电影第一页| …久久精品99久久香蕉国产| 97精品国产91久久久久久| 欧美理论电影网| 亚洲精品videossex少妇| 欧美富婆性猛交| 亚洲free性xxxx护士白浆| 亚洲人成亚洲人成在线观看| 高清在线视频日韩欧美| 欧美成人精品一区二区| 亚洲精品大尺度| 国产成人av在线| 亚洲色图欧美制服丝袜另类第一页| 国产男人精品视频| 日日噜噜噜夜夜爽亚洲精品| 欧美日韩精品在线| 在线免费观看羞羞视频一区二区| 大桥未久av一区二区三区| 精品免费在线视频| 国产亚洲精品综合一区91| 国产精品美女久久久久久免费| 永久免费毛片在线播放不卡| 91国偷自产一区二区三区的观看方式| 国产精品第一视频| 伊人久久久久久久久久久久久| 国产香蕉一区二区三区在线视频| 成人美女免费网站视频| 日韩大陆欧美高清视频区| 久久精品中文字幕| 久久综合国产精品台湾中文娱乐网| 亚洲精品白浆高清久久久久久| 51视频国产精品一区二区| 亚洲最大av网| 色诱女教师一区二区三区| 亚洲国产毛片完整版| 日韩激情视频在线播放| 国产精品视频在线观看| 亚洲精品www久久久久久广东| 欧美中文字幕在线播放| 日韩经典中文字幕| 91青草视频久久| 韩国三级电影久久久久久| 欧美福利视频网站| 国产精品白丝av嫩草影院| 久久亚洲国产精品成人av秋霞| 91av视频导航| 欧美日韩亚洲成人| 欧美理论在线观看| 91精品久久久久久久久青青| 久久久久国产精品免费网站| 91色精品视频在线| 久久综合九色九九| 亚洲视频999| 一个人看的www久久| 97国产精品久久| 亚洲欧美日本伦理| 欧美视频在线视频| 91理论片午午论夜理片久久| 欧美性做爰毛片| 欧美日韩在线视频观看| 91在线视频一区| 国产成人在线亚洲欧美| 亚洲第一色在线| 91精品国产高清久久久久久久久| 国产精品一区=区|