如何在 Node.js 和 Express 4 上分离路由?

新手上路,请多包涵

我想将 Routes 从我的 server.js 文件中分离出来。

我正在关注 Scotch.io http://scotch.io/tutorials/javascript/build-a-restful-api-using-node-and-express-4 上的本教程

如果所有行都在 server.js 文件上,它就可以工作。但我无法分开。我怎样才能使这项工作?

服务器.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;

和 app/routes/routes.js

 var express = require('express');
var router = express.Router();

router.use(function(req, res, next) {
  console.log('Something is happening.');
  next();
});

router.get('/', function(req, res) {
  res.json({ message: 'hooray! welcome to our rest video api!' });
});

router.route('/videos')

  .post(function(req, res) {

    var video = new Video();
    video.title = req.body.title;

    video.save(function(err) {
  if (err)
    res.send(err);

  res.json({ message: 'Video criado!' });
});

  })

  .get(function(req, res) {
    Video.find(function(err, videos) {
      if (err)
        res.send(err);

      res.json(videos);
    });
  });

module.exports.router = router;

原文由 yellowbuck 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 445
2 个回答

就从主文件中分离路线而言..

服务器.js

 //include the routes file
var routes = require('./routes/route');
var users = require('./routes/users');
var someapi = require('./routes/1/someapi');

////////
app.use('/', routes);
app.use('/users', users);
app.use('/1/someapi', someapi);

路线/route.js

 //last line - try this
module.exports = router;

同样对于新项目,您可以在命令行上尝试

express project_name

为此,您将需要 express-generator

原文由 Kiran Pagar 发布,翻译遵循 CC BY-SA 3.0 许可协议

服务器.js

 var express = require('express');
var app = express();

app.use(express.static('public'));

//Routes
app.use(require('./routes'));  //http://127.0.0.1:8000/    http://127.0.0.1:8000/about

//app.use("/user",require('./routes'));  //http://127.0.0.1:8000/user  http://127.0.0.1:8000/user/about

var server = app.listen(8000, function () {

  var host = server.address().address
  var port = server.address().port

  console.log("Example app listening at http://%s:%s", host, port)

})

路由.js

 var express = require('express');
var router = express.Router();

//Middle ware that is specific to this router
router.use(function timeLog(req, res, next) {
  console.log('Time: ', Date.now());
  next();
});

// Define the home page route
router.get('/', function(req, res) {
  res.send('home page');
});

// Define the about route
router.get('/about', function(req, res) {
  res.send('About us');
});

module.exports = router;

*在 routs.js 你应该定义中间件

参考 http://wiki.workassis.com/nodejs-express-separate-routes/

原文由 Bikesh M 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