未加星标

搭建简单的Node.js本地服务器

字体大小 | |
[前端(javascript) 所属分类 前端(javascript) | 发布者 店小二03 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏

很久以前我还是前端小白,不懂怎么搭建本地服务器。每次遇到必须要托管才能用的资源,我只懂得把它放到云上,特别浪费时间。然后我接触到了Node,但了解很少,只知道它可以做很多事情。正好最近时间多,我尝试一下用Node搭建本地服务器。下面是我搭建本地服务器过程中的一些经历。

首先当然是四处找示例代码。很快就找到了:

var http = require('http'); http.createServer(function(req,res){ res.writeHead(200,{'Content-Type':'text/html'}); res.write('<h1>Node.js</h1>'); res.write('<p>Hello World!</p>'); res.end(''); }).listen(3000); console.log('HTTP server is listening at port 3000.');

保存为testnode.js文件,用Node运行,结果如图:


搭建简单的Node.js本地服务器
搭建简单的Node.js本地服务器

简单吧?

乐了一阵,再仔细想想,服务器是搭起来了,可是服务器每次访问的响应内容都写死了,如果我想访问特定的HTML页面,怎么办?

一番搜索后,找到了一篇博文中的代码(博文 链接地址 ,博客 链接地址 ,作者shawn.xie),摘录如下:

http.js var PORT = 3000; var http = require('http'); var url=require('url'); var fs=require('fs'); var mine=require('./mine').types; var path=require('path'); var server = http.createServer(function (request, response) { var pathname = url.parse(request.url).pathname; var realPath = path.join("assets", pathname); //console.log(realPath); var ext = path.extname(realPath); ext = ext ? ext.slice(1) : 'unknown'; fs.exists(realPath, function (exists) { if (!exists) { response.writeHead(404, { 'Content-Type': 'text/plain' }); response.write("This request URL " + pathname + " was not found on this server."); response.end(); } else { fs.readFile(realPath, "binary", function (err, file) { if (err) { response.writeHead(500, { 'Content-Type': 'text/plain' }); response.end(err); } else { var contentType = mine[ext] || "text/plain"; response.writeHead(200, { 'Content-Type': contentType }); response.write(file, "binary"); response.end(); } }); } }); }); server.listen(PORT); console.log("Server runing at port: " + PORT + "."); mine.js exports.types = { "css": "text/css", "gif": "image/gif", "html": "text/html", "ico": "image/x-icon", "jpeg": "image/jpeg", "jpg": "image/jpeg", "js": "text/javascript", "json": "application/json", "pdf": "application/pdf", "png": "image/png", "svg": "image/svg+xml", "swf": "application/x-shockwave-flash", "tiff": "image/tiff", "txt": "text/plain", "wav": "audio/x-wav", "wma": "audio/x-ms-wma", "wmv": "video/x-ms-wmv", "xml": "text/xml" }; index.html <!--这个页面是我自己写的--> <h1>Node.js</h1> <p>Hello World!</p>

目录结构如下:

--http.js --mine.js --assets | --index.html

【注:代码和文件里的mine应为mime(多用途互联网邮件扩展类型),此处应为作者笔误,未改】

用Node运行http.js,然后在浏览器中打开 localhost:3000/index.html ,效果如图


搭建简单的Node.js本地服务器
搭建简单的Node.js本地服务器

【注:到这一步,这个本地服务器还不稳定,容易崩溃,可能要多试几次才能成功】

确实可以访问特定的文件了,大家可以来试一试。

但是,如果你细心的话,就会发现当我们访问 localhost:3000 的时候,浏览器会显示无法访问网站:


搭建简单的Node.js本地服务器

如何把我们的本地服务器设置为默认显示主页(index.html)呢?

这确实花了我一番功夫,四处上网找,可是找到的解决方法都不适用。

最后,我在上面提到的那篇博文下方的评论找到了答案:(真是被坑死了)

http.js ... //console.log(realPath); //在代码中添加这一段 if (pathname.charAt(pathname.length - 1) == "/") { //如果访问目录 pathname += "index.html"; //指定为默认网页 } var ext = path.extname(realPath); ...

修改完成后,用Node运行http.js,打开 localhost:3000 ,果然可以访问了:


搭建简单的Node.js本地服务器

现在,这个服务器对我来说算得上是暂时可以满足开发需求了。

当然这个本地服务器还有一些不完善的地方,比如MIME类型数据不全,没有和前端页面通信的数据接口,启动步骤麻烦,这些就留着慢慢改进了。

本文前端(javascript)相关术语:javascript是什么意思 javascript下载 javascript权威指南 javascript基础教程 javascript 正则表达式 javascript设计模式 javascript高级程序设计 精通javascript javascript教程

分页:12
转载请注明
本文标题:搭建简单的Node.js本地服务器
本站链接:http://www.codesec.net/view/531208.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 前端(javascript) | 评论(0) | 阅读(98)