Как отделить код от одного файла маршрута ко многим и как вызвать функцию из этих отдельных файлов?

#javascript #node.js

#javascript #node.js

Вопрос:

Я написал код в app.js виде :

 var express = require("express");
var bodyParser = require("body-parser");
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

var routes=require("./routes/routes1")(app);//ipn listner

var server = app.listen(3000, function () {
  console.log("Listening on port %s...", server.address().port);
});
  

Остальная часть моего кода находится ./routes/routes1.js в корневой папке;
У меня есть много функций под ним, но несколько функций связаны с одним и тем же объектом

Пример:

  • fun1 , fun2 , fun3 связаны с customer сущностью
  • fun4 , fun5 связаны с другим объектом
  • но fun1 может вызвать fun5

Проблема в том, что мне нужно разделить fun1 fun2 и fun3 в отдельный файл .js.
Как я могу это сделать и как я могу вызвать функцию другого файла в один файл?

Комментарии:

1. Вы показали нам только основу экспресс-приложения, и ваш вопрос касается маршрутизации. Вы могли бы поместить свои funX в разные файлы и require их, но это еще один вопрос. Этот вопрос слишком широк, как сейчас.

Ответ №1:

Ваш вопрос слишком широкий, но вот пример, который может вам помочь. Возможно, вам захочется создать следующую структуру каталогов

 myapp
├── app.js
├── _function
│   ├── func1.js
│   ├── func2.js
│   ├── func3.js
│
├── _routes
│   ├── routes1.js
│   ├── routes2.js
  

где myapp находится корневая папка (папка проекта), в то время routes как папка содержит все маршруты, а function папка содержит все функции, которые можно использовать в других файлах js

app.js

 var express = require("express");
var bodyParser = require("body-parser");
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

var routes1 = require("./routes/routes1");
var routes2 = require("./routes/routes2");

// http://localhost:3000/routes1
app.use('/routes1', routes1);

// http://localhost:3000/routes2 // http://localhost:3000/routes2/list
app.use('/routes2', routes2);

var server = app.listen(3000, function () {
  console.log("Listening on port %s...", server.address().port);
});
  

func1.js

 module.exports = function(arg1, arg2) {
    var add = arg1   arg2;
    return add;
}
  

func2.js

 module.exports = function(arg1, arg2) {
    var add = arg1 * arg2;
    return add;
}
  

func3.js

 module.exports = function(arg1, arg2) {
    var add = arg1 - arg2;
    return add;
}
  

routes1.js

 var express = require('express');

var func1 = require('../function/func1');

var router = express.Router();

router.get('/', function(req, res, next) {
    var result = func1(2, 3);
    res.json({func1: result, url: req.url, message:'success'});
});

module.exports = router;
  

routes2.js

 var express = require('express');

var func2 = require('../function/func2');
var func3 = require('../function/func3');

var router = express.Router();

router.get('/', function(req, res, next) {
    var result = func2(2, 3);
    res.json({func1: result, url: req.url, message:'success'});
});

router.get('/list', function(req, res, next) {
    var result = func3(2, 3);
    res.json({func1: result, url: req.url, message:'success'});
});

module.exports = router;
  

Я надеюсь, это поможет вам понять, как использовать функцию в других файлах