用Node.js写了一个静态文件服务器[100行,2K]
接触Node.js有段时间了,估计跟大多数Web开发者一样,对Node.js有种自来熟的感觉。
其实Node.js并不是第一个把JavaScript应用到服到服务端的,微软很早就在ASP中支持了JScript,但JSctrip并不包含prototype继承和闭包这两大核心内容。
NodeJS与PHP一样是脚本语言,直接由C/C++编写的编绎器解释执行,性能上比任何需要虚拟机托管执行的高级语言都要快。不过个人感觉其单线程,事件驱动的特性并不太适合架设较为复杂的Web服务器,因为一但遭遇异常,服务就会中止,以后Tomcat可能会支持Node.JS,为每一个请求新建一个Node进程,增强其健壮性。
NodeJS因为其JS的语法特点所以拥有非常高的产出效率(语法简洁,{}即对象,[]即数组,虽然C#也引入了许多动态语言的特性如var/dynamic, 兰布达表示等,但在开发效率上比JS还稍差一些),而且Node绝对不会被过渡设计,因而性能是有保障的。
总之个人认为Node.JS大有可能挑战php目前在Web架构中的统治地位(超过77%的网站、Alex排名靠前网站大多基于PHP)。
下面是本人编写的一个简单静态文件服务器,除掉注释100行左右,调用非常简单,安装好Node.JS后在命令行输入:
node FileServer.js E:\ 8021
node FileServer.js E:\ 8021 true
//FileServer Namespacevar FileServer;(function(){ var fs = require("fs"), path = require("path"); var server = FileServer = { //Root path dir: "C:\\Program Files",
var fileServer = Object.create(FileServer);fileServer.init(process.argv[2], process.argv[3], process.argv[4]);
try{ stat = fs.statSync(fullPath)}catch(err){ server.response.writeHead(404, {"Content-Type": "text/html"}); server.write("File not found!", err); return;}