nodejs顶层路由设计

来源:互联网 发布:自学云计算 编辑:程序博客网 时间:2024/05/17 00:15

var http = require("http");var fs = require("fs");var url = require("url");var path = require("path");//创建服务器http.createServer(function (req, res) {    //得到地址    var pathname = url.parse(req.url).pathname;    //判断是文件地址还是文件夹地址,如果是文件夹地址那么自动请求文件夹中的index.html    if(pathname.indexOf(".") == -1){        pathname += "/index.html";    }    var fileURL = "./" + path.normalize("static/" + pathname);    //得到拓展名    var extname = path.extname(fileURL);    //把文件读出来    fs.readFile(fileURL, function(err, data){        if(err){            //文件不存在            res.writeHead(404, {"Content-Type":"text/html;charset=UTF8"});            res.end("404!页面没有找到!~");        }        var mime = getMime(extname, function (mime) {            res.writeHead(200, {"Content-Type":mime});            res.end(data);        });    });}).listen(81, "127.0.0.1");function getMime(extname, callback) {    //读取文件    fs.readFile("./mime.json", function (err, data) {        if(err){            throw Error("找不到mime.json文件");        }        //转成JSON        var mimeJSON = JSON.parse(data);        var mime = mimeJSON[extname] || "text/plain";        callback(mime);    });}

mime.json文件:

