美文网首页
05 - req.url 、 fs包 、 readFile()

05 - req.url 、 fs包 、 readFile()

作者: 小草莓蹦蹦跳 | 来源:发表于2017-10-19 20:55 被阅读0次
    1. req.url 可以获取对应的路径
    1. 一般在node.js中我们获取路径的时候,一般不写对应的主机地址以及端口号
      例如如果地址是127.0.0.1:3000/fang,我们就写成/fang
    1. 当我们想要返回一个页面的时候,我们不能直接通过end返回。
      因为end中只能设置字符串和二进制,我们可以借助一个 fs 的包。
      这个包可以导入。然后通过这个包来读取对应的文件,读取文件后会有对应的返回的数据,返回数据就是一个二进制
    1. 读取文件的方法 readFile()
      这个方法有两个参数,
      第一个参数表示对应的文件的路径(我们使用相对路径)(./表示当前目录);
      第二个参数表示对应的回调的数据
      回调中有两个参数,
      第一个参数表示错误;
      第二个表示对应的数据
    1. 当在一个页面中有对应的资源文件的时候,当请求这个页面的时候,资源文件会自动发送请求,所以会出现对应的打圈的状态
    • 凡是属于资源文件我们在node.js中都需要处理对应的请求

    • 资源文件: .html、图片、 css 、js

    • 设置对应的路径来处理对应的请求,读取对应的文件把它返回

    • 当返回的是图片的时候,一般设置对应的响应头中的响应格式为image/jpg


  • 需求1:
    当我们访问到/fang路径的时候,显示返回一个方字
    如果我们访问到对应的/yuan路径的时候,显示返回一个圆字

/*需求:当我们访问到/fang路径的时候,显示返回一个方
 * 如果我们访问到对应的/yuan路径的时候,显示返回一个圆*/

var http = require('http');

var server = http.createServer(function (req, res) {
    /*解决方法:就是判断对应的路径,如果是/fang就返回方
     * 如果是/yuan就返回圆*/
    /*我们可以通过req获取对应的路径:req.url可以获取对应的路径
     一般在node.js中我们获取路径的时候,一般不写对应的主机地址以及端口号
     例如如果地址是127.0.0.1:3000/fang,我们就写成/fang
     */
    if (req.url == '/fang'){
       res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
       res.end('方');
    }else if(req.url == '/yuan'){
        res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
        res.end('圆');
    }

});

server.listen(3000,'127.0.0.1');
  • 需求2:
    当访问/fang的时候,显示一个xixi的页面 ,
    当访问/yuan的时候显示一个haha的页面
/*需求:当访问/fang的时候,显示一个xixi的页面 ,当访问/yuan的时候显示一个haha的页面*/

var http = require('http');

//导入fs包
var fs = require('fs');

var server = http.createServer(function (req, res) {
    if(req.url == '/fang'){

        /*当我们想要返回一个页面的时候,我们不能直接通过end返回
         * 因为end中只能设置字符串和二进制
         * 解决:我们可以借助一个fs的包,这个包可以导入然后通过这个包来读取对应的文件
         * 读取文件后会有对应的返回的数据,返回数据就是一个二进制*/
        /*读取文件然后返回对应的数据
         * readFile:这个方法有两个参数,第一个参数表示对应的文件的路径
         * 第二个参数表示对应的回调的数据,回调中有两个参数,第一个参数表示错误
         * 第二个表示对应的数据
         * 我们使用相对路径
         * ./:表示当前目录*/

        fs.readFile('./html/xixi.html',function (err, data) {
          //  容错性处理
          if (err) {
              throw err;
              return;
          }

          res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});

            res.end(data);

        });
    }

    else if(req.url == '/yuan'){

        fs.readFile('./html/haha.html',function (err, data) {
            if (err){
                throw err;
                return;
            }

            res.writeHead(200,{'Content-Type':'text/html;charset=UTF-8'});

            res.end(data);
        });
    }
});

server.listen(3000,'127.0.0.1');

  • 需求3:图片和css文件的请求。
    • 资源文件中有图片和css文件,当请求这个页面时,它们自动会发送请求,所以会出现打圈的现象。

    • 凡是属于资源文件,在node.js中都需要处理对应的请求,设置对应的路径和对应的页面来处理对应的请求使其返回。

    • css文件要先导入.html文件

var http = require('http');
var fs = require('fs');
var server = http.createServer(function (req, res) {
    if (req.url == '/fang'){
        fs.readFile('./html/xixi.html',function (err, data) {
            res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
            res.end(data);
        });

    }
    else if(req.url == '/yuan'){
        fs.readFile('./html/haha.html',function (err, data) {
            res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
            res.end(data);
        })
    }
    /*当在一个页面中有对应的资源文件的时候,当请求这个页面的时候,资源文件会自动发送请求
     * 所以会出现对应的打圈的状态
     * 凡是属于资源文件我们在node.js中都需要处理对应的请求
     * 资源文件:.html 图片 css js
     * 设置对应的路径来处理对应的请求,读取对应的文件把它返回*/
    
    //路径一定要写得与读取路径的相同
    else if(req.url == '/0.jpg'){
            fs.readFile('./html/0.jpg',function (err, data) {
                if(err){
                    throw err;
                    return;
                }
                /*当返回的是图片的时候,一般设置对应的响应头中的响应格式为image/jpg*/
                res.writeHead(200,{'Content-Type':'image/jpg'});
                res.end(data);
            })
    }
    else if(req.url == '/bbb.css'){
        fs.readFile('./html/bbb.css',function (err, data) {
            /*我们返回的是css的时候,一般设置对应的响应头中的响应格式为text/css*/
            res.writeHead(200,{'Content-Type':'text/css;charset=UFT8'});
            res.end(data);
        })
    }
    else {
        res.writeHead(200,{'Content-Type':'text/html;charset=UTF8'});
        res.end('请求出错');
    }
    }

);
server.listen(3000,'127.0.0.1');

相关文章

网友评论

      本文标题:05 - req.url 、 fs包 、 readFile()

      本文链接:https://www.haomeiwen.com/subject/bkypuxtx.html