我想将路由与server.js文件分开.
我正在关注Scotch.io的这个教程 http://scotch.io/tutorials/javascript/build-a-restful-api-using-node-and-express-4
如果所有行都在server.js文件上,则它正在工作.但我没能分开.我怎样才能做到这一点?
server.js
// set up ======================================================================
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
// configuration ===============================================================
app.use(bodyParser());
var port = process.env.PORT || 8000;
var mongoose = require('mongoose');
var database = require('./config/database');
mongoose.connect(database.url);
var Video = require('./app/models/video');
// routes =======================================================================
app.use('/api', require('./app/routes/routes').router);
// listen (start app with node server.js) ======================================
app.listen(port);
console.log("ready captain, on deck" + port);
module.exports = app;
Run Code Online (Sandbox Code Playgroud)
和app/routes/routes.js
var express = require('express');
var router = express.Router();
router.use(function(req, res, next) { …Run Code Online (Sandbox Code Playgroud) 我不认为我完全理解Node.js中的exports工作方式.在一些示例代码中,我注意到以这种方式使用的对象:exports
exports = mongoose = require('mongoose')
mongoose.connect(config.db.uri)
exports = Schema = mongoose.Schema
Run Code Online (Sandbox Code Playgroud)
你使用exports =两次这样的幕后发生了什么?在我看来,"mongoose"不应该被导出.我做了这个快速测试:
var foo
, bar
exports = foo = 'foo'
exports = bar = 'bar'
// reports 'bar' only
console.log(exports)
Run Code Online (Sandbox Code Playgroud)
第二次测试会覆盖第一次导出.
我有一个快速应用程序,从外部API获取其数据
api.com/companies (GET, POST)
api.com/companies/id (GET, PUT)
Run Code Online (Sandbox Code Playgroud)
我想创建一个模型来使代码更容易维护,因为你可以看到我在这里重复了很多代码.
router.get('/companies', function(req, res, next) {
http.get({
host: 'http://api.com',
path: '/companies'
}, function(response) {
var body = '';
response.on('data', function(d) {
body += d;
});
});
res.render('companies', {data: body});
});
router.get('/companies/:id', function(req, res, next) {
http.get({
host: 'http://api.com',
path: '/companies/' + req.params.id
}, function(response) {
var body = '';
response.on('data', function(d) {
body += d;
});
});
res.render('company', {data: body});
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?