快递

时间:2016-03-02 13:59:07

标签: node.js express

我想知道如何将Express中的所有api路由移到我routes.js文件的单独server.js文件中

我为每条路线使用app.use()列出了一长串api路线。所以每条路线都在自己的文件中,例如movies.jsmovie.js但是当我列出这些内容时,会在server.js

中列出一个长列表

所以我想从下面的server.js中删除api端点列表部分到routes.js文件。

以下是我目前的情况:

server.js

import path from 'path'
import express from 'express'
import webpack from 'webpack'
import webpackDevMiddleware from 'webpack-dev-middleware'
import webpackConfig from './webpack.config.dev'

const app = express();

/* api endpoints, can be many more, I want them in routes.js */    
app.use('/api/movies', require('./src/api/routes/movies'))
app.use('/api/movie', require('./src/api/routes/movie'))

app.use(webpackDevMiddleware(webpack(webpackConfig), {
  publicPath: webpackConfig.output.publicPath
}));

app.use('/public', express.static(__dirname + '/public'))    

app.get('*', function(req, res) {
  res.sendFile(path.join(__dirname, 'index.html'));
});


app.listen(3000, 'localhost', function (err) {
  if (err) {
    console.log(err);
    return;
  }
})

示例路线

movies.js

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

router.get('/', function(req, res) {
  res.json({})
});

module.exports = router;

1 个答案:

答案 0 :(得分:58)

您可以尝试使用以下模块化方法。 定义具有每个功能逻辑的控制器文件例如电影。

<强> movieController.js

module.exports = {
    getMovie : function(req, res){
       //do something
    },
    getMovies : function(req, res){
       //do something
    },
    postMovie : function(req, res){
       //do something
    }
}

然后,在路径文件中引用该控制器并简单地插入这些函数。

<强> routes.js

var express = require('express');
var movieCtrl = require('./movieController');

var router = express.Router();

router.route('/movie').get(movieCtrl.getMovie);
router.route('/movie').post(movieCtrl.postMovie);
router.route('/movies').get(movieCtrl.getMovies);

module.exports = router;

并且,在app.js中,将路线安装到合适的位置,例如/ API

<强> app.js

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