{ ".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":"audio/basic" ,  ".spc":"application/x-pkcs7-certificates" ,  ".spl":"application/futuresplash" ,  ".spr":"application/x-sprite" ,  ".sprite":"application/x-sprite" ,  ".sdp":"application/sdp" ,  ".spt":"application/x-spt" ,  ".src":"application/x-wais-source" ,  ".sst":"application/vnd.ms-pkicertstore" ,  ".stk":"application/hyperstudio" ,  ".stl":"application/vnd.ms-pkistl" ,  ".stm":"text/html" ,  ".svg":"image/svg+xml" ,  ".sv4cpio":"application/x-sv4cpio" ,  ".sv4crc":"application/x-sv4crc" ,  ".svf":"image/vnd" ,  ".svg":"image/svg+xml" ,  ".svh":"image/svh" ,  ".svr":"x-world/x-svr" ,  ".swf":"application/x-shockwave-flash" ,  ".swfl":"application/x-shockwave-flash" ,  ".t":"application/x-troff" ,  ".tad":"application/octet-stream" ,  ".talk":"text/x-speech" ,  ".tar":"application/x-tar" ,  ".taz":"application/x-tar" ,  ".tbp":"application/x-timbuktu" ,  ".tbt":"application/x-timbuktu" ,  ".tcl":"application/x-tcl" ,  ".tex":"application/x-tex" ,  ".texi":"application/x-texinfo" ,  ".texinfo":"application/x-texinfo" ,  ".tgz":"application/x-compressed" ,  ".thm":"application/vnd.eri.thm" ,  ".tif":"image/tiff" ,  ".tiff":"image/tiff" ,  ".tki":"application/x-tkined" ,  ".tkined":"application/x-tkined" ,  ".toc":"application/toc" ,  ".toy":"image/toy" ,  ".tr":"application/x-troff" ,  ".trk":"x-lml/x-gps" ,  ".trm":"application/x-msterminal" ,  ".tsi":"audio/tsplayer" ,  ".tsp":"application/dsptype" ,  ".tsv":"text/tab-separated-values" ,  ".ttf":"application/octet-stream" ,  ".ttz":"application/t-time" ,  ".txt":"text/plain" ,  ".uls":"text/iuls" ,  ".ult":"audio/x-mod" ,  ".ustar":"application/x-ustar" ,  ".uu":"application/x-uuencode" ,  ".uue":"application/x-uuencode" ,  ".vcd":"application/x-cdlink" ,  ".vcf":"text/x-vcard" ,  ".vdo":"video/vdo" ,  ".vib":"audio/vib" ,  ".viv":"video/vivo" ,  ".vivo":"video/vivo" ,  ".vmd":"application/vocaltec-media-desc" ,  ".vmf":"application/vocaltec-media-file" ,  ".vmi":"application/x-dreamcast-vms-info" ,  ".vms":"application/x-dreamcast-vms" ,  ".vox":"audio/voxware" ,  ".vqe":"audio/x-twinvq-plugin" ,  ".vqf":"audio/x-twinvq" ,  ".vql":"audio/x-twinvq" ,  ".vre":"x-world/x-vream" ,  ".vrml":"x-world/x-vrml" ,  ".vrt":"x-world/x-vrt" ,  ".vrw":"x-world/x-vream" ,  ".vts":"workbook/formulaone" ,  ".wav":"audio/x-wav" ,  ".wax":"audio/x-ms-wax" ,  ".wbmp":"image/vnd.wap.wbmp" ,  ".wcm":"application/vnd.ms-works" ,  ".wdb":"application/vnd.ms-works" ,  ".web":"application/vnd.xara" ,  ".wi":"image/wavelet" ,  ".wis":"application/x-InstallShield" ,  ".wks":"application/vnd.ms-works" ,  ".wm":"video/x-ms-wm" ,  ".wma":"audio/x-ms-wma" ,  ".wmd":"application/x-ms-wmd" ,  ".wmf":"application/x-msmetafile" ,  ".wml":"text/vnd.wap.wml" ,  ".wmlc":"application/vnd.wap.wmlc" ,  ".wmls":"text/vnd.wap.wmlscript" ,  ".wmlsc":"application/vnd.wap.wmlscriptc" ,  ".wmlscript":"text/vnd.wap.wmlscript" ,  ".wmv":"audio/x-ms-wmv" ,  ".wmx":"video/x-ms-wmx" ,  ".wmz":"application/x-ms-wmz" ,  ".wpng":"image/x-up-wpng" ,  ".wps":"application/vnd.ms-works" ,  ".wpt":"x-lml/x-gps" ,  ".wri":"application/x-mswrite" ,  ".wrl":"x-world/x-vrml" ,  ".wrz":"x-world/x-vrml" ,  ".ws":"text/vnd.wap.wmlscript" ,  ".wsc":"application/vnd.wap.wmlscriptc" ,  ".wv":"video/wavelet" ,  ".wvx":"video/x-ms-wvx" ,  ".wxl":"application/x-wxl" ,  ".x-gzip":"application/x-gzip" ,  ".xaf":"x-world/x-vrml" ,  ".xar":"application/vnd.xara" ,  ".xbm":"image/x-xbitmap" ,  ".xdm":"application/x-xdma" ,  ".xdma":"application/x-xdma" ,  ".xdw":"application/vnd.fujixerox.docuworks" ,  ".xht":"application/xhtml+xml" ,  ".xhtm":"application/xhtml+xml" ,  ".xhtml":"application/xhtml+xml" ,  ".xla":"application/vnd.ms-excel" ,  ".xlc":"application/vnd.ms-excel" ,  ".xll":"application/x-excel" ,  ".xlm":"application/vnd.ms-excel" ,  ".xls":"application/vnd.ms-excel" ,  ".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ,  ".xlt":"application/vnd.ms-excel" ,  ".xlw":"application/vnd.ms-excel" ,  ".xm":"audio/x-mod" ,  ".xml":"text/plain",  ".xml":"application/xml",  ".xmz":"audio/x-mod" ,  ".xof":"x-world/x-vrml" ,  ".xpi":"application/x-xpinstall" ,  ".xpm":"image/x-xpixmap" ,  ".xsit":"text/xml" ,  ".xsl":"text/xml" ,  ".xul":"text/xul" ,  ".xwd":"image/x-xwindowdump" ,  ".xyz":"chemical/x-pdb" ,  ".yz1":"application/x-yz1" ,  ".z":"application/x-compress" ,  ".zac":"application/x-zaurus-zac" ,  ".zip":"application/zip" ,  ".json":"application/json"}