Комментарии 12
Вы, надеюсь, в курсе, что Standard JS — это просто кликбейтовое название стиля, а не стандартный кодстайл, как можно было бы логически предположить.
При этом самый популярный кодстайл — это AirBnb.
Учитывая качество инструментов, созданных компанией Sindre Sorhus
Вообще-то, вроде бы это всего лишь один человек: blog.sindresorhus.com/about-sindre-sorhus-42786d2e191b
Как-то мало, рассчитывал что тут инструментов 50 будет. Надеюсь, будет статья про хотя бы 20 фреймворков и библиотек
Пакет pify представляет собой средство для преобразования функций, применяющих коллбэки, к промисам.
Посмотрел примеры в документации понравилось. Полез в код — не понравилось. Я думал там proxy. А там:
for (const key in obj) { // eslint-disable-line guard-for-in
const x = obj[key];
ret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x;
}
Т.е. писать как написано в документации (pify(fs).readFile('package.json', 'utf8').then
) не стоит. Она каждый запуск будет делать много лишней работы.
Впрочем точно такой же, но невесомый, API можно сделать при помощи Proxy.
И в ней прокси очень неоптимизированы
Да всё что угодно будет быстрее, того кода выше, который делает обёртку для каждого метода на всякий случай. В моих проектах вопрос старых nodejs не стоит, и я пожалуй напишу себе обёртку на proxy. Удобно, аккуратно. Да и касательно производительности, мне кажется, что там, где вы будете применять все эти promisify примитивы, пенальти на proxy будут столь несущественным, что нет смысла о нём даже упоминать ;)
И зачем на каждый вызов оборачивать объект, если его можно закешировать.
Ну чаще всего это просто неудобно. И в ряде случаев просто невозможно (для тех объектов, что получены динамически). А если вопрос удобства отпадает — то зачем вообще эта библиотека нужна? Ведь есть же utils.promisify
. Весь "вкус" именно в том, что ты просто пишешь где надо, без лишних require
, import
, кешей и пр. мути. Впрочем, я не навязываю своё мнение.
Во-первых, есть pull-request https://github.com/sindresorhus/pify/pull/32, но не особо активный.
Во-вторых, не так уж много оверхеда от лишних преобразований. Использование Proxy вполне может оказаться экономией на спичках, особенно если используется больше одного метода
const pify = require('pify');
const fs = pify(require('fs'));
fs.readFile();
fs.writeFile();
async/await начал становиться стандартом де-факто в области параллельного программирования на JavaScript
может все-таки асинхронного программирования?
[в закладки] Инструменты JS-разработчика, на которые стоит обратить внимание