初学者对Express和socket.io中的模块结构感到困惑
Beginner confused about module structure in Express and socket.io
我使用默认 Express.js项目结构,主要的js文件涉及我的困惑是:
app.js:定义请求处理程序和使用模块。Exports = app;作为一个模块。
bin/www: require app.js, setup and configure http server.
一切似乎都模块化了。
但是当涉及到Socket时。IO集成,这个结构开始让我困惑:
从套接字。io文档:
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
因为插座。io需要服务器变量,所以我弄清楚这段代码应该在www文件,但我也想模块化io事件处理部分成一个模块,但我不知道如何导出io变量到www,因为它需要一个变量服务器从www。
我想知道:这是否意味着我必须在www文件中保留所有socketio事件处理代码?谁能给我一些代码来显示如何模块化这个?
套接字代码的组织不一定是直观的,但你可以把它想象成类似于http方面的东西,以及函数通常提供给路由的方式。
注意,您只是向"io.on"提供了一个函数。你可以这样做。在一个单独的文件中为你的套接字函数创建一个模块…
// File named socket_funcs.js
module.exports.connection = function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
然后在你的app.js文件中你可以这样做…
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
var sf = require('./socket_funcs.js');
server.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', sf.connection);
相关文章:
- TypeScript代码类似于揭示模块模式结构
- 文件结构:使用索引.js文件级联访问子模块或子文件
- 节点模块的可能结构
- 类代码结构,使用非立即执行的模块模式变体
- 如何创建一个结构化为AMD模块的可重用库
- AngularJS:目录结构(例如模块化编程)是否会影响加载时间
- 节点中的JSTOXML转换器模块未以正确的结构解析数据
- Node.js & Express - 应用程序结构的全局模块和最佳实践
- 使用指令对网站的HTML结构进行模块化
- SystemJS-ES6模块加载器-导入时层次结构过多
- 在节点中使用模块导出以获得更好的结构
- node.js中模块化socket.io的体系结构
- requirejs的结构;页面模块”;
- 如何使用javascript::minify模块缩小目录结构中的所有js文件
- 文件结构的最佳实践-使用请求模块(Node.js + Express.js)
- 文件结构:在Node.js中需要子模块
- 初学者对Express和socket.io中的模块结构感到困惑
- 寻求结构解释(揭示模块模式)
- Node.js模块导出函数结构
- 用于复杂应用结构的NodeJS本地模块