javascript - Express.js (node.js) 中的 require 和导出混淆

标签 javascript node.js express

我想让我的 socket.io 连接模块化,使其运行一次,即使我随时随地需要它。如何导出?

var server = require("http").Server(express);  
var io = require("socket.io")(server);
server.listen(5000);
io.on('connection', function(client) {
  client.on('order_'+userId, function(data) {
      io.emit('order_'+userId,data); // emit to cilent of dashboard
  });
});

所需的工作原理是什么?我看到不同的模式,例如

var moment = require('moment');

或者某个时候

var LocalStorage = require('node-localstorage').LocalStorage;

就我而言,我不需要将其分配给任何变量,并希望它即时执行。可能吗?

最佳答案

require() 返回模块导出的内容。它可以是对象函数,甚至可以是字符串数字。但它通常是 Objectfunction 。例如,var server = require('http') 返回一个 Object,它有一个 Server() 方法(您在代码示例的第一行)。这实际上取决于包的作者。

你的代码对我来说似乎没问题。 socket.io 被分配给一个变量,因为这是您稍后引用它的方式。 io.on('connection', ...) 实际上只被调用一次。这将等待连接,每次发生连接事件时,都会调用 function(client) {...} 。此实现不存在重大性能问题。

关于javascript - Express.js (node.js) 中的 require 和导出混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079424/

相关文章:

javascript - .toggle() 问题与 jquery

javascript - 获取 2 位 float 未按预期工作

javascript - 在遍历对象 HTMLDivElement 时,应用 ChildNode 样式的 zindex 在 firefox 和 chrome 中给出未定义?

node.js - Salesforce Oauth重定向CORS问题 Node express 应用程序

javascript - Node 错误 : EMFILE

node.js - 使用nodejs中的另一个模型数据填充表单中的下拉列表

javascript - 如何使用图形 API 仅从用户的 Facebook 新闻源中获取照片?

node.js - 使用express,mongodb作为服务器数据库的 Node js中的用户管理

node.js - LevelDOWN : NODE_MODULE_VERSION error when testing, 但未运行

mysql - 如何使用 mysql 和 knex js (Node js) 插入存储在数组中的多个 JSON 记录?