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

 一片绿洲053766 发布于 2023-01-12 17:42

我想将路由与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;

和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;

Bikesh M.. 62

Server.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)

})

routes.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/

4 个回答
  • Server.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)
    
    })
    

    routes.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/

    2023-01-12 17:43 回答
  • 就涉及从主文件分离路线而言..

    Server.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
    

    你需要快速发电机

    2023-01-12 17:43 回答
  • 使用Express 4.0将路径分成自己的文件的另一种方法:

    server.js

    var routes = require('./routes/routes');
    app.use('/', routes);
    

    routes.js

    module.exports = (function() {
        'use strict';
        var router = require('express').Router();
    
        router.get('/', function(req, res) {
            res.json({'foo':'bar'});
        });
    
        return router;
    })();
    

    2023-01-12 17:45 回答
  • 将路由分成自己的文件的一种方法.

    SERVER.JS

    var routes = require('./app/routes/routes');  //module you want to include
    var app=express();
    routes(app);   //routes shall use Express
    

    ROUTES.JS

    module.exports=function(app) {
     //place your routes in here..
     app.post('/api/..., function(req, res) {.....}   //example
    }
    

    2023-01-12 17:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有