如何在不使用npm包的情况下编写vanilla nodejs路由器

例如,我有一个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+'/'); 

我有三个控制器博客,Todo和Auth在restify,express或hapi中这样做是微不足道的,但是如何在不使用任何npm包的情况下编写路由文件?

我需要写require(./routes)(server) ? 然后function routes(server) {} module.exports = routes

有更可读的方法吗?

您还需要导入url来parsingurl,然后检查path。 从那里你可以发回你想要的东西,在下面的代码中是一个文件的图像:

请注意,这基本上是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); } }