网上关于Node.js的介绍已经铺天盖地了,但我就没找到一个简单的web服务器给我做测试用。
实际上Node.js只需要一个exe文件和一个js文件就可以搭建服务器了,用来随便测试页面之类的用起来比nginx还方便。所以我就随手写了一个简单的。只可用于http服务,没有更多功能的js文件。
用起来很简单:
1,先去 http://nodejs.org/下载最新的Node.js可执行的exe文件。比如: http://nodejs.org/dist/latest/node.exe
2,把下面的代码保存为一个 server.js 文件,把它跟刚才下载到的 node.exe 文件放在一起。
3,把server.js文件拖到node.exe文件上就OK了
就这三步之后,整个目录下的文件都可以通过 http://127.0.0.1:8080/ 来访问了,测试用起来非常方便。
其他系统下也如法炮制,官网上也有下载mac和linux的版本。
var http = require("http"), url = require("url"), path = require("path"), fs = require("fs"); http.createServer(function (req, res) { var pathname=__dirname+url.parse(req.url).pathname; if (path.extname(pathname)=="") { pathname+="/"; } if (pathname.charAt(pathname.length-1)=="/"){ pathname+="index.html"; } fs.exists(pathname,function(exists){ if(exists){ switch(path.extname(pathname)){ case ".html": res.writeHead(200, {"Content-Type": "text/html"}); break; case ".js": res.writeHead(200, {"Content-Type": "text/javascript"}); break; case ".css": res.writeHead(200, {"Content-Type": "text/css"}); break; case ".gif": res.writeHead(200, {"Content-Type": "image/gif"}); break; case ".jpg": res.writeHead(200, {"Content-Type": "image/jpeg"}); break; case ".png": res.writeHead(200, {"Content-Type": "image/png"}); break; default: res.writeHead(200, {"Content-Type": "application/octet-stream"}); } fs.readFile(pathname,function (err,data){ res.end(data); }); } else { res.writeHead(404, {"Content-Type": "text/html"}); res.end("<h1>404 Not Found</h1>"); } }); }).listen(8080, "127.0.0.1"); console.log("Server running at http://127.0.0.1:8080/");
不错,又学了一招。嘿嘿。
测试可用,挺方便,友情提醒文件路径带中文会出错 比如../桌面/node/..
额……悲催了……多谢提醒~
我已解决中文问题,res.writeHead(200, {“Content-Type”: “text/html”});改成res.writeHead(200, {“Content-Type”: “text/html; charset=utf-8”});就可以了
只能用于本地吗?
当然可以用于服务器端,不过这个确实只适用于简单的测试环境,如果用作服务器端的话,得还需要做一些工作才行。
试了下,只有本地可以用,同一局域网内其他机器都不能访问,是修改server.js?怎么修改?
这个应该是你的防火墙的设置,你可以查查看
防火墙都关了的,对方也能ping通
呃。。看到.exe哥就不淡定了。。
貌似很简单,有时间要尝试下
哎。Win8下悲剧。所有node搭建的环境都不能用,貌似是权限问题。
如何cache with manifest呢?这个简单的web server无法支持这个特性呀?
这个真强大,虽然简单,但做一般静态web服务器看起来不成问题。有个小建议,path做一些过滤,防止一些类似../../的代码访问上级目录。
其实嘛,开发环境中自己测试用的,干嘛做那么复杂防范那么到位哪~千万不要用在生产环境中,后果自负啊~
第一次学到node.js, 受教了。。
代码高亮插件是什么?
可以更完善一些,比如检查403状态的时候不返回任何内容,降低流量。
还有就是在服务器端保存log等等。
现在都直接用Discuz 的那个。测试的时候根目录一放。
请问mac要怎样操作。。。server.js根本放不进pkg里呀