- PVSM.RU - https://www.pvsm.ru -

Не так давно, а именно 2011-10-05 вышла новая версия фреймворка connect 2.0. На хабре был замечен пробел, а тут выдалось пару свободных часов. Буду писать сразу про версию 2.0.1 вышедшую 29 февраля. Во второй версии сделали много очень нужных и долгожданных изменений.
Прошу все ошибки писать в ПМ, думаю их тут будет много, за что заранее приношу свои извинения.
Ранее connect.Server был унаследован от net.Server из ядра NodeJS, это вызывало неудобства для создания одновременно HTTP и HTTPS приложения. В результате connect() (ранее connect.createServer()) стал новой функцией более универсальной. Это означает, что вы можете пропустить вызов app.listen(), а просто использвать в приложениях net.Server из NodeJS, пример:
var connect = require('connect'), http = require('http'), https = require('https'); tlsOptions = { key: fs.readFileSync('keys/key.pem'), cert: fs.readFileSync('keys/cert.pem') }; var app = connect() .use(function(req, res) { res.end('hello habrahabrn'); }) http.createServer(app).listen(80); https.createServer(tlsOptions, app).listen(443);
В дополнение bodyParser() добавлены новые функции обработки входящих запросов: json() для запросов application/json, multipart() для запросов multipart/form-data, и urlencoded() для запросов application/x-www-form-urlencoded. Все они представляют новые возможности доступа к передаваемым данным в запросах для req.body, а функция multipart() предоставляет доступ к передаваемым параметрам не только в req.body, но и req.files к загружаемым файлам.
Подключать пасеры можно по отдельности:
app.use(connect.json()); app.use(connect.urlencoded()); app.use(connect.multipart());
это будет равносильно записи:
app.use(connect.bodyParser());
С версии Node 0.6.0 стало доступно нативное использование сжатия (zlib.createGzip и zlib.createDeflate), поэтому в connect было добавлено дополнение compress() для их поддержки. Дополнение имеет параметры настройки сжатия [1] передаваемые в нативные функции.
Для дополнения cookieParser() теперь доступны подписи. Раньше надо было использовать session({ secret: string }) и само дополнение session(). Теперь можно работать с подписанными cookies и своими сессиями через свойство req.signedCookies, а так же для работы с не подписанными через свойство req.cookies.
connect() .use(connect.cookieParser('keyboard cat')) .use(function(req, res, next){ res.end(JSON.stringify(req.cookies)); })
Ранее работа с ошибками была проблемой. Все ошибки перехватывались errorHandler() в самом connect() и выдавались стандартными страницами. Теперь появилась возможность переопределять обработчик ошибок, при этом так же используя next(err) в своём коде.
app.use(function(err, req, res, next){ if (4 == err.status / 100) { // render a client-error page } else { // render a server-error page } });
Как уже упоминалось session() больше не требуют secret. Для cookie свойство .maxAge по умолчанию было null, а это значило, что все установленные cookie удалялись при закрытии браузера.
Все дополнения к connect() должны остаться работоспособными. Это всё не совместимо с express 2.0, ожидайте выхода express 3.0!
Были внесены описанные существенные изменения, а также несколько других, которые не влияют на API. Все тестирования проводились с помощью Mocha.
2.0.1 / 2012-02-29
2.0.0 / 2011-10-05
Теперь ждём express 3!
Источники и ссылки:
Запись из блога TJ Holowaychuk [2]
Страница Connect [3]
Github connect [4]
Автор: InteractiveTechnology
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nodejs/2796
Ссылки в тексте:
[1] параметры настройки сжатия: http://nodejs.org/docs/latest/api/all.html#options
[2] Запись из блога TJ Holowaychuk: http://tjholowaychuk.com/post/18418627138/connect-2-0
[3] Страница Connect: http://www.senchalabs.org/connect/
[4] Github connect: https://github.com/senchalabs/connect
Нажмите здесь для печати.