Node.js之在服务端启动网页(一)

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,程序的内容就是读取网页文件,并且写到浏览器上。

上述代码并没有添加逻辑,只是简单的代码。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

现在呢,让我们尝试着添加逻辑进去。如果我们写这样,那就要跳转到info 页面了。

就上面这个图,我们在var myServer = http.createServer(function(req,res){}中进行如下尝试

//我们打印一下,出来的URL信息应该是info.html
    var myurl = req.url;
    console.log(myurl);

如果我们只有 

那么打印出来的结果只有 /  

下图是在CMD中运行的结果,第一次有info.html,第二次没有

所以我们做出下面的优化:

//我们打印一下,出来的URL信息应该是info.html
    var myurl = req.url=='/'?'./view/index.html':'./view'+req.url  ;
    // console.log(myurl);

我们这时候应该把读写操作放在一起

 //我们打印一下,出来的URL信息应该是info.html
    var 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);
    }

----------------------------------------------------------------------------------------------------------------------------------------------

这个服务告一段落了,下面一篇文章呢,我们在学习一个服务。Node.js一个服务一个模块。

猜你喜欢

转载自blog.csdn.net/ferrysoul/article/details/82810326
今日推荐