聊聊怎么使用Node.js搭建一个静态Web服务器

 3193

怎么使用Node.js搭建一个静态Web服务器?下面本篇文章就手把手教大家使用Node.js搭建静态Web服务器的方法,希望对大家有所帮助!


聊聊怎么使用Node.js搭建一个静态Web服务器

一、动静态服务器的概念

1.1 静态Web服务器概念

我们通常称静态Web服务器静态网站,其主要特征就是服务器上的所有内容都是现成的,不需要后端做额外的处理。当我们向静态服务器发送网页请求时,服务器只需要根据我们的请求路径(URL),返回对应的html文件就行了。

静态网站是指全部由HTML(标准通用标记语言的子集)代码格式页面组成的网站,所有的内容包含在网页文件中。网页上也可以出现各种视觉动态效果,如GIF动画、FLASH动画、滚动字幕等,而网站主要是静态化的页面和代码组成,一般文件名均以htm、html、shtml等为后缀。—— 百度百科

与静态网站对应的是我们最常见的动态Web服务器,此类服务器最大的特征就是所有资源通常不是以html形式存储的,而是需要后端查询数据,组成网页之后再返回给用户,每个用户看到的内容可能是都不相同的。例如,在Java搭建的Web服务器中,我们可以使用JSP拼接网页,形成特定于用户的页面。

(1)动态网页以数据库技术为基础,可以大大降低网站维护的工作量;

(2)采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、用户管理、订单管理等等;

(3)动态网页实际上并不是独立存在于服务器上的网页文件,只有当用户请求时服务器才返回一个完整的网页;

(4)动态网页中的“?”搜索引擎一般不可能从一个网站的数据库中访问全部网页,或者出于技术方面的考虑,搜索蜘蛛不去抓取网址中“?”后面的内容,因此采用动态网页的网站在进行搜索引擎推广时需要做一定的技术处理才能适应搜索引擎的要求。

(5)静态网站因为没有和数据库连接,所以要有动态网站的效果就必须制作大量的网页,其中许多网页只能是虚假网页,根本实现不了动态网站的功能。

—— 百度百科

1.2 静态Web服务器的优点

由于静态服务器不需要后端数据库,所以结构非常简单,非常适合例如文档管理、博客等场景。就以写博客本身而言,我认为静态网站有以下特点:

需要的服务器配置低,最基础的服务器就可以满足大部分人的性能需求;

响应速度快,内容都是现成的html,直接访问即可获得结果;

一个html对应一个url,内容稳定,容易被搜索引擎检索;

制作简单,只需要在服务器搭建完成后,将文件防止指定位置即可;

以上有点都是针对静态博客系统而言的,如果使用纯静态服务器制作一个大型的其他类型网站可能代价比较大。

1.3 快速搭建的途径

如果个人希望快速搭建一个静态服务器,可以使用基于Node.jshttp-server包,可以在一分钟内完成服务器的搭建,步骤如下:

下载http-server包,记得全局安装

  1. npm i http-server -g

进入服务器文件夹,启动服务器

  1. http-server -127.0.0.1 -9999

这样服务器就启动了,根目录就是启动服务器命令执行的目录。

访问localhost:9999就可以看到所有的文件了,下面是我的文件内容:


聊聊怎么使用Node.js搭建一个静态Web服务器

如果我们点击文件名,就会得到对应的文件,例如我们点击*.html,就可以得到网页:


聊聊怎么使用Node.js搭建一个静态Web服务器


这看起来就像是个FTP服务器,难道我们就止步于此了吗?

非也,一个合格的程序员都是要手撸才会快乐!!


二、 手撸指南

2.1 框架搭建

我们使用基础的Node.js内置模块即可完成搭建,所以不需要安装额外的工具包。

主要的工作是创建一个服务器目录,结构如下:

  1. web_server/                 //根目录
  2.     |- static/
  3.     |   |- css/
  4.     |   |   |- style.css    //样式
  5.     |   |- js/
  6.     |   |   |- common.js    //js
  7.     |   |- index.js         //主页
  8.     |- app.js               //服务器文件
  9.     |- mime.json            //扩展名配置

2.2 Ctrl+C/V

