例如我有一个server.js
'use strict';
var http, bunyan, config;
config = require('config');
http = require('http');
bunyan = require('bunyan');
//require('./routes/'); ?
process.env.TZ = 'UTC';
process.env.NODE_ENV = process.env.NODE_ENV || 'staging';
var environment = config.get('environment');
var log = bunyan.createLogger({
name : 'index',
level : 'debug',
stream : process.stdout,
});
var server = http.createServer(function (request, response) {
response.writeHead(200,
{'Content-Type' : 'text/plain'});
});
server.on('error', function(error){
log.error('Errored with the message: ',error);
process.exit(1);
});
server.listen(environment.port);
log.info(process.env.NODE_ENV);
log.info('Server running at http://0.0.0.0:'+environment.port+'/');
我有三个控制器Blog,Todo和Auth在restify,express或hapi中执行此操作是微不足道的但是如何在不使用任何npm包的情况下编写路由文件?
我需要写require(./routes)(server)
吗?然后function routes(server) {} module.exports = routes
?
有更可读的方式吗?
答案 0 :(得分:5)
您还需要导入url
来解析网址,然后检查路径。从那里你可以发回你想要的东西,在下面的代码中它是一个文件中的图像:
注意这基本上就是adeneo在上面评论中所说的内容!
http.createServer(function (request, response) {
var path = url.parse(request.url, true).pathname;
if (request.method === 'POST') {
if (path === '/hifive') {
response.writeHead(200,{'Content-Type':'image/jpg'});
fs.readFile(__dirname + '/assets/hifive.jpg', function(err, data) {
if (err) console.log(err);
response.end(data, 'utf-8');
})
}
else {
response.end(404);
}
}