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;
浙公网安备 33010602011771号