Size: a a a

Node.js — русскоговорящее сообщество

2020 December 20

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Которую вы вызываете с чем душе угодно
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Ну постоянно же такое встречается
const mysuperapp = require("superpuperpackage")(config)
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
В https.createServer передаёте же функцию и совесть не мучает
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Вот точно также и тут будет работать
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
The Fallen Phoenix
require может вернуть функции
Ну это да, но у меня есть доступ у нужному объекту внутри вложенной функции внутри require, как возможно вернуть что-то глобально из require из каких-то вложенных функций
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Unknown T.
Ну это да, но у меня есть доступ у нужному объекту внутри вложенной функции внутри require, как возможно вернуть что-то глобально из require из каких-то вложенных функций
Очень просто

var stolenStuff = []
function steal(thing) {
 stolenStuff.push(thing)
}
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
The Fallen Phoenix
Очень просто

var stolenStuff = []
function steal(thing) {
 stolenStuff.push(thing)
}
Это там где надо получиь, steal передать туда откуда нужно и вызвать на чем нужно
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
В JavaScript лексический контекст, если что.
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
The Fallen Phoenix
Очень просто

var stolenStuff = []
function steal(thing) {
 stolenStuff.push(thing)
}
Можете ещё в массив складывать функции, и вызвать их внутри steal, EventEmitter изобретете
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
Ух, надо это познать и попробовать
Основной пакет:
const plugin = require(config.plugins[0]);
plugin.main(thing);
Плагин:
function main(thing) {
   // steal ??
}
Тестовое окружение, в котором нужна thing:
let config = { plugins: [‘./plug-in.js’]}
let thing = require(‘main-packet’)(config) //??
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Плагин

module.export = function (config, handler, whatever) {
 return ...plugin
}
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Только не говорите что вы про экспорт не знали)
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
Либо лыжи, либо сани не едут что-то
Можно на том примере, что я написал? Ну экспортирует плагин функцию, что это даёт
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Ща, с компа наберу.
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
Я тоже сейчас minimal case соберу
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
// main.js
module.exports = function (config) {
   const thing = .... // created

   const plugin = require(config.plugins[0]);
   plugin.main(thing);
   ...
   return thing
}

// plugin.js
function main (thing) {
   thing = thing
   if (cb) cb(thing)
   ...
}
var cb = null
var thing = null
function hook  (callback) {
   if (thing !== null) {
      callback(thing)
   } else {
      cb =  callback
   }
}
module.exports = { main, hook }
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Из тестового окружения вызываете hook с функцией которая получит thing как только так сразу
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Я приведу пример покруче
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
// file 1
const { EventEmitter } = require("events")
const bus = module.exports = new EventEmitter();

var i = 0;

setInterval(function() {
   bus.emit("second", { time: i++ });
}, 1000);


// file 2
const bus = require('file1.js');
bus.on("second", function(data) {
 // data is  { time: i++ }
});
bus.on("message", function(text) {
 // text is  "Hi there"
});


// file 3
const bus = require('file1.js');
bus.emit("message", "Hi there")
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
Я тут, если что, пытаюсь в этом всём разобраться :)
источник