1. 程式人生 > >Node.js 靜態web服務

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.jsweb服務器總結

系統資源 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.jsWeb框架

本文轉自LaplaceDemon/SJQ的部落格園【http://www.cnblogs.com/shijiaqi1066/p/3821150.html】 本文使用node.js v0.10.28 + express 4.2.0 1 Express概述 Express