【发布时间】: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
-
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) }; -
以及我如何导出我的“路线管理”
exports.get = (req, res) => { if (!req.session.login) ... }我有一些想法,但我认为这是一种糟糕的方式,例如将我的对象导出到我需要它的地方,或者将我的对象单独放在将被导入的 .js 文件中,等等......
如果你能给我一些对我有帮助的小径。
编辑:我认为我的问题是我管理会话的方式,因为usersConnected 包含有关所有连接用户的所有信息......也许我应该使用 express-session ?
【问题讨论】:
标签: javascript node.js express