Чи існує можливість розширювати Express.js на льоту?
Розробники WordPress кажуть, що WordPress стала такою популярною через можливість добре розширюватись, зокрема через свої хуки.
Що таке хуки у WordPress з технічної точки зору? — Робочий потік обробки HTTP-запиту у WordPress розбитий на певні етапи, кожен із яких має свою назву. Якщо ми хочемо написати хук, який спрацьовує під час ініціалізації запиту, то створюємо новий файл у «wp-content/plugins» і пишемо приблизно так:
<?php function callback_name() { echo 'Це мій плагін'; } // Реєстрація хука add_action('init', 'callback_name');
А у ядрі WordPress є такий код:
<?php function init() { echo 'Тут WordPress виконує свою "by default"-функціональність, і запускає хуки (код цієї функції розробники плагінів не чіпають)'; do_action('init'); }
Таким чином, із хуків формують плагіни WordPress, підключають їх з адмінки.
Просто й зрозуміло. Тобто, не переписуючи ядро WordPress, завдяки хукам цю CMS можна переписати під бажану функціональність.
В контексті традиційних Node.js-фреймворків, таких як Express.js, так само просто розширити функціональність «на льоту» не вдасться, бо у таких фреймворках статично прописані middleware.
Припустимо, ми теж спробуємо вклинити хук в робочий потік:
const express = require('express'); const app = express(); const runHook = require('hooks').runHook; // Тут runHook - це колбек app.get('/', runHook ,function (req, res) { res.send('Hello World!'); }); app.listen(3000);
В Express ми не можемо додавати хуки без перезапуску процеса. В PHP така схема працює, бо «перезапуск процеса» відбувається при кожному запиту.
Ніхто не підкаже, існує все-таки можливість вклинювати хуки без перезапуску Node.js-процеса?
21 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів