node routes.js

#### Node.js路由处理代码

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

//导入依赖模块
let path = require('path');
let url = require('url');
let fs = require('fs');
let ejs = require('ejs');
let tools = require('./tools');

// 路由处理
let routes = {
  'static': (request, response) => {
    // 解析URL,如果是'/'默认加载index.html,否则加载相应的文件
    let queryUrl = url.parse(request.url).pathname === '/' ? '/index.html' : url.parse(request.url).pathname;
    // 获取文件后缀名
    let extname = path.extname(queryUrl);

    // 排除favicon.ico请求
    if(queryUrl !== '/favicon.ico') {
      // 根据文件后缀名确定加载的文件路径
      let localUrl = (extname === '.html') 
        ? (queryUrl === '/index.html' ? '/index.html' : '/pages' + queryUrl)
        : '.' + queryUrl;

      try {
        let data = fs.readFileSync(localUrl);
        if (data) {
          // 设置响应头并返回文件内容
          response.writeHead(200, {'Content-Type': `${tools['contentType'][extname]};charset="utf-8"`});
          response.end(data);
        }
      } catch (e) {
        // 文件读取错误处理可以在这里增加
      }
    }
  },

  'route': {
    'index': (request, response, data) => {
      // 使用ejs模板引擎渲染index.html页面
      ejs.renderFile('./index.html', {'list': data, 'msg': '我是ejs'}, (err, data) => {
        if(err) {
          // 错误处理可以在这里增加
        } else {
          response.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"'});
          response.end(data);
        }
      });
    },
    'text': (request, response, data) => {
      // 其他路由处理可以在这里增加
    },
    'error': (request, response, data) => {
      response.writeHead(200, {'Content-Type': 'text/html;charset="utf-8"'});
      response.end('404 找不到地址');
    },
  }
}

module.exports = routes;

posted on 2021-04-05 16:03  完美前端  阅读(234)  评论(0)    收藏  举报

导航