【问题标题】:Express routes & Same Object needed in several files多个文件中需要快速路线和相同对象
【发布时间】:2017-07-07 04:41:19
【问题描述】:

我创建了一个 Web 应用程序,我的所有服务器端都在同一个文件中。 需要明确的是,在我的“app.js”中,我有:

  • 快速路线
  • Socket.io 事件等等...
  • 对页面事件做出反应的不同对象

我想重新设计那个项目以正确地做事,我开始这样做。我已将我的路由放在不同的 js 文件中,例如 login.js、subscribe.js、... 在 routes 目录中。

在我的 app.js 中,我添加了这一行:require('./routes')(app);

我在 /routes 中有一个 index.js 文件,我在其中放置了管理我所有路由的“Express 路由器”。

index.js

module.exports = function (app) {
app.get('/signup', require('./subscribe').get);
app.post('/signup', require('./subscribe').post);
app.get('/', require('./login').get);
app.post('/', require('./login').post);
...
}

这是处理路线的正确方法吗?

我遇到的问题是我有一个名为usersConnected {} 的对象,当会员登录时,我会填写一些属性等... 该对象在我的 app.js 文件中,我无法从 login.js...等其他文件中访问它...

app.js

// Express routing defined in ./routes/index.js 
require('./routes')(app);

// Globals variables
var usersConnected = {};
var rooms = {};
...

login.js

  1. usersConnected的用法示例

    // If login and password matches with couple in database
                usersConnected[login] = {
                    games: rows[0].games,
                    kills: rows[0].kills,
                    deaths: rows[0].deaths,
                    statut: "ACCUEIL",
                    adversaire: "NULL",
                    socket: "NULL",
                    wsId: "NULL",
                    room: "NULL",
                    lsid: funcs.computeRandomLsId(64)
                };
    
  2. 以及我如何导出我的“路线管理”

    exports.get = (req, res) => {
      if (!req.session.login)
           ...
    }
    

    我有一些想法,但我认为这是一种糟糕的方式,例如将我的对象导出到我需要它的地方,或者将我的对象单独放在将被导入的 .js 文件中,等等......

如果你能给我一些对我有帮助的小径。

编辑:我认为我的问题是我管理会话的方式,因为usersConnected 包含有关所有连接用户的所有信息......也许我应该使用 express-session ?

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    我建议你看看 express-generator: http://expressjs.com/en/starter/generator.html 。它为您提供了一个非常好的文件结构。尽管它很固执己见,但我发现它在我开始时非常有用,现在仍然如此。

    在 app.js 文件中你会发现类似这样的内容:

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

    如果您有很多路线,这有点乏味。在这里,您有一个代码 sn-p 可以动态地执行此操作。 gist

    不管怎样,重点是快递生成器会帮你打消疑虑,为你指明正确的方向。

    【讨论】:

      猜你喜欢
      • 2020-02-20
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多