美文网首页
0809_根据url地址来建立一个静态的服务器

0809_根据url地址来建立一个静态的服务器

作者: 天才在战斗 | 来源:发表于2016-08-09 22:07 被阅读41次

    课前回顾

    http协议:
    request (头,体), response方法

    node.js建立服务器, 在页面输出hello

    const http = requir('http');
    const ip = '192.168.84.128';
    const port = 3000;
    
    http.creatServer((req, res) => {
      res.writeHead(200, {}'Content-Type:text/html'});
      res.write('<html>');
      res.write('<head>');
      res.write('<body>');
      res.write('hello');
      res.write('</body>');
      res.write('</head>');
      res.write('</html>');
      res.end();
    }).listen(port, ip, () => {
      console.log('server start');
    });
    

    新内容

    任务: 判断url地址, 根据url地址来建立一个静态的服务器

    • 将昨天的内容进行一个抽取
    const http = require('http');
    
    const ip = '192.168.84.128';
    const port = 3000;
    
    var f = function (req, res) {
      res.writeHead(200, {'Content-Type:text/html'});
      res.write('<html>');
      res.write('<head>');
      res.write('<body>');
      res.write('hello');
      res.write('</body>');
      res.write('</head>');
      res.write('</html>');
      res.end();
    }
    
    var f2 = function () => {
      console.log('server start');
    }
    
    http.creatServer(f).listen(port, ip, f2);
    
    • 获取url, 处理文件
    // 获得文件中的文本内容
    var data = fs.readFileSync('index.html');
    var f = function (req, res) {
      var pathname = url.parse(req.url).pathname; // 这里获取到一个访问的url
      res.write(pathname);
      res.write('\n');
      res.write(data.toString()); // 将从index.html中获得的文本内容显示到页面
      res.end();
    }
    var f2 = function () {
      console.log('server start');
    }
    http.createServer(f).listen(port, ip, f2);
    

    访问链接: 192.168.84.128:3000/liwei/0809/lession3.html

    页面显示: /liwei/0809/lession3.html (即访问路径)

    • 客户端请求静态页面(获取url+文件处理)
    var http = require('http')
    var url = require('url'); // 加载url包
    var fs = require('fs'); // 加载文件处理包
    var ip = '49.70.45.233';
    var port = '3000';
    
    var server = new http.Server();
    
    server.listen(port, ip);
    server.on('request', function(request, response){
      // 这里获取到一个访问的url
      var pathname = url.parse(request.url).pathname;
      function out(file) {
        fs.readFile('./html/' + file, function(err, content) {
          if (err) { // 如果有错误, 打印错误信息
            console.log(err);
          } else { // 没有错误则将index.html返回给客户端(content)
            response.writeHead(200, {'Content-Type':'text/html;charset=utf-8'});
            response.write(content);
            response.end();
          }
        });
      }
      switch (pathname) { // 判断路径, 根据不同的判断结果返回不同的内容
        case '' || '/':
          out('index.html');
          break;
        case '/list':
          out('list.html');
          break;
        case '/good':
          out('good.html');
          break;
        default:
          response.writeHead(404, {'Content-Type':'text/html;charset=utf-8'});
          response.end();
      }
    });
    
    

    注:
    node.js 允许一条语句不加";", 但是建议加上, 因为代码压缩可能会报错

    一个node的包网站: https://www.npmjs.com

    作业

    写一个静态资源的服务器, 根据不同的url显示不同的模板(首页, 列表, 详情)

    相关文章

      网友评论

          本文标题:0809_根据url地址来建立一个静态的服务器

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