2.根据路径的不同发送请求

  • fs:file System
    • 读取文件:fs.readFile(文件路径,function(err,err){})
      1. 读取static下的文件
      const http = require('http');
      const fs=require('fs');
      const server = http.createServer(function (req, res) {
        if (res.url == 'favicon.ico') {
          return;
        }
        //读取static下的文件
        fs.readFile('./static/1.txt',function(err,data){
          if(err){
            res.end('404');
          }
          res.writeHeader('200',{'Content-Type':'text/html;charset:UTF-8'});
          res.end(data)
        });
      }).listen(8080);
      
      结果:当页面运行http://localhost:8080/1.txt,会显示static文件夹下1.txt的文件内容,如果我要显示static文件夹下其他文件,会发现我页面显示的内容还是1.txt里面的文件内容;
      2.根据路径的不同发送请求_第1张图片
      image.png

      2.根据路径的不同发送请求_第2张图片
      image.png
      1. 在static文件下,根据不同路径,读取不同的内容
      const http = require('http');
      const fs=require('fs');
      const server = http.createServer(function (req, res) {
        if (res.url == 'favicon.ico') {
          return;
        }
        //根据路径的不同,返回不同的内容
        let pathname = './static' + req.url;
        fs.readFile(pathname,function(err,data){
          if(err){
            res.end('404');
          }
          res.writeHeader('200',{'Content-Type':'text/html;charset:UTF-8'});
          res.end(data)
        });
      }).listen(8080);
      
      
      结果:当我在浏览器输入http://localhost:8080/1.txt就会显示1.txt文件里面的内容,路径改为2.txt 就会显示相应文件的内容
      2.根据路径的不同发送请求_第3张图片
      image.png

![image.png](http://upload-images.jianshu.io/upload_images/6024959-6ed84837bd4cbc94.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 注意:
1. nodejs不会根据根据路由的不同,渲染不同的内容,他需要我们自己去判断路径的不同,来手动返回不同的内容;
2. 如果不想反复重启服务器,而又想输入不然同的内容,渲染不同页面,可以使用读取文件和处理路径的方式来解决

  • 写文件:fs.writeFile('路径','修改后的内容',function(err){})
const http = require('http');
const fs = require('fs');
http.createServer((req, res) => {

  fs.writeFile('./static/1.txt', '修改后的1文件', (err) => {
    if (err) {
      res.end('写入失败')
    }
    res.end();
  })
}).listen(8080);

结果:


2.根据路径的不同发送请求_第4张图片
image.png
  • 读取当前文件夹下所有的文件和目录fs.readdir(path,function(err,files){})
  • fs.stat(path,function(err,stats){})
    • stats.isFile()判断是否为文件
    • stats.isDirector() 判断是否为文件夹
      列子:获取当前文件夹下所有的文件夹
    const http = require('http');
    const fs = require('fs');
    const server = http.createServer((req, res) => {
      if(res.url=='favicon.ico'){return;}
      let aryDir=[];
      fs.readdir('./', (err, files) => {
        console.log(files);
        (function Iterator(index) {
          if(index>=files.length){
            console.log(aryDir);
            return;
          }
          fs.stat('./'+files[index],(err,stats)=>{
            if(stats.isDirectory()){
              aryDir.push(files[index]);
            }
            Iterator(++index);
          })
    
        })(0);
      });
      res.end();
    }).listen(9999);
    

结果:


2.根据路径的不同发送请求_第5张图片
image.png

你可能感兴趣的:(2.根据路径的不同发送请求)