一尘不染

快递路线的单独文件

node.js

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

app.use()为每个路由使用了很长的api路由列表。因此,每条路线都在其自己的文件中,例如movies.jsmovie.js但是当我列出这些路线时,它会在server.js

所以我想从下面将api端点列表的一部分删除server.js到一个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;
  }
})

路线示例

电影.js

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

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

module.exports = router;

阅读 311

收藏
2020-07-07

共1个答案

一尘不染

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

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);
2020-07-07