Javascript 对于Node.js,是否可以将繁琐的连接和请求事件侦听器放在单独的模块中?

Javascript 对于Node.js,是否可以将繁琐的连接和请求事件侦听器放在单独的模块中?,javascript,node.js,events,node-modules,tedious,Javascript,Node.js,Events,Node Modules,Tedious,这是我在这里的第一个问题,所以请原谅礼仪上的任何异常 一般来说,我对Node.js和后端编程都是新手。 现在,我正在使用Node和Thready连接到本地SQL server。我希望保持main.js文件干净,因此我尝试将与SQL连接相关的所有内容放在一个单独的js文件中。下面是我main.js的最简单的表单 var http = require('http'); var sqlmodule = require('./SQLconnection'); http.createServer(func

这是我在这里的第一个问题,所以请原谅礼仪上的任何异常

一般来说,我对Node.js和后端编程都是新手。 现在,我正在使用Node和Thready连接到本地SQL server。我希望保持main.js文件干净,因此我尝试将与SQL连接相关的所有内容放在一个单独的js文件中。下面是我main.js的最简单的表单

var http = require('http');
var sqlmodule = require('./SQLconnection');
http.createServer(function (req, res) {
  sqlmodule.makeConnection();
}).listen(8080);
然后我有了SQLconnection.js文件

var Connection = require('tedious').Connection;
exports.makeConnection = function () {
  var config = {
      userName: 'XXXXXX',
      password: 'XXXXXX',
      server: 'XXXXXX'
  };
  var connection = new Connection(config);
};

//The below code is my event listener but I don't know how 
//to incorporate it as part of the module.
connection.on('connect', function(err) {
  if (err) {
     console.error('Connection error', err);
  } else {
     console.log('Connected');
  }
});
当侦听器不在文件中时,我没有问题,但我找不到将其作为SQLconnection.js模块的一部分的方法。我尝试过在它之前添加导出和module.exports,但没有成功。听一个事件而不是一个正常的功能让我很困惑

如何在单独的文件中获取事件侦听器? 我还试图尽可能简单地完成这项工作,所以我现在只使用Node.js,而且很乏味

变化

exports.makeConnection = function () {

作为另一个更改,您需要将连接侦听器作为连接变量放在sames范围中。就个人而言,我也会让makeConnection返回一个连接承诺,这样您就不会在一个失败/尚未连接的连接上操作。差不多

var Connection=require(‘冗长’)。连接

function makeConnection() {
  var config = {
      userName: 'XXXXXX',
      password: 'XXXXXX',
      server: 'XXXXXX'
  };
  return new Promise((resolve, reject) => {
    var connection = new Connection(config);

    connection.on('connect', function(err) {
      if (err) return reject(err);
      resolve(connection);
    });
  }
};
module.exports = {makeConnection}

为了澄清,如果我有多个函数(比如一个用于连接,另一个用于请求),我会在每个函数的底部有一个module.exports={functionName}行吗?不,您只导出一个对象。只需将每个函数添加到导出的对象中。ex module.exports={makeConnection,disconnect,dosomethingelse}
function makeConnection() {
  var config = {
      userName: 'XXXXXX',
      password: 'XXXXXX',
      server: 'XXXXXX'
  };
  return new Promise((resolve, reject) => {
    var connection = new Connection(config);

    connection.on('connect', function(err) {
      if (err) return reject(err);
      resolve(connection);
    });
  }
};
module.exports = {makeConnection}