2016-04-27 49 views
1

比如我有一個server.js怎麼寫香草路由器的NodeJS不使用NPM包

'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+'/'); 

我有三個控制器博客,待辦事項和驗證這是容易做到這一點的RESTify,明示或hapi,但我如何寫入路由文件而不使用任何npm包?

我需要寫require(./routes)(server)嗎?然後function routes(server) {} module.exports = routes

有更可讀的方法嗎?

+0

請問爲什麼?它僅用於學習puposes – JordanHendrix

+0

我寫了一個沒有框架的節點程序,因爲我不需要它提供的所有其他功能。但有路由問題,現在我只有'require('./../ controllers/1.js');' –

+0

1.js不是一個函數,而是一個擴展代碼,因爲我無法弄清楚做路由:D –

回答

2

您還需要導入url來解析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); 
    } 
} 
+1

看起來不錯謝謝! –