node.js web服务器 ejs插件使用 实现路由 get post请求

完整的代码, 可以复制引用

// 引入http模块
let http = require('http');
// 引入url模块 获取域名后面的url
let path = require('path');
let fs = require('fs');
let url = require('url');
let ejs = require('ejs');
// 创建HTTP服务
// request 获取客户端传过来的信息,response 给浏览器响应的信息
http.createServer((request, response) => {
    console.log(request.url);
    // 有些地址后面会有传值 列入/index.html?12324123
    // url.parse(request.url).pathname  url.parse().pathname去掉request.url后面的传值
    let queryUrl = url.parse(request.url).pathname === '/' ? '/index.html' : url.parse(request.url).pathname;
    // extname 获取文件的后缀名(格式名)
    let extname = path.extname(queryUrl);
    console.log(extname);
    // 设置响应头
    response.writeHead(200,{'Content-Type': `${contentTypes[extname]};charset="utf-8";`});

// EJS模板引擎渲染
// 在页面里
//         var data = {
//                 title: '我是ejs登录页',
//                 list: ['q', 'w', 'e', 'r']
//         };
// <%= title %>
//           <% for(let i = 0; i < list.length; i++) { %>
//         <p><%= list[i] %></p>
//                   <% } %>
  if(queryUrl === '/index') {
    var data = {
      title: '我是ejs登录页',
      list: ['q', 'w', 'e', 'r']
    };

    ejs.renderFile('./components/index.html', data, function(err, str){
      if (err) {console.log(err); return;}
      response.end(str);
    });
    return;
  } else if(queryUrl === '/my') {
    var data = {
      title: '我是ejs我的中心'
    };
    ejs.renderFile('./components/my.html', data, function(err, str){
      // 不请求favicon.ico
      if (err) {console.log(err); return;}
      response.end(str);
    });
    return;
  }

// 文件读取及错误处理
  fs.readFile(`.${queryUrl}`, (err, data) => {
      if (err) {
          response.end('页面404,不存在这个页面');
          console.log(err); return;
      }
      response.end(data.toString());
  });

// HTTP请求方法说明及获取传值

  // Get、Post 超文本传输协议(HTTP)的设计目的是保证客户端机器与服务器之间的通信。 在客户端和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST。
  // GET - 从指定的资源请求数据。(一般用于获取数据)
  // POST - 向指定的资源提交要被处理的数据。(一般用于提交数据

  // 获取 GET 传值
  var urlinfo = url.parse(req.url, true);
  urlinfo.query;

  // 获取 POST 传值:
  // var postData = '';
  // 数据块接收中
  req.on('data', function (postDataChunk) {
    postData += postDataChunk;
  });

  // 数据接收完毕,执行回调函数
  req.on('end', function () {
    try {
      postData = JSON.parse(postData);
    } catch (e) {
    }
    req.query = postData;
    console.log(querystring.parse(postData));
  });
}).listen(8888);

httpServer http://127.0.0.1:8888

posted on 2020-05-01 10:16  完美前端  阅读(518)  评论(0)    收藏  举报

导航