app.js

  1. const http = require('http');
  2. const fs = require('fs')
  3. const url = require('url')
  4. const path = require('path')
  5. FileMimes = JSON.parse(fs.readFileSync('./mime.json').toString())
  6. http.createServer(function (req, res) {
  7.     //1.获取地址
  8.     let pathname = url.parse(req.url).pathname
  9.     pathname = pathname == '/' ? '/index.html' : pathname    let extname = path.extname(pathname)
  10.     //2.fs读取文件
  11.     if (pathname != '/favicon.ico') {
  12.         fs.readFile('./static' + pathname, async (err, data) => {
  13.             if (err) {
  14.                 res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' })
  15.                 res.end(err.message)
  16.                 return
  17.             }
  18.             if (!err) {
  19.                 // 3. 针对不同的文件返回不同的内容头
  20.                 let mime = FileMimes[extname]
  21.                 res.writeHead(200, { 'Content-Type': mime + ';charset="utf-8"' })
  22.                 res.end(data)
  23.             }
  24.         })
  25.     }
  26. }).listen(8081);
  27. console.log('Server running at http://127.0.0.1:8081/');

mime.json

  1. { 
  2.     ".323":"text/h323" ,
  3.     ".3gp":"video/3gpp" ,
  4.     ".aab":"application/x-authoware-bin" ,
  5.     ".aam":"application/x-authoware-map" ,
  6.     ".aas":"application/x-authoware-seg" ,
  7.     ".acx":"application/internet-property-stream" ,
  8.     ".ai":"application/postscript" ,
  9.     ".aif":"audio/x-aiff" ,
  10.     ".aifc":"audio/x-aiff" ,
  11.     ".aiff":"audio/x-aiff" ,
  12.     ".als":"audio/X-Alpha5" ,
  13.     ".amc":"application/x-mpeg" ,
  14.     ...//实在太长,就不贴这里了,文末有完整代码
  15. }

2.3 启动服务器

  1. node ./app.js

启动效果如下:

  1. PS E:\Code\Node\demos\03-static_web_server> node .\app.js   
  2. Server running at http://127.0.0.1:8081/

访问localhost:8081即可得到index.html页面。

2.4 部署服务器(简单过程)

也可以部署到远端的服务器

1. 买服务器

当前流行的服务器提供商包括

- 腾讯云

- 阿里云

- 华为云

不过现在CSDN也来凑热闹了:CSDN云,CSDN好像是基于腾讯云的,价格上都差不多。

2. 买域名(非必须,可以使用IP直接访问)

3. 网站备案

4. 部署

静态网站的部署也非常简单,由于很少出错,而且需要经常启停上传新的博客文件,所以直接复制文件到服务器,然后使用

  1. node ./app.js

就可以了。


三、总结

基于Node.js的静态服务器搭建非常简单,我们可以使用http-server包,也可以基于Node手写代码。

手写代码最核心的内容是mime.json文件,也就是对于不同的文件类型,赋予response不同的返回头。

文章结束


下面是mime.json代码(老长了):

  1. { 
  2.   ".323":"text/h323" ,
  3.   ".3gp":"video/3gpp" ,
  4.   ".aab":"application/x-authoware-bin" ,
  5.   ".aam":"application/x-authoware-map" ,
  6.   ".aas":"application/x-authoware-seg" ,
  7.   ".acx":"application/internet-property-stream" ,
  8.   ".ai":"application/postscript" ,
  9.   ".aif":"audio/x-aiff" ,
  10.   ".aifc":"audio/x-aiff" ,
  11.   ".aiff":"audio/x-aiff" ,
  12.   ".als":"audio/X-Alpha5" ,
  13.   ".amc":"application/x-mpeg" ,
  14.   ".ani":"application/octet-stream" ,
  15.   ".apk":"application/vnd.android.package-archive" ,
  16.   ".asc":"text/plain" ,
  17.   ".asd":"application/astound" ,
  18.   ".asf":"video/x-ms-asf" ,
  19.   ".asn":"application/astound" ,
  20.   ".asp":"application/x-asap" ,
  21.   ".asr":"video/x-ms-asf" ,
  22.   ".asx":"video/x-ms-asf" ,
  23.   ".au":"audio/basic" ,
  24.   ".avb":"application/octet-stream" ,
  25.   ".avi":"video/x-msvideo" ,
  26.   ".awb":"audio/amr-wb" ,
  27.   ".axs":"application/olescript" ,
  28.   ".bas":"text/plain" ,
  29.   ".bcpio":"application/x-bcpio" ,
  30.   ".bin ":"application/octet-stream" ,
  31.   ".bld":"application/bld" ,
  32.   ".bld2":"application/bld2" ,
  33.   ".bmp":"image/bmp" ,
  34.   ".bpk":"application/octet-stream" ,
  35.   ".bz2":"application/x-bzip2" ,
  36.   ".c":"text/plain" ,
  37.   ".cal":"image/x-cals" ,
  38.   ".cat":"application/vnd.ms-pkiseccat" ,
  39.   ".ccn":"application/x-cnc" ,
  40.   ".cco":"application/x-cocoa" ,
  41.   ".cdf":"application/x-cdf" ,
  42.   ".cer":"application/x-x509-ca-cert" ,
  43.   ".cgi":"magnus-internal/cgi" ,
  44.   ".chat":"application/x-chat" ,
  45.   ".class":"application/octet-stream" ,
  46.   ".clp":"application/x-msclip" ,
  47.   ".cmx":"image/x-cmx" ,
  48.   ".co":"application/x-cult3d-object" ,
  49.   ".cod":"image/cis-cod" ,
  50.   ".conf":"text/plain" ,
  51.   ".cpio":"application/x-cpio" ,
  52.   ".cpp":"text/plain" ,
  53.   ".cpt":"application/mac-compactpro" ,
  54.   ".crd":"application/x-mscardfile" ,
  55.   ".crl":"application/pkix-crl" ,
  56.   ".crt":"application/x-x509-ca-cert" ,
  57.   ".csh":"application/x-csh" ,
  58.   ".csm":"chemical/x-csml" ,
  59.   ".csml":"chemical/x-csml" ,
  60.   ".css":"text/css" ,
  61.   ".cur":"application/octet-stream" ,
  62.   ".dcm":"x-lml/x-evm" ,
  63.   ".dcr":"application/x-director" ,
  64.   ".dcx":"image/x-dcx" ,
  65.   ".der":"application/x-x509-ca-cert" ,
  66.   ".dhtml":"text/html" ,
  67.   ".dir":"application/x-director" ,
  68.   ".dll":"application/x-msdownload" ,
  69.   ".dmg":"application/octet-stream" ,
  70.   ".dms":"application/octet-stream" ,
  71.   ".doc":"application/msword" ,
  72.   ".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ,
  73.   ".dot":"application/msword" ,
  74.   ".dvi":"application/x-dvi" ,
  75.   ".dwf":"drawing/x-dwf" ,
  76.   ".dwg":"application/x-autocad" ,
  77.   ".dxf":"application/x-autocad" ,
  78.   ".dxr":"application/x-director" ,
  79.   ".ebk":"application/x-expandedbook" ,
  80.   ".emb":"chemical/x-embl-dl-nucleotide" ,
  81.   ".embl":"chemical/x-embl-dl-nucleotide" ,
  82.   ".eps":"application/postscript" ,
  83.   ".epub":"application/epub+zip" ,
  84.   ".eri":"image/x-eri" ,
  85.   ".es":"audio/echospeech" ,
  86.   ".esl":"audio/echospeech" ,
  87.   ".etc":"application/x-earthtime" ,
  88.   ".etx":"text/x-setext" ,
  89.   ".evm":"x-lml/x-evm" ,
  90.   ".evy":"application/envoy" ,
  91.   ".exe":"application/octet-stream" ,
  92.   ".fh4":"image/x-freehand" ,
  93.   ".fh5":"image/x-freehand" ,
  94.   ".fhc":"image/x-freehand" ,
  95.   ".fif":"application/fractals" ,
  96.   ".flr":"x-world/x-vrml" ,
  97.   ".flv":"flv-application/octet-stream" ,
  98.   ".fm":"application/x-maker" ,
  99.   ".fpx":"image/x-fpx" ,
  100.   ".fvi":"video/isivideo" ,
  101.   ".gau":"chemical/x-gaussian-input" ,
  102.   ".gca":"application/x-gca-compressed" ,
  103.   ".gdb":"x-lml/x-gdb" ,
  104.   ".gif":"image/gif" ,
  105.   ".gps":"application/x-gps" ,
  106.   ".gtar":"application/x-gtar" ,
  107.   ".gz":"application/x-gzip" ,
  108.   ".h":"text/plain" ,
  109.   ".hdf":"application/x-hdf" ,
  110.   ".hdm":"text/x-hdml" ,
  111.   ".hdml":"text/x-hdml" ,
  112.   ".hlp":"application/winhlp" ,
  113.   ".hqx":"application/mac-binhex40" ,
  114.   ".hta":"application/hta" ,
  115.   ".htc":"text/x-component" ,
  116.   ".htm":"text/html" ,
  117.   ".html":"text/html" ,
  118.   ".hts":"text/html" ,
  119.   ".htt":"text/webviewhtml" ,
  120.   ".ice":"x-conference/x-cooltalk" ,
  121.   ".ico":"image/x-icon" ,
  122.   ".ief":"image/ief" ,
  123.   ".ifm":"image/gif" ,
  124.   ".ifs":"image/ifs" ,
  125.   ".iii":"application/x-iphone" ,
  126.   ".imy":"audio/melody" ,
  127.   ".ins":"application/x-internet-signup" ,
  128.   ".ips":"application/x-ipscript" ,
  129.   ".ipx":"application/x-ipix" ,
  130.   ".isp":"application/x-internet-signup" ,
  131.   ".it":"audio/x-mod" ,
  132.   ".itz":"audio/x-mod" ,
  133.   ".ivr":"i-world/i-vrml" ,
  134.   ".j2k":"image/j2k" ,
  135.   ".jad":"text/vnd.sun.j2me.app-descriptor" ,
  136.   ".jam":"application/x-jam" ,
  137.   ".jar":"application/java-archive" ,
  138.   ".java":"text/plain" ,
  139.   ".jfif":"image/pipeg" ,
  140.   ".jnlp":"application/x-java-jnlp-file" ,
  141.   ".jpe":"image/jpeg" ,
  142.   ".jpeg":"image/jpeg" ,
  143.   ".jpg":"image/jpeg" ,
  144.   ".jpz":"image/jpeg" ,
  145.   ".js":"application/x-javascript" ,
  146.   ".jwc":"application/jwc" ,
  147.   ".kjx":"application/x-kjx" ,
  148.   ".lak":"x-lml/x-lak" ,
  149.   ".latex":"application/x-latex" ,
  150.   ".lcc":"application/fastman" ,
  151.   ".lcl":"application/x-digitalloca" ,
  152.   ".lcr":"application/x-digitalloca" ,
  153.   ".lgh":"application/lgh" ,
  154.   ".lha":"application/octet-stream" ,
  155.   ".lml":"x-lml/x-lml" ,
  156.   ".lmlpack":"x-lml/x-lmlpack" ,
  157.   ".log":"text/plain" ,
  158.   ".lsf":"video/x-la-asf" ,
  159.   ".lsx":"video/x-la-asf" ,
  160.   ".lzh":"application/octet-stream" ,
  161.   ".m13":"application/x-msmediaview" ,
  162.   ".m14":"application/x-msmediaview" ,
  163.   ".m15":"audio/x-mod" ,
  164.   ".m3u":"audio/x-mpegurl" ,
  165.   ".m3url":"audio/x-mpegurl" ,
  166.   ".m4a":"audio/mp4a-latm" ,
  167.   ".m4b":"audio/mp4a-latm" ,
  168.   ".m4p":"audio/mp4a-latm" ,
  169.   ".m4u":"video/vnd.mpegurl" ,
  170.   ".m4v":"video/x-m4v" ,
  171.   ".ma1":"audio/ma1" ,
  172.   ".ma2":"audio/ma2" ,
  173.   ".ma3":"audio/ma3" ,
  174.   ".ma5":"audio/ma5" ,
  175.   ".man":"application/x-troff-man" ,
  176.   ".map":"magnus-internal/imagemap" ,
  177.   ".mbd":"application/mbedlet" ,
  178.   ".mct":"application/x-mascot" ,
  179.   ".mdb":"application/x-msaccess" ,
  180.   ".mdz":"audio/x-mod" ,
  181.   ".me":"application/x-troff-me" ,
  182.   ".mel":"text/x-vmel" ,
  183.   ".mht":"message/rfc822" ,
  184.   ".mhtml":"message/rfc822" ,
  185.   ".mi":"application/x-mif" ,
  186.   ".mid":"audio/mid" ,
  187.   ".midi":"audio/midi" ,
  188.   ".mif":"application/x-mif" ,
  189.   ".mil":"image/x-cals" ,
  190.   ".mio":"audio/x-mio" ,
  191.   ".mmf":"application/x-skt-lbs" ,
  192.   ".mng":"video/x-mng" ,
  193.   ".mny":"application/x-msmoney" ,
  194.   ".moc":"application/x-mocha" ,
  195.   ".mocha":"application/x-mocha" ,
  196.   ".mod":"audio/x-mod" ,
  197.   ".mof":"application/x-yumekara" ,
  198.   ".mol":"chemical/x-mdl-molfile" ,
  199.   ".mop":"chemical/x-mopac-input" ,
  200.   ".mov":"video/quicktime" ,
  201.   ".movie":"video/x-sgi-movie" ,
  202.   ".mp2":"video/mpeg" ,
  203.   ".mp3":"audio/mpeg" ,
  204.   ".mp4":"video/mp4" ,
  205.   ".mpa":"video/mpeg" ,
  206.   ".mpc":"application/vnd.mpohun.certificate" ,
  207.   ".mpe":"video/mpeg" ,
  208.   ".mpeg":"video/mpeg" ,
  209.   ".mpg":"video/mpeg" ,
  210.   ".mpg4":"video/mp4" ,
  211.   ".mpga":"audio/mpeg" ,
  212.   ".mpn":"application/vnd.mophun.application" ,
  213.   ".mpp":"application/vnd.ms-project" ,
  214.   ".mps":"application/x-mapserver" ,
  215.   ".mpv2":"video/mpeg" ,
  216.   ".mrl":"text/x-mrml" ,
  217.   ".mrm":"application/x-mrm" ,
  218.   ".ms":"application/x-troff-ms" ,
  219.   ".msg":"application/vnd.ms-outlook" ,
  220.   ".mts":"application/metastream" ,
  221.   ".mtx":"application/metastream" ,
  222.   ".mtz":"application/metastream" ,
  223.   ".mvb":"application/x-msmediaview" ,
  224.   ".mzv":"application/metastream" ,
  225.   ".nar":"application/zip" ,
  226.   ".nbmp":"image/nbmp" ,
  227.   ".nc":"application/x-netcdf" ,
  228.   ".ndb":"x-lml/x-ndb" ,
  229.   ".ndwn":"application/ndwn" ,
  230.   ".nif":"application/x-nif" ,
  231.   ".nmz":"application/x-scream" ,
  232.   ".nokia-op-logo":"image/vnd.nok-oplogo-color" ,
  233.   ".npx":"application/x-netfpx" ,
  234.   ".nsnd":"audio/nsnd" ,
  235.   ".nva":"application/x-neva1" ,
  236.   ".nws":"message/rfc822" ,
  237.   ".oda":"application/oda" ,
  238.   ".ogg":"audio/ogg" ,
  239.   ".oom":"application/x-AtlasMate-Plugin" ,
  240.   ".p10":"application/pkcs10" ,
  241.   ".p12":"application/x-pkcs12" ,
  242.   ".p7b":"application/x-pkcs7-certificates" ,
  243.   ".p7c":"application/x-pkcs7-mime" ,
  244.   ".p7m":"application/x-pkcs7-mime" ,
  245.   ".p7r":"application/x-pkcs7-certreqresp" ,
  246.   ".p7s":"application/x-pkcs7-signature" ,
  247.   ".pac":"audio/x-pac" ,
  248.   ".pae":"audio/x-epac" ,
  249.   ".pan":"application/x-pan" ,
  250.   ".pbm":"image/x-portable-bitmap" ,
  251.   ".pcx":"image/x-pcx" ,
  252.   ".pda":"image/x-pda" ,
  253.   ".pdb":"chemical/x-pdb" ,
  254.   ".pdf":"application/pdf" ,
  255.   ".pfr":"application/font-tdpfr" ,
  256.   ".pfx":"application/x-pkcs12" ,
  257.   ".pgm":"image/x-portable-graymap" ,
  258.   ".pict":"image/x-pict" ,
  259.   ".pko":"application/ynd.ms-pkipko" ,
  260.   ".pm":"application/x-perl" ,
  261.   ".pma":"application/x-perfmon" ,
  262.   ".pmc":"application/x-perfmon" ,
  263.   ".pmd":"application/x-pmd" ,
  264.   ".pml":"application/x-perfmon" ,
  265.   ".pmr":"application/x-perfmon" ,
  266.   ".pmw":"application/x-perfmon" ,
  267.   ".png":"image/png" ,
  268.   ".pnm":"image/x-portable-anymap" ,
  269.   ".pnz":"image/png" ,
  270.   ".pot,":"application/vnd.ms-powerpoint" ,
  271.   ".ppm":"image/x-portable-pixmap" ,
  272.   ".pps":"application/vnd.ms-powerpoint" ,
  273.   ".ppt":"application/vnd.ms-powerpoint" ,
  274.   ".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation" ,
  275.   ".pqf":"application/x-cprplayer" ,
  276.   ".pqi":"application/cprplayer" ,
  277.   ".prc":"application/x-prc" ,
  278.   ".prf":"application/pics-rules" ,
  279.   ".prop":"text/plain" ,
  280.   ".proxy":"application/x-ns-proxy-autoconfig" ,
  281.   ".ps":"application/postscript" ,
  282.   ".ptlk":"application/listenup" ,
  283.   ".pub":"application/x-mspublisher" ,
  284.   ".pvx":"video/x-pv-pvx" ,
  285.   ".qcp":"audio/vnd.qcelp" ,
  286.   ".qt":"video/quicktime" ,
  287.   ".qti":"image/x-quicktime" ,
  288.   ".qtif":"image/x-quicktime" ,
  289.   ".r3t":"text/vnd.rn-realtext3d" ,
  290.   ".ra":"audio/x-pn-realaudio" ,
  291.   ".ram":"audio/x-pn-realaudio" ,
  292.   ".rar":"application/octet-stream" ,
  293.   ".ras":"image/x-cmu-raster" ,
  294.   ".rc":"text/plain" ,
  295.   ".rdf":"application/rdf+xml" ,
  296.   ".rf":"image/vnd.rn-realflash" ,
  297.   ".rgb":"image/x-rgb" ,
  298.   ".rlf":"application/x-richlink" ,
  299.   ".rm":"audio/x-pn-realaudio" ,
  300.   ".rmf":"audio/x-rmf" ,
  301.   ".rmi":"audio/mid" ,
  302.   ".rmm":"audio/x-pn-realaudio" ,
  303.   ".rmvb":"audio/x-pn-realaudio" ,
  304.   ".rnx":"application/vnd.rn-realplayer" ,
  305.   ".roff":"application/x-troff" ,
  306.   ".rp":"image/vnd.rn-realpix" ,
  307.   ".rpm":"audio/x-pn-realaudio-plugin" ,
  308.   ".rt":"text/vnd.rn-realtext" ,
  309.   ".rte":"x-lml/x-gps" ,
  310.   ".rtf":"application/rtf" ,
  311.   ".rtg":"application/metastream" ,
  312.   ".rtx":"text/richtext" ,
  313.   ".rv":"video/vnd.rn-realvideo" ,
  314.   ".rwc":"application/x-rogerwilco" ,
  315.   ".s3m":"audio/x-mod" ,
  316.   ".s3z":"audio/x-mod" ,
  317.   ".sca":"application/x-supercard" ,
  318.   ".scd":"application/x-msschedule" ,
  319.   ".sct":"text/scriptlet" ,
  320.   ".sdf":"application/e-score" ,
  321.   ".sea":"application/x-stuffit" ,
  322.   ".setpay":"application/set-payment-initiation" ,
  323.   ".setreg":"application/set-registration-initiation" ,
  324.   ".sgm":"text/x-sgml" ,
  325.   ".sgml":"text/x-sgml" ,
  326.   ".sh":"application/x-sh" ,
  327.   ".shar":"application/x-shar" ,
  328.   ".shtml":"magnus-internal/parsed-html" ,
  329.   ".shw":"application/presentations" ,
  330.   ".si6":"image/si6" ,
  331.   ".si7":"image/vnd.stiwap.sis" ,
  332.   ".si9":"image/vnd.lgtwap.sis" ,
  333.   ".sis":"application/vnd.symbian.install" ,
  334.   ".sit":"application/x-stuffit" ,
  335.   ".skd":"application/x-Koan" ,
  336.   ".skm":"application/x-Koan" ,
  337.   ".skp":"application/x-Koan" ,
  338.   ".skt":"application/x-Koan" ,
  339.   ".slc":"application/x-salsa" ,
  340.   ".smd":"audio/x-smd" ,
  341.   ".smi":"application/smil" ,
  342.   ".smil":"application/smil" ,
  343.   ".smp":"application/studiom" ,
  344.   ".smz":"audio/x-smd" ,
  345.   ".snd":"audio/basic" ,
  346.   ".spc":"application/x-pkcs7-certificates" ,
  347.   ".spl":"application/futuresplash" ,
  348.   ".spr":"application/x-sprite" ,
  349.   ".sprite":"application/x-sprite" ,
  350.   ".sdp":"application/sdp" ,
  351.   ".spt":"application/x-spt" ,
  352.   ".src":"application/x-wais-source" ,
  353.   ".sst":"application/vnd.ms-pkicertstore" ,
  354.   ".stk":"application/hyperstudio" ,
  355.   ".stl":"application/vnd.ms-pkistl" ,
  356.   ".stm":"text/html" ,
  357.   ".svg":"image/svg+xml" ,
  358.   ".sv4cpio":"application/x-sv4cpio" ,
  359.   ".sv4crc":"application/x-sv4crc" ,
  360.   ".svf":"image/vnd" ,
  361.   ".svg":"image/svg+xml" ,
  362.   ".svh":"image/svh" ,
  363.   ".svr":"x-world/x-svr" ,
  364.   ".swf":"application/x-shockwave-flash" ,
  365.   ".swfl":"application/x-shockwave-flash" ,
  366.   ".t":"application/x-troff" ,
  367.   ".tad":"application/octet-stream" ,
  368.   ".talk":"text/x-speech" ,
  369.   ".tar":"application/x-tar" ,
  370.   ".taz":"application/x-tar" ,
  371.   ".tbp":"application/x-timbuktu" ,
  372.   ".tbt":"application/x-timbuktu" ,
  373.   ".tcl":"application/x-tcl" ,
  374.   ".tex":"application/x-tex" ,
  375.   ".texi":"application/x-texinfo" ,
  376.   ".texinfo":"application/x-texinfo" ,
  377.   ".tgz":"application/x-compressed" ,
  378.   ".thm":"application/vnd.eri.thm" ,
  379.   ".tif":"image/tiff" ,
  380.   ".tiff":"image/tiff" ,
  381.   ".tki":"application/x-tkined" ,
  382.   ".tkined":"application/x-tkined" ,
  383.   ".toc":"application/toc" ,
  384.   ".toy":"image/toy" ,
  385.   ".tr":"application/x-troff" ,
  386.   ".trk":"x-lml/x-gps" ,
  387.   ".trm":"application/x-msterminal" ,
  388.   ".tsi":"audio/tsplayer" ,
  389.   ".tsp":"application/dsptype" ,
  390.   ".tsv":"text/tab-separated-values" ,
  391.   ".ttf":"application/octet-stream" ,
  392.   ".ttz":"application/t-time" ,
  393.   ".txt":"text/plain" ,
  394.   ".uls":"text/iuls" ,
  395.   ".ult":"audio/x-mod" ,
  396.   ".ustar":"application/x-ustar" ,
  397.   ".uu":"application/x-uuencode" ,
  398.   ".uue":"application/x-uuencode" ,
  399.   ".vcd":"application/x-cdlink" ,
  400.   ".vcf":"text/x-vcard" ,
  401.   ".vdo":"video/vdo" ,
  402.   ".vib":"audio/vib" ,
  403.   ".viv":"video/vivo" ,
  404.   ".vivo":"video/vivo" ,
  405.   ".vmd":"application/vocaltec-media-desc" ,
  406.   ".vmf":"application/vocaltec-media-file" ,
  407.   ".vmi":"application/x-dreamcast-vms-info" ,
  408.   ".vms":"application/x-dreamcast-vms" ,
  409.   ".vox":"audio/voxware" ,
  410.   ".vqe":"audio/x-twinvq-plugin" ,
  411.   ".vqf":"audio/x-twinvq" ,
  412.   ".vql":"audio/x-twinvq" ,
  413.   ".vre":"x-world/x-vream" ,
  414.   ".vrml":"x-world/x-vrml" ,
  415.   ".vrt":"x-world/x-vrt" ,
  416.   ".vrw":"x-world/x-vream" ,
  417.   ".vts":"workbook/formulaone" ,
  418.   ".wav":"audio/x-wav" ,
  419.   ".wax":"audio/x-ms-wax" ,
  420.   ".wbmp":"image/vnd.wap.wbmp" ,
  421.   ".wcm":"application/vnd.ms-works" ,
  422.   ".wdb":"application/vnd.ms-works" ,
  423.   ".web":"application/vnd.xara" ,
  424.   ".wi":"image/wavelet" ,
  425.   ".wis":"application/x-InstallShield" ,
  426.   ".wks":"application/vnd.ms-works" ,
  427.   ".wm":"video/x-ms-wm" ,
  428.   ".wma":"audio/x-ms-wma" ,
  429.   ".wmd":"application/x-ms-wmd" ,
  430.   ".wmf":"application/x-msmetafile" ,
  431.   ".wml":"text/vnd.wap.wml" ,
  432.   ".wmlc":"application/vnd.wap.wmlc" ,
  433.   ".wmls":"text/vnd.wap.wmlscript" ,
  434.   ".wmlsc":"application/vnd.wap.wmlscriptc" ,
  435.   ".wmlscript":"text/vnd.wap.wmlscript" ,
  436.   ".wmv":"audio/x-ms-wmv" ,
  437.   ".wmx":"video/x-ms-wmx" ,
  438.   ".wmz":"application/x-ms-wmz" ,
  439.   ".wpng":"image/x-up-wpng" ,
  440.   ".wps":"application/vnd.ms-works" ,
  441.   ".wpt":"x-lml/x-gps" ,
  442.   ".wri":"application/x-mswrite" ,
  443.   ".wrl":"x-world/x-vrml" ,
  444.   ".wrz":"x-world/x-vrml" ,
  445.   ".ws":"text/vnd.wap.wmlscript" ,
  446.   ".wsc":"application/vnd.wap.wmlscriptc" ,
  447.   ".wv":"video/wavelet" ,
  448.   ".wvx":"video/x-ms-wvx" ,
  449.   ".wxl":"application/x-wxl" ,
  450.   ".x-gzip":"application/x-gzip" ,
  451.   ".xaf":"x-world/x-vrml" ,
  452.   ".xar":"application/vnd.xara" ,
  453.   ".xbm":"image/x-xbitmap" ,
  454.   ".xdm":"application/x-xdma" ,
  455.   ".xdma":"application/x-xdma" ,
  456.   ".xdw":"application/vnd.fujixerox.docuworks" ,
  457.   ".xht":"application/xhtml+xml" ,
  458.   ".xhtm":"application/xhtml+xml" ,
  459.   ".xhtml":"application/xhtml+xml" ,
  460.   ".xla":"application/vnd.ms-excel" ,
  461.   ".xlc":"application/vnd.ms-excel" ,
  462.   ".xll":"application/x-excel" ,
  463.   ".xlm":"application/vnd.ms-excel" ,
  464.   ".xls":"application/vnd.ms-excel" ,
  465.   ".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ,
  466.   ".xlt":"application/vnd.ms-excel" ,
  467.   ".xlw":"application/vnd.ms-excel" ,
  468.   ".xm":"audio/x-mod" ,
  469.   ".xml":"text/plain",
  470.   ".xml":"application/xml",
  471.   ".xmz":"audio/x-mod" ,
  472.   ".xof":"x-world/x-vrml" ,
  473.   ".xpi":"application/x-xpinstall" ,
  474.   ".xpm":"image/x-xpixmap" ,
  475.   ".xsit":"text/xml" ,
  476.   ".xsl":"text/xml" ,
  477.   ".xul":"text/xul" ,
  478.   ".xwd":"image/x-xwindowdump" ,
  479.   ".xyz":"chemical/x-pdb" ,
  480.   ".yz1":"application/x-yz1" ,
  481.   ".z":"application/x-compress" ,
  482.   ".zac":"application/x-zaurus-zac" ,
  483.   ".zip":"application/zip" ,
  484.   ".json":"application/json"
  485. }


本文网址:https://www.zztuku.com/detail-12969.html
站长图库 - 聊聊怎么使用Node.js搭建一个静态Web服务器
申明:本文转载于《CSDN》,如有侵犯,请 联系我们 删除。

评论(0)条

您还没有登录,请 登录 后发表评论!

提示:请勿发布广告垃圾评论,否则封号处理!!

    编辑推荐