从ES5过渡事件处理程序需要模式到ES6类/导出模式?

时间:2018-01-21 23:39:36

标签: node.js events javascript-events ecmascript-6

我目前有两个机器人使用一堆事件处理程序(来自api和自定义),我将它们包含在一个带有require的索引文件中:

bot.js:

const Bot = require('telegram-api');
import Emitter from './Emitter';
const bot = new Bot();

Emitter.on('bot_say', (chatId, message) => {
  bot.sendMessage(chatId, message, { parse_mode: 'Markdown' })
    .catch(error => console.error(error));
});

bot.on('message', message => {
  bot.sendMessage(chatId, 'hello', { parse_mode: 'Markdown' })
    .catch(error => console.error(error));

Emitter.js:

const EventEmitter = require('events');

const Emitter = new EventEmitter();

export default Emitter;

指数:

require('./bot');

我想将其更改为es6样式导出/导入,以便我可以执行类似

的操作
export default Bot;

import Bot from './bot';

并让事件处理程序运行。我似乎无法让它正常工作,我得到的最接近的是在构造函数中定义它们,如

class Bot {
  constructor(){
    super();
    this.on('bot_say', (chatId, message) => {
      bot.sendMessage(chatId, message, { parse_mode: 'Markdown' })
        .catch(error => console.error(error));
    }
  }
}

看起来很乱。

最好的方法是什么?

0 个答案:

没有答案