var http = require('http');//创建服务器的
var fs = require('fs');
//引入进来的是模块,模块中有方法,下一步就是使用方法
//Node.js一个最主要的特点:执行的基本都是函数//创建服务
var myServer = http.createServer(function(req,res){//req->请求变量:客户端请求服务器的//res->响应变量:服务器要给客户端写回的变量//前端页面应该给客户端显示,即写回去//这之前应该先把文件内容读出来var html = fs.readFileSync('./view/index.html')res.write(html);//结束写的操作res.end();})//服务端等着客户端请求需要做一个监听。通过创建的服务。
//监听
myServer.listen('5050',function(err){if(err){console.log(err);throw err;}console.log("服务器已开启。端口号为:5050");
})//浏览器请求服务器。知道当前计算机的ip地址。例如,127.0.0.1:3000
代码如上。步骤:1.ctrl+shift+n ,启动node进行启动5050端口。端口具有唯一性。
2.在浏览器 url 中输入 127.0.0.1:5050 ,进行启动服务端。这样就读出了文件内容并显示。
客户端和服务端是分离的。
服务器在一台计算机上,浏览器在一台计算机上。要找到服务器上的文件,通过找到计算机IP地址(如127.0.0.1)找到计算机,找到计算机通过端口号(如5050)找到文件,运行的程序就是5050,程序的内容就是读取网页文件,并且写到浏览器上。
![](https://img-blog.csdn.net/20180922103204860?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlcnJ5c291bA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
上述代码并没有添加逻辑,只是简单的代码。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
现在呢,让我们尝试着添加逻辑进去。如果我们写这样,那就要跳转到info 页面了。
![](https://img-blog.csdn.net/20180922103645938?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlcnJ5c291bA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
就上面这个图,我们在var myServer = http.createServer(function(req,res){}中进行如下尝试
//我们打印一下,出来的URL信息应该是info.htmlvar myurl = req.url;console.log(myurl);
如果我们只有 ![](https://img-blog.csdn.net/20180922110429643?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlcnJ5c291bA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
那么打印出来的结果只有 /
下图是在CMD中运行的结果,第一次有info.html,第二次没有
![](https://img-blog.csdn.net/20180922110619730?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlcnJ5c291bA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
所以我们做出下面的优化:
//我们打印一下,出来的URL信息应该是info.htmlvar myurl = req.url=='/'?'./view/index.html':'./view'+req.url ;// console.log(myurl);
我们这时候应该把读写操作放在一起
//我们打印一下,出来的URL信息应该是info.htmlvar myurl = req.url=='/'?'./view/index.html':'./view'+req.url ;//console.log(myurl);//我们还得判断文件是否存在if(fs.existsSync(myurl)){var html = fs.readFileSync(myurl)res.write(html);}//结束写的操作res.end();
PS:: 如果你按照上述步骤操作,在浏览器中打开的网页一直是index.html,不过页面url怎么刷新都不变化。
这时候应该关闭vscode,因为我一直在vscode中进行的查看,而不是cmd。这时候我猜测应该是5050端口被占用了,代码虽然有改动,但是已经被旧代码的端口占用了,他更新不上去。所以关闭vscode重新加载code。然后页面就自动刷新了。一切正常运行。
你输入一个不存在的url路由(如/1232.html),这时候他会返回一个空页面,我们这时候需要进行如下操作。
//我们还得判断文件是否存在if(fs.existsSync(myurl)){var html = fs.readFileSync(myurl)res.write(html);}else{//创建一个专门放错误的文件,当页面不存在的时候跳转过来var errhtml = fs.readFileSync('./view/err/404err.html');res.write(errhtml);}
![](https://img-blog.csdn.net/20180922113431428?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ZlcnJ5c291bA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
----------------------------------------------------------------------------------------------------------------------------------------------
这个服务告一段落了,下面一篇文章呢,我们在学习一个服务。Node.js一个服务一个模块。