Node.js 靜態web服務
我們想要通過Node.js去訪問靜態的頁面,比如我們在瀏覽器輸入http://localhost:8001/index.html,然後就返回index.html的資訊。那麼如何用Node.js實現載入靜態的頁面呢?
現在我們有一個static資料夾,裡面包含了靜態的頁面資源:
首先我們要用Nodejs 建立一個 WEB 伺服器
//引入http模組
var http = require('http');
//fs模組
var fs = require('fs');
http.createServer(function(req,res){
//http://localhost:8001/news.html /news.html
//http://localhost:8001/index.html /index.html
//css/dmb.bottom.css
var pathname = req.url;
if(pathname == '/'){
pathname = '/index.html'; /*預設載入的首頁*/
}
if(pathname != '/favicon.ico'){ /*過濾請求favicon.ico*/
console.log(pathname);
//檔案操作獲取 static下面的index.html
}
}).listen(8001 );
我們通過req.url可以獲取到我們所要的資源,如:/index.html,獲取到pathname之後我們需要用檔案操作模組,獲取static資源下的index.html檔案。接下來我們來完善我們的程式碼。
//引入http模組
var http = require('http');
//fs模組
var fs = require('fs');
http.createServer(function(req,res){
//http://localhost:8001/news.html /news.html
//http://localhost:8001/index.html /index.html
//css/dmb.bottom.css
var pathname = req.url;
if(pathname == '/'){
pathname = '/index.html'; /*預設載入的首頁*/
}
if(pathname != '/favicon.ico'){ /*過濾請求favicon.ico*/
console.log(pathname);
//檔案操作獲取 static下面的index.html
fs.readFile('static' + pathname,function(err,data){
if(err){ /*沒有這個檔案*/
console.log('404');
res.end(); /*結束響應*/
}else{ /*返回這個檔案*/
res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"});
res.write(data);
res.end(); /*結束響應*/
}
})
}
}).listen(8001);
我們通過fs.readFile來獲取static下面的pathname(如:/index.html ,最終路徑: static/index.html ),如果報錯,我們輸出404,否則,我們把讀取的資訊響應給瀏覽器。
現在我們試一試來訪問以下http://localhost:8001/index.html:
後臺輸出了pathname:
我們可以看到瀏覽器發起了很多次請求,去請求其他的相關資源,比如js,css等等。
但為什麼我們在index.html看到的介面卻沒有完全顯示,css起不到作用。
原因是:我們請求的mime type 是text/html;res.writeHead(200,{"Content-Type":"text/html;charset='utf-8'"});
所以css和js都只是以text/html的形式返回,而我們需要的是:”text/css”或者是”application/x-javascript”,所以我們繼續改進我們的程式碼。我們現在需要根據請求資源字尾來給定對應的mime type,比如public.css 我們指定為text/css,template.js我們指定為application/x-javascript
我們來寫一個方法,根據字尾獲得指定的mime type。
exports.getMime=function(extname){
switch (extname){
case '.html':
return 'text/html';
case '.css':
return 'text/css';
case '.js':
return 'text/javascript';
default:
return 'text/html';
}
}
接下來我們來改進我們之前的程式碼:
//引入http模組
var http = require('http');
//fs模組
var fs = require('fs');
//path模組
var path = require('path'); /*nodejs自帶的模組*/
var mimeModel = require('./model/getmime.js');
//console.log(mime.getMime('.css')); //獲取檔案型別
http.createServer(function(req,res){
//http://localhost:8001/news.html /news.html
//http://localhost:8001/index.html /index.html
//css/dmb.bottom.css
var pathname = req.url;
if(pathname == '/'){
pathname = '/index.html'; /*預設載入的首頁*/
}
//獲取檔案的字尾名
var extname = path.extname(pathname);
if(pathname != '/favicon.ico'){ /*過濾請求favicon.ico*/
//console.log(pathname);
//檔案操作獲取 static下面的index.html
fs.readFile('static/' + pathname,function(err,data){
if(err){ /*沒有這個檔案*/
console.log('404');
fs.readFile('static/404.html',function(error,data404){
if(error){
console.log(error);
res.end(); /*結束響應*/
}
res.writeHead(404,{"Content-Type":"text/html;charset='utf-8'"});
res.write(data404);
res.end(); /*結束響應*/
})
}else{ /*返回這個檔案*/
var mime = mimeModel.getMime(extname); /*獲取檔案型別*/
res.writeHead(200,{"Content-Type":"" + mime + ";charset='utf-8'"});
res.write(data);
res.end(); /*結束響應*/
}
})
}
}).listen(8001);
我們通過require('path')
引入path模組,通過path模組中的path.extname(pathname)
獲得字尾名,最後通過下面這個方法
var mime = mimeModel.getMime(extname); /*獲取檔案型別*/
來獲取對應的mime type,最後設定響應頭:
res.writeHead(200,{"Content-Type":"" + mime + ";charset='utf-8'"});
我們還對我們的找不到檔案或者錯誤的情況進行了處理,如果error了,我們進行如下設定:
res.writeHead(404,{"Content-Type":"text/html;charset='utf-8'"});
res.write(data404);
res.end(); /*結束響應*/
設定響應狀態碼為404,並返回一個404頁面。
我們可以看到響應回來的.css字尾的檔案,Content-Type:text/css;charset='utf-8'
但我們的程式碼還是有點問題,我們可以看到:
我們繼續改進我們的程式碼:
//引入http模組
var http = require('http');
//fs模組
var fs = require('fs');
//path模組
var path = require('path'); /*nodejs自帶的模組*/
//url模組
var url = require('url');
var mimeModel = require('./model/getmime.js');
//console.log(mime.getMime('.css')); //獲取檔案型別
http.createServer(function(req,res){
//http://localhost:8001/news.html /news.html
//http://localhost:8001/index.html /index.html
//css/dmb.bottom.css
var pathname = url.parse(req.url).pathname;
console.log(pathname);
if(pathname == '/'){
pathname = '/index.html'; /*預設載入的首頁*/
}
//獲取檔案的字尾名
var extname = path.extname(pathname);
if(pathname != '/favicon.ico'){ /*過濾請求favicon.ico*/
//console.log(pathname);
//檔案操作獲取 static下面的index.html
fs.readFile('static/' + pathname,function(err,data){
if(err){ /*沒有這個檔案*/
console.log('404');
fs.readFile('static/404.html',function(error,data404){
if(error){
console.log(error);
}
res.writeHead(404,{"Content-Type":"text/html;charset='utf-8'"});
res.write(data404);
res.end(); /*結束響應*/
})
}else{ /*返回這個檔案*/
var mime = mimeModel.getMime(extname); /*獲取檔案型別*/
res.writeHead(200,{"Content-Type":"" + mime + ";charset='utf-8'"});
res.write(data);
res.end(); /*結束響應*/
}
})
}
}).listen(8001);
我們通過:url.parse(req.url).pathname
就可以獲取到真正我們需要的資源路徑了。這次我們再次訪問index.html頁面
現在我們發現我們已經可以成功的訪問到剛剛的檔案了,並且顯示出了檔案中的圖片的資訊了。
但是我們發現我們還有一些問題,圖片jpg返回的content-type居然是text/html
所以我們要繼續改進我們的程式碼,這次我們讀取mime.json,來獲取對應的mime type。
{ ".323":"text/h323" ,
".3gp":"video/3gpp" ,
".aab":"application/x-authoware-bin" ,
".aam":"application/x-authoware-map" ,
".aas":"application/x-authoware-seg" ,
".acx":"application/internet-property-stream" ,
".ai":"application/postscript" ,
".aif":"audio/x-aiff" ,
".aifc":"audio/x-aiff" ,
".aiff":"audio/x-aiff" ,
".als":"audio/X-Alpha5" ,
".amc":"application/x-mpeg" ,
".ani":"application/octet-stream" ,
".apk":"application/vnd.android.package-archive" ,
".asc":"text/plain" ,
".asd":"application/astound" ,
".asf":"video/x-ms-asf" ,
".asn":"application/astound" ,
".asp":"application/x-asap" ,
".asr":"video/x-ms-asf" ,
".asx":"video/x-ms-asf" ,
".au":"audio/basic" ,
".avb":"application/octet-stream" ,
".avi":"video/x-msvideo" ,
".awb":"audio/amr-wb" ,
".axs":"application/olescript" ,
".bas":"text/plain" ,
".bcpio":"application/x-bcpio" ,
".bin ":"application/octet-stream" ,
".bld":"application/bld" ,
".bld2":"application/bld2" ,
".bmp":"image/bmp" ,
".bpk":"application/octet-stream" ,
".bz2":"application/x-bzip2" ,
".c":"text/plain" ,
".cal":"image/x-cals" ,
".cat":"application/vnd.ms-pkiseccat" ,
".ccn":"application/x-cnc" ,
".cco":"application/x-cocoa" ,
".cdf":"application/x-cdf" ,
".cer":"application/x-x509-ca-cert" ,
".cgi":"magnus-internal/cgi" ,
".chat":"application/x-chat" ,
".class":"application/octet-stream" ,
".clp":"application/x-msclip" ,
".cmx":"image/x-cmx" ,
".co":"application/x-cult3d-object" ,
".cod":"image/cis-cod" ,
".conf":"text/plain" ,
".cpio":"application/x-cpio" ,
".cpp":"text/plain" ,
".cpt":"application/mac-compactpro" ,
".crd":"application/x-mscardfile" ,
".crl":"application/pkix-crl" ,
".crt":"application/x-x509-ca-cert" ,
".csh":"application/x-csh" ,
".csm":"chemical/x-csml" ,
".csml":"chemical/x-csml" ,
".css":"text/css" ,
".cur":"application/octet-stream" ,
".dcm":"x-lml/x-evm" ,
".dcr":"application/x-director" ,
".dcx":"image/x-dcx" ,
".der":"application/x-x509-ca-cert" ,
".dhtml":"text/html" ,
".dir":"application/x-director" ,
".dll":"application/x-msdownload" ,
".dmg":"application/octet-stream" ,
".dms":"application/octet-stream" ,
".doc":"application/msword" ,
".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ,
".dot":"application/msword" ,
".dvi":"application/x-dvi" ,
".dwf":"drawing/x-dwf" ,
".dwg":"application/x-autocad" ,
".dxf":"application/x-autocad" ,
".dxr":"application/x-director" ,
".ebk":"application/x-expandedbook" ,
".emb":"chemical/x-embl-dl-nucleotide" ,
".embl":"chemical/x-embl-dl-nucleotide" ,
".eps":"application/postscript" ,
".epub":"application/epub+zip" ,
".eri":"image/x-eri" ,
".es":"audio/echospeech" ,
".esl":"audio/echospeech" ,
".etc":"application/x-earthtime" ,
".etx":"text/x-setext" ,
".evm":"x-lml/x-evm" ,
".evy":"application/envoy" ,
".exe":"application/octet-stream" ,
".fh4":"image/x-freehand" ,
".fh5":"image/x-freehand" ,
".fhc":"image/x-freehand" ,
".fif":"application/fractals" ,
".flr":"x-world/x-vrml" ,
".flv":"flv-application/octet-stream" ,
".fm":"application/x-maker" ,
".fpx":"image/x-fpx" ,
".fvi":"video/isivideo" ,
".gau":"chemical/x-gaussian-input" ,
".gca":"application/x-gca-compressed" ,
".gdb":"x-lml/x-gdb" ,
".gif":"image/gif" ,
".gps":"application/x-gps" ,
".gtar":"application/x-gtar" ,
".gz":"application/x-gzip" ,
".h":"text/plain" ,
".hdf":"application/x-hdf" ,
".hdm":"text/x-hdml" ,
".hdml":"text/x-hdml" ,
".hlp":"application/winhlp" ,
".hqx":"application/mac-binhex40" ,
".hta":"application/hta" ,
".htc":"text/x-component" ,
".htm":"text/html" ,
".html":"text/html" ,
".hts":"text/html" ,
".htt":"text/webviewhtml" ,
".ice":"x-conference/x-cooltalk" ,
".ico":"image/x-icon" ,
".ief":"image/ief" ,
".ifm":"image/gif" ,
".ifs":"image/ifs" ,
".iii":"application/x-iphone" ,
".imy":"audio/melody" ,
".ins":"application/x-internet-signup" ,
".ips":"application/x-ipscript" ,
".ipx":"application/x-ipix" ,
".isp":"application/x-internet-signup" ,
".it":"audio/x-mod" ,
".itz":"audio/x-mod" ,
".ivr":"i-world/i-vrml" ,
".j2k":"image/j2k" ,
".jad":"text/vnd.sun.j2me.app-descriptor" ,
".jam":"application/x-jam" ,
".jar":"application/java-archive" ,
".java":"text/plain" ,
".jfif":"image/pipeg" ,
".jnlp":"application/x-java-jnlp-file" ,
".jpe":"image/jpeg" ,
".jpeg":"image/jpeg" ,
".jpg":"image/jpeg" ,
".jpz":"image/jpeg" ,
".js":"application/x-javascript" ,
".jwc":"application/jwc" ,
".kjx":"application/x-kjx" ,
".lak":"x-lml/x-lak" ,
".latex":"application/x-latex" ,
".lcc":"application/fastman" ,
".lcl":"application/x-digitalloca" ,
".lcr":"application/x-digitalloca" ,
".lgh":"application/lgh" ,
".lha":"application/octet-stream" ,
".lml":"x-lml/x-lml" ,
".lmlpack":"x-lml/x-lmlpack" ,
".log":"text/plain" ,
".lsf":"video/x-la-asf" ,
".lsx":"video/x-la-asf" ,
".lzh":"application/octet-stream" ,
".m13":"application/x-msmediaview" ,
".m14":"application/x-msmediaview" ,
".m15":"audio/x-mod" ,
".m3u":"audio/x-mpegurl" ,
".m3url":"audio/x-mpegurl" ,
".m4a":"audio/mp4a-latm" ,
".m4b":"audio/mp4a-latm" ,
".m4p":"audio/mp4a-latm" ,
".m4u":"video/vnd.mpegurl" ,
".m4v":"video/x-m4v" ,
".ma1":"audio/ma1" ,
".ma2":"audio/ma2" ,
".ma3":"audio/ma3" ,
".ma5":"audio/ma5" ,
".man":"application/x-troff-man" ,
".map":"magnus-internal/imagemap" ,
".mbd":"application/mbedlet" ,
".mct":"application/x-mascot" ,
".mdb":"application/x-msaccess" ,
".mdz":"audio/x-mod" ,
".me":"application/x-troff-me" ,
".mel":"text/x-vmel" ,
".mht":"message/rfc822" ,
".mhtml":"message/rfc822" ,
".mi":"application/x-mif" ,
".mid":"audio/mid" ,
".midi":"audio/midi" ,
".mif":"application/x-mif" ,
".mil":"image/x-cals" ,
".mio":"audio/x-mio" ,
".mmf":"application/x-skt-lbs" ,
".mng":"video/x-mng" ,
".mny":"application/x-msmoney" ,
".moc":"application/x-mocha" ,
".mocha":"application/x-mocha" ,
".mod":"audio/x-mod" ,
".mof":"application/x-yumekara" ,
".mol":"chemical/x-mdl-molfile" ,
".mop":"chemical/x-mopac-input" ,
".mov":"video/quicktime" ,
".movie":"video/x-sgi-movie" ,
".mp2":"video/mpeg" ,
".mp3":"audio/mpeg" ,
".mp4":"video/mp4" ,
".mpa":"video/mpeg" ,
".mpc":"application/vnd.mpohun.certificate" ,
".mpe":"video/mpeg" ,
".mpeg":"video/mpeg" ,
".mpg":"video/mpeg" ,
".mpg4":"video/mp4" ,
".mpga":"audio/mpeg" ,
".mpn":"application/vnd.mophun.application" ,
".mpp":"application/vnd.ms-project" ,
".mps":"application/x-mapserver" ,
".mpv2":"video/mpeg" ,
".mrl":"text/x-mrml" ,
".mrm":"application/x-mrm" ,
".ms":"application/x-troff-ms" ,
".msg":"application/vnd.ms-outlook" ,
".mts":"application/metastream" ,
".mtx":"application/metastream" ,
".mtz":"application/metastream" ,
".mvb":"application/x-msmediaview" ,
".mzv":"application/metastream" ,
".nar":"application/zip" ,
".nbmp":"image/nbmp" ,
".nc":"application/x-netcdf" ,
".ndb":"x-lml/x-ndb" ,
".ndwn":"application/ndwn" ,
".nif":"application/x-nif" ,
".nmz":"application/x-scream" ,
".nokia-op-logo":"image/vnd.nok-oplogo-color" ,
".npx":"application/x-netfpx" ,
".nsnd":"audio/nsnd" ,
".nva":"application/x-neva1" ,
".nws":"message/rfc822" ,
".oda":"application/oda" ,
".ogg":"audio/ogg" ,
".oom":"application/x-AtlasMate-Plugin" ,
".p10":"application/pkcs10" ,
".p12":"application/x-pkcs12" ,
".p7b":"application/x-pkcs7-certificates" ,
".p7c":"application/x-pkcs7-mime" ,
".p7m":"application/x-pkcs7-mime" ,
".p7r":"application/x-pkcs7-certreqresp" ,
".p7s":"application/x-pkcs7-signature" ,
".pac":"audio/x-pac" ,
".pae":"audio/x-epac" ,
".pan":"application/x-pan" ,
".pbm":"image/x-portable-bitmap" ,
".pcx":"image/x-pcx" ,
".pda":"image/x-pda" ,
".pdb":"chemical/x-pdb" ,
".pdf":"application/pdf" ,
".pfr":"application/font-tdpfr" ,
".pfx":"application/x-pkcs12" ,
".pgm":"image/x-portable-graymap" ,
".pict":"image/x-pict" ,
".pko":"application/ynd.ms-pkipko" ,
".pm":"application/x-perl" ,
".pma":"application/x-perfmon" ,
".pmc":"application/x-perfmon" ,
".pmd":"application/x-pmd" ,
".pml":"application/x-perfmon" ,
".pmr":"application/x-perfmon" ,
".pmw":"application/x-perfmon" ,
".png":"image/png" ,
".pnm":"image/x-portable-anymap" ,
".pnz":"image/png" ,
".pot,":"application/vnd.ms-powerpoint" ,
".ppm":"image/x-portable-pixmap" ,
".pps":"application/vnd.ms-powerpoint" ,
".ppt":"application/vnd.ms-powerpoint" ,
".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation" ,
".pqf":"application/x-cprplayer" ,
".pqi":"application/cprplayer" ,
".prc":"application/x-prc" ,
".prf":"application/pics-rules" ,
".prop":"text/plain" ,
".proxy":"application/x-ns-proxy-autoconfig" ,
".ps":"application/postscript" ,
".ptlk":"application/listenup" ,
".pub":"application/x-mspublisher" ,
".pvx":"video/x-pv-pvx" ,
".qcp":"audio/vnd.qcelp" ,
".qt":"video/quicktime" ,
".qti":"image/x-quicktime" ,
".qtif":"image/x-quicktime" ,
".r3t":"text/vnd.rn-realtext3d" ,
".ra":"audio/x-pn-realaudio" ,
".ram":"audio/x-pn-realaudio" ,
".rar":"application/octet-stream" ,
".ras":"image/x-cmu-raster" ,
".rc":"text/plain" ,
".rdf":"application/rdf+xml" ,
".rf":"image/vnd.rn-realflash" ,
".rgb":"image/x-rgb" ,
".rlf":"application/x-richlink" ,
".rm":"audio/x-pn-realaudio" ,
".rmf":"audio/x-rmf" ,
".rmi":"audio/mid" ,
".rmm":"audio/x-pn-realaudio" ,
".rmvb":"audio/x-pn-realaudio" ,
".rnx":"application/vnd.rn-realplayer" ,
".roff":"application/x-troff" ,
".rp":"image/vnd.rn-realpix" ,
".rpm":"audio/x-pn-realaudio-plugin" ,
".rt":"text/vnd.rn-realtext" ,
".rte":"x-lml/x-gps" ,
".rtf":"application/rtf" ,
".rtg":"application/metastream" ,
".rtx":"text/richtext" ,
".rv":"video/vnd.rn-realvideo" ,
".rwc":"application/x-rogerwilco" ,
".s3m":"audio/x-mod" ,
".s3z":"audio/x-mod" ,
".sca":"application/x-supercard" ,
".scd":"application/x-msschedule" ,
".sct":"text/scriptlet" ,
".sdf":"application/e-score" ,
".sea":"application/x-stuffit" ,
".setpay":"application/set-payment-initiation" ,
".setreg":"application/set-registration-initiation" ,
".sgm":"text/x-sgml" ,
".sgml":"text/x-sgml" ,
".sh":"application/x-sh" ,
".shar":"application/x-shar" ,
".shtml":"magnus-internal/parsed-html" ,
".shw":"application/presentations" ,
".si6":"image/si6" ,
".si7":"image/vnd.stiwap.sis" ,
".si9":"image/vnd.lgtwap.sis" ,
".sis":"application/vnd.symbian.install" ,
".sit":"application/x-stuffit" ,
".skd":"application/x-Koan" ,
".skm":"application/x-Koan" ,
".skp":"application/x-Koan" ,
".skt":"application/x-Koan" ,
".slc":"application/x-salsa" ,
".smd":"audio/x-smd" ,
".smi":"application/smil" ,
".smil":"application/smil" ,
".smp":"application/studiom" ,
".smz":"audio/x-smd" ,
".snd":
相關推薦
Node.js 靜態web服務
我們想要通過Node.js去訪問靜態的頁面,比如我們在瀏覽器輸入http://localhost:8001/index.html,然後就返回index.html的資訊。那麼如何用Node.js實現載入靜態的頁面呢?
現在我們有一個static資料夾,裡面包含了
Node.js作web服務器總結
系統資源 nod 運行 分布式部署 spa https .com 數據庫 瓶頸 1、為什麽Node.js用JS開發
首先,我們都清楚的是,同時接收數量眾多的請求是服務器非常常見的情況。而web應用程序架構(包括流量、處理器速度和內存速度)中的瓶頸在於:服務器能夠處理
node.js搭建web服務
1.確保已經安裝node.js和npm
注意:node.js不是JavaScript框架,而是js的執行環境
2.建立app.js,引入http模組,程式碼如下
var http=require('http');
var PORT=1234;
var app=h
Node.js, Express的服務器搭建過程的問題
節點 順序 post 模塊化 回調地獄 模塊 調試 cheerio void Node.js, Express的服務器搭建過程的問題
Express : node.js 的框架,根據2012年BYvoid的說法,是node.js官方唯一推薦的框架
怎麽搭建項目? - 安
Node.js部署到服務器之後臺守護進程管理器Forever
系統 pan 方式 ins start 進入 all 命令 rest 我們不可能直接通過node命令來管理遠程站點,這樣無法保證網站的可持續運行。我們用Forever來解決這個問題,它可以將NodeJS應用以後臺守護進程的方式運行,我們還可以將NodeJS應用設成隨系統啟動
基於OpenResty和Node.js的微服務架構實踐
復雜 直接 簡單 暴露 zookeep 投放 維護 升級 回滾 什麽是微服務?
傳統的單體服務架構是單獨服務包,共享代碼與數據,開發成本較高,可維護性、伸縮性較差,技術轉型、跨語言配合相對困難。而微服務架構強調一個服務負責一項業務,服務可以單獨部署,獨立進行技術選型和開發,
Nginx 在Windows下搭建靜態Web服務
ima serve TCP/UDP load lis 服務 mage tor ext 簡介
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic T
編程學習之如何在Node.js中優化服務器端渲染?[圖]
模型 如果 高峰 字節 may 異步化 當我 node.js res 編程學習之如何在Node.js中優化服務器端渲染?[圖]在 Airbnb,我們花了數年時間將所有前端代碼遷移到 React 架構,Ruby on Rails 在 Web 應用中所占的比例每天都在減少。實際
018-Go將磁盤目錄實現簡單的靜態Web服務
nan 2.7 main 目錄 () clas 磁盤目錄 服務 net
package main
import(
"net/http"
)
func main(){
http.Handle("/", http.FileServer(http.Dir("D:/web
使用PHP和Node.js連線dubbo服務
使用PHP和Node.js連線dubbo服務
DUBBO是一個分散式服務框架,致力於提供高效能和透明化的RPC遠端服務呼叫方案,是阿里巴巴SOA服務化治理方案的核心框架,每天為2,000+個服務提供3,000,000,000+次訪問量支援,並被廣泛應用於阿里巴巴集團的各成
Nginx基礎配置之配置一個靜態WEB服務
一 配置檔案的語法格式:
先來看一個簡單的nginx 配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_t
使用fetch呼叫node.js的Resuful服務
在目前的軟體架構中,慢慢又有這樣的趨勢,就是在前端和業務介面層中間再加入一層,如下圖:
在這樣的結構中,JS前端和web層都是前端開發工程師來完成,可以大大提升開發效率。JS前端和web層還是可以通過Restful介面來進行通訊。即JS前端通 fetch 呼叫 web層由node.js提供的服
Node.js之在服務端啟動網頁(一)
var http = require('http');//建立伺服器的
var fs = require('fs');
//引入進來的是模組,模組中有方法,下一步就是使用方法
//Node.js一個最主要的特點:執行的基本都是函式
//建立服務
var myServer =
Node.js之在服務端啟動網頁(二)
現在我們學習一下關於檔案路徑的相關服務。
http://127.0.0.1 這是網路路徑
var http = require('http');//建立伺服器的
var fs = require('fs');
var path = require('path');
//引
第五章 Node.js進行Web開發
目錄
5.1 準備
5.1 準備
5.2 Express 框架
路由控制;
模板解析支援;
動態檢視;
使用者會話;
CSRF 保護;
靜態檔案服務;
錯誤控制器;
訪問日誌;
快取;
外掛支援。
安裝 E
node.js——http和服務、服務代理、後臺跨域
http
HTTP協議(HyperText Transfer Protocol,超文字傳輸協議)是用於從WWW伺服器傳輸超文字到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文字文件,還確定傳輸文件中的哪一部分,
Node.js-建立Web伺服器和TCP伺服器
使用http模組建立Web伺服器
Web伺服器的功能:
接受HTTP請求(GET、POST、DELETE、PUT、PATCH)處理HTTP請求(自己處理,或請求別的程式處理)做出響應(返回頁面
Node.js輕量級Web框架Express4.x使用指南
Express是一個輕量級的Web框架,簡單、靈活
也是目前最流行的基於Nodejs的Web框架
通過它我們可以快速搭建功能完整的網站
(express 英文意思:特快列車)
Express現在是4.x版本,更新很快
並且不相容舊版本
導致現在市
使用 Node.js 搭建微服務閘道器
目錄
Node.js 是什麼
安裝 node.js
Node.js 入門
Node.js 應用場景
npm 映象
使用 Node.js 搭建微服務閘道器
什麼是微服務架構
使用 Node.js 實現反向代理
參考
Express 4.x Node.js的Web框架
本文轉自LaplaceDemon/SJQ的部落格園【http://www.cnblogs.com/shijiaqi1066/p/3821150.html】
本文使用node.js v0.10.28 + express 4.2.0
1 Express概述
Express