1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用Nodejs创建一个Web服务器应如何操作?以及路由相关知识了解

使用Nodejs创建一个Web服务器应如何操作?以及路由相关知识了解

时间:2024-04-07 15:07:06

相关推荐

使用Nodejs创建一个Web服务器应如何操作?以及路由相关知识了解

文章目录

Nodejs创建一个Web服务器Node.js创建第一个应用Web服务器介绍Nodejs创建一个Web服务器路由EJS模块引擎Get、Post获取GET传值获取POST传值

Nodejs创建一个Web服务器

在之前我们讲述了Node.js创建一个应用:

Node.js创建第一个应用

引入http模块。

var http = require('http');

创建服务器。

使用http.createServer()方法创建服务器,并使用listen()方法绑定端口。通过函数request,response参数来接收和响应数据。

const http = require('http');http.createServer(function (request, response) {// 状态码是200, 文件类型是HTML,字符集是utf-8response.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"' });response.end('Hello World'); // 结束响应}).listen(3000);console.log('Server running at http://127.0.0.1:3000/');

Web服务器介绍

Web服务器一般是指网站服务器。是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件让全世界浏览,还可以放置数据文件,让全世界下载。目前最主流的Web服务器有Apache、Nginx、IIS等。

Nodejs创建一个Web服务器

可以让我们访问web服务器上面的网站。可以让我们下载web服务器上面的文件。文件目录: app.js:

const http = require('http');const routes = require('./module/routes');http.createServer(function(request, response) {routes.static(request, response, 'ctrip');}).listen(3000);console.log('Server running at http://127.0.0.1:3000/');

routes.js:

const fs = require('fs');const path = require('path');const url = require('url');// 私有方法let getFileMime = function(extname) {var data = fs.readFileSync('./data/mime.json'); // 同步方法let mimeObj = JSON.parse(data.toString());return mimeObj[extname];}exports.static = function(request, response, staticPath) {// 1.获取地址let pathName = url.parse(request.url).pathname;pathName = pathName == '/' ? '/index.html' : pathName;let extname = path.extname(pathName); // 可以获取后缀名// 2.通过fs模块读取文件if (pathName != '/favicon.ico') {fs.readFile('./' + staticPath + pathName, (err, data) => {if (err) {response.writeHead(404, {'Content-Type': 'text/html;charset="utf-8"' });response.end('404这个页面不存在');}let mime = getFileMime(extname);response.writeHead(200, {'Content-Type': '' + mime + ';charset="utf-8"' });response.end(data);});}}

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",".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": "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"}

路由

官方解释: 路由(Routing)是由一个URL(或者叫路径)和一个特定的HTTP方法(GET、POST等)组成的,涉及到应用如何响应客户端对某个网站节点的访问。通俗的说: 路由指的就是不同请求的URL,处理不同的业务逻辑。

let pathname = url.parse(request.url).pathname;if (pathname == '/login') {response.writeHead(200, {'Content-Type': 'test/html;charset="utf-8"' });response.end('login');} else if (pathname == '/register') {response.writeHead(200, {'Content-Type': 'test/html;charset="utf-8"' });response.end("执行登录");} else if (pathname == '/admin') {response.writeHead(200, {'Content-Type': 'test/html;charset="utf-8"' });response.end('处理后端业务逻辑');} else {response.writeHead(404, {'Content-Type': 'test/html;charset="utf-8"' });response.end('404页面不存在');}

EJS模块引擎

我们学的EJS是后台模板,可以把我们数据库和文件读取的数据显示到HTML页面上。它是一个第三方模块,需要通过npm安装。

安装:

npm install ejs --save / cnpm install ejs --save

Nodejs中使用:

ejs.renderFile(filename, data, options, function(err, str) {// str => Rendered HTML String});

if (pathname == '/login') {let msg = '数据库里面获取的数据';let list = [{title: '新闻111'},{title: '新闻222'},{title: '新闻333'},{title: '新闻444'},{title: '新闻555'}]ejs.renderFile('./views/login.ejs', {msg: msg,list: list}, (err, data) => {response.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"' });response.end(data);});}

login.ejs:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title></head><body><h2>这是一个登录页面</h2><h3><%=msg%></h3><br><ul><%for(var i = 0; i < list.length; i++) {%><li><%=list[i].title%></li><%}%></ul></body></html>

Get、Post

超文本传输协议(HTTP)的设计目的是保证客户端机器与服务器之间的通信。在客户端的服务器之间进行请求响应时,两种最长被用到的方法是:GET和POST。GET-从指定的资源请求数据。(一般用于数据的获取)POST-从指定的资源提交要被处理的数据。(一般用户数据的提交)

获取GET传值

var urlinfo = url.parse(request.url, true);urlinfo.query;

获取POST传值

var postData = '';// 数据块接收中request.on('data', function(postDataChunk) {postData += PostDataChunk;});// 数据接收完毕,执行回调函数request.on('end', function() {try {postData = JSON.parse(postData);}catch(e) {}request.query = postData;});

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。