【问题标题】:Node.js dividing server file into seperate filesNode.js 将服务器文件分成单独的文件
【发布时间】:2017-04-06 15:18:30
【问题描述】:

我正在学习 node.js,我遇到了这种方式来将我的服务器文件拆分为不同的文件,以便更好地维护。

问题是,我已经查看了所有这些将文件拆分为多个文件的旧方法。 例如:How to split monolithic node.js javascript

Divide Node App in different files

How to split a single Node.js file into separate modules

How to split Node.js files in several files

但是所有这些方法都不再起作用了,它们已经过时了。现在我正在尝试找到一种我们现在可以拆分文件的方法。这不是这里.. 也不是在谷歌。我正在寻找它一个多小时,但我找不到正确的方法来做到这一点..

【问题讨论】:

  • 虽然 Express.js 与 Node.js 不同,但它们提供了 documentation 展示了它们是如何做到的,您可能会觉得这很有帮助。还有MDN.

标签: node.js split


【解决方案1】:

这些链接肯定有效。这是一个例子

greeter.js

module.exports = {
    hello: function(name) {
        console.log("Hello, " + name);
    },
    bye: function(name) {
        console.log("Goodbye, " + name);
    }
};

index.js

var greeter = require('greeter');

greeter.hello("Foo");
greeter.bye("Bar");

Here is the Node.js documentation for it.

【讨论】:

    【解决方案2】:

    我让它工作了。解决方法如下:

    文件:

    server.js (root dir)
    routes.js (root dir/routes/routes.js)
    

    服务器.js

    var express = require('express');
    var app     = express();
    var routes = require('./routes/routes');
    
    app.listen(3001);
    routes(app);
    console.log('Started listening on port : 3001');
    

    routes.js

    module.exports = function(app) {
        app.get('/', function(req, res) {
            res.end('test');
            console.log('Received GET request.');
        });
    };
    

    【讨论】:

    • 您可以查看 express 中间件(而不是 'routes(routes)')
    【解决方案3】:

    您可能会使用 (require) 标记将您的文档包含在 node.js 中

    require('/home/user/module.js');
    

    把它们放在正确的地方

    【讨论】:

      【解决方案4】:

      如果你有一个文件,例如server.js 像这样:

      function a() {
        console.log('This is a()');
      }
      
      function b() {
        a();
      }
      
      b();
      

      然后你可以这样拆分:

      server.js:

      const b = require('./b');
      
      b();
      

      b.js:

      const a = require('./a');
      
      function b() {
        a();
      }
      
      module.exports = b;
      

      a.js

      function a() {
        console.log('This is a()');
      }
      
      module.exports = a;
      

      查看文档了解更多信息:

      另请参阅此答案确实显示了如何针对比我在此处显示的更复杂的情况执行您想要的操作:

      另请参阅这些答案以了解一些有趣的细节:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 2019-04-27
        • 1970-01-01
        相关资源
        最近更新 更多