源代码如下:

var http = require("http");
 
//在服务器程序外面我们定义一个a变量
var a = 0;
 
var server = http.createServer(function(req,res){
//让a数值加1
a++;
//设置response响应头部
res.setHeader("Content-Type","text/html;charset=UTF-8");
//显示a的值,end里面必须是一个字符串
res.end(a.toString());
});
 
server.listen(3000);
console.log("服务器已经运行在3000端口");

结果每次运行浏览器,都会进入两次。后来各种百度,终于查到原因:因为浏览器默认一次会请求favicon.ico,如果这不符合我们的业务逻辑,就可以通过解析url,当请求icon时不做逻辑处理。代码修改如下:

//我们写一段程序,证明NodeJS是单线程的

var http = require("http");

var url=require('url');

//在服务器程序外面我们定义一个a变量
var a = 0;

var server = http.createServer(function(req,res){

	if(url.parse(req.url).path=='/favicon.ico')
		return;

	//让a数值加1
	a++;
	console.log("a增加了");
	//设置response响应头部
	res.setHeader("Content-Type","text/html;charset=UTF-8");
	//显示a的值,end里面必须是一个字符串
	res.end(a.toString());
});

server.listen(3000);
console.log("服务器已经运行在3000端口");