Незважаючи на те, що я дуже добре знаю JavaScript, я збентежений, що саме роблять ці три проекти в екосистемі Node.js. Це щось на зразок стійки Rails '? Може хтось, будь ласка, пояснить?
Незважаючи на те, що я дуже добре знаю JavaScript, я збентежений, що саме роблять ці три проекти в екосистемі Node.js. Це щось на зразок стійки Rails '? Може хтось, будь ласка, пояснить?
Відповіді:
[ Оновлення: Починаючи з версії 4.0, Express більше не використовує Connect. Однак Express все ще сумісний із середнім програмним забезпеченням, написаним для Connect. Моя оригінальна відповідь нижче.]
Я радий, що ви запитали про це, адже це, безумовно, загальна проблема плутанини для людей, які дивляться на Node.js. Ось мій найкращий випадок пояснення цього:
Сам Node.js пропонує модуль http , createServer
метод якого повертає об'єкт, який ви можете використовувати для відповіді на HTTP-запити. Цей об'єкт успадковує http.Server
прототип.
Connect також пропонує createServer
метод, який повертає об'єкт, який успадковує розширену версію http.Server
. Розширення Connect в основному є, щоб полегшити підключення програмного забезпечення . Ось чому Connect описує себе як "проміжне програмне забезпечення" і часто аналогізується стійці Ruby's.
Express робить для підключення те, що Connect робить для модуля http: він пропонує createServer
метод, який розширює Server
прототип Connect . Таким чином, вся функціональність Connect є, плюс візуалізація перегляду та зручний DSL для опису маршрутів. Синатра Рубі - хороша аналогія.
Потім є інші рамки, які йдуть ще далі і розширюють Express! Наприклад, Zappa , який інтегрує підтримку CoffeeScript, jQuery на стороні сервера та тестування.
Ось конкретний приклад того, що означає "проміжне програмне забезпечення": Поза жодним із перерахованих вище статичні файли для вас не подаються. Але просто закиньте connect.static
(проміжне програмне забезпечення, яке постачається з Connect), налаштоване так, щоб вказати на каталог, і ваш сервер забезпечить доступ до файлів у цьому каталозі. Зауважте, що Express надає також середні засоби Connect; express.static
те саме, що connect.static
. (Обидва були відомі як staticProvider
до недавнього часу.)
Моє враження, що більшість «справжніх» додатків Node.js розробляються разом із Express; функції, які він додає, надзвичайно корисні, і всі функціональні можливості нижчого рівня все ще є, якщо ви цього хочете.
Прийнята відповідь справді стара (а тепер неправильна). Ось інформація (з джерелом) на основі поточної версії Connect (3.0) / Express (4.0).
http / https, createServer
який просто приймає зворотний дзвінок (req, res), наприклад
var server = http.createServer(function (request, response) {
// respond
response.write('hello client!');
response.end();
});
server.listen(3000);
Посереднє програмне забезпечення - це в основному будь-яке програмне забезпечення, яке знаходиться між вашим кодом програми та API низького рівня. Connect розширює вбудований функціонал сервера HTTP та додає модуль плагінів. Плагіни виступають як проміжне програмне забезпечення, а значить, з'єднання - це середовище середнього програмного забезпечення
Як це зробити, це досить просто ( а насправді код справді короткий! ). Як тільки ви телефонуєте, var connect = require('connect'); var app = connect();
ви отримуєте функцію, app
яка може:
.use
( джерело ) для управління плагінами ( що походить звідси через цей простий рядок коду ).Через 1.) ви можете зробити наступне:
var app = connect();
// Register with http
http.createServer(app)
.listen(3000);
Поєднайте з 2.) і отримаєте:
var connect = require('connect');
// Create a connect dispatcher
var app = connect()
// register a middleware
.use(function (req, res, next) { next(); });
// Register with http
http.createServer(app)
.listen(3000);
Connect надає функцію утиліти, щоб зареєструватися, http
щоб не потрібно телефонувати http.createServer(app)
. Його виклик listen
і код просто створює новий http-сервер, реєструє з'єднання як зворотний виклик і передає аргументи на http.listen
. З джерела
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
Отже, ви можете:
var connect = require('connect');
// Create a connect dispatcher and register with http
var app = connect()
.listen(3000);
console.log('server running on port 3000');
Це все-таки ваша стара старенька http.createServer
з плагіновою рамкою зверху.
ExpressJS і connect - це паралельні проекти. Connect - це лише проміжне програмне забезпечення з приємною use
функцією. Експрес не залежить від Connect ( див. Package.json ). Однак він робить все, що з'єднує, тобто:
createServer
як підключити, оскільки це теж лише функція, яка може приймати req
/ res
пару ( джерело ).listen
для реєстрації себе за допомогою httpОкрім того, що надає connect (який виражає дублікати), він має ще багато функцій. напр
use
Функція ExpressJS і підключення поєднає і тому проміжний шар розділяє . Обидва є рамками середнього програмного забезпечення, Express просто має більше, ніж просту рамку проміжного програмного забезпечення .
Моя думка: ви достатньо поінформовані ^ на підставі вище ^, щоб зробити власний вибір.
http.createServer
якщо ви створюєте щось на кшталт connect / expressjs з нуля.http.createServer
Більшість людей повинні просто використовувати ExpressJS.
Це могло бути правдою як певний час, але зараз неправильно:
що успадковує розширену версію http.Server
Неправильно. Він не розширює його, і як ви вже бачили ... використовує його
Експрес робить для підключення того, що Connect робить для модуля http
Express 4.0 навіть не залежить від підключення. дивіться поточний розділ залежностей package.json
Node.js - двигун javascript для серверної сторони.
Окрім усіх можливостей js, вона включає можливості мереж (наприклад, HTTP) та доступ до файлової системи.
Це відрізняється від клієнтських js, коли завдання мереж монополізуються браузером, а доступ до файлової системи заборонений з міркувань безпеки.
Щось, що працює на сервері, розуміє HTTP і може отримати доступ до файлів, схоже на веб-сервер. Але це не одна.
Щоб node.js поводився як веб-сервер, його потрібно запрограмувати: обробляти вхідні запити HTTP та надавати відповіді.
Ось що робить Express: це реалізація веб-сервера в js.
Таким чином, реалізація веб-сайту подібна до налаштування маршрутів Express та програмування специфічних особливостей сайту.
Обслуговування сторінок передбачає ряд завдань. Багато з цих завдань добре відомі та дуже поширені, тому модуль Connect вузла (один із багатьох модулів, доступних для роботи під вузлом) реалізує ці завдання.
Дивіться поточну вражаючу пропозицію:
Connect - це фреймворк, і за допомогою нього ви можете вибрати потрібні (під) модулі.
Сторінка Contrib Middleware перераховує довгий список додаткових середніх програм .
Експрес сам постачається з найпоширенішими середніми мережами Connect.
Встановити node.js.
Вузол постачається з npm , менеджером пакетів вузлів .
Команда npm install -g express
завантажить та встановить експрес у всьому світі (перевірте експрес-посібник ).
Запуск express foo
у командному рядку (не у вузлі) створить готову до запуску програму з назвою foo. Перейдіть до його (щойно створеного) каталогу та запустіть його з вузлом командою node <appname>
, а потім відкрийте http://localhost:3000
та побачите. Тепер ви в.
Node.js
сам пропонує модуль HTTP, метод createServer повертає об'єкт, який ви можете використовувати для відповіді на HTTP-запити. Цей об'єкт успадковує http.Server
прототип.
Пов’язана інформація, особливо якщо ви використовуєте NTVS для роботи з Visual Studio IDE. NTVS додає інструменти NodeJS та Express, ліси, шаблони проектів у Visual Studio 2012, 2013.
Також дієслівне слово, яке називає ExpressJS або Connect як "WebServer", невірно. Ви можете створити базовий WebServer з ними або без них. Основна програма NodeJS також може використовувати модуль http для обробки запитів http, ставши тим самим рудиментарним веб-сервером.
проміжне програмне забезпечення, як випливає з назви, насправді середнє програмне забезпечення сидіти між серединою .. середина чого? середина запиту та відповіді .. як запит, відповідь, експрес-сервер сидять у експрес-додатку на цьому малюнку, ви можете бачити, що запити надходять від клієнта, тоді сервер експрес-сервера обслуговує ці запити .. потім дозволяє копати глибше .. насправді ми можемо розділити це ціле завдання експрес-сервера в невеликих окремих завданнях, як-от таким чином. як проміжне програмне забезпечення сидить між запитом і відповіддю невеликим шматом частин сервера, які виконують якусь конкретну задачу, і передають запит наступному .. нарешті, виконуючи всі завдання, відповідь зроблена .. весь середній інвентар може отримати доступ до об'єкта запиту, об'єкта відповіді та наступної функції запиту цикл реагування ..
це хороший приклад для пояснення проміжного програмного забезпечення в експрес- відео на YouTube для середнього програмного забезпечення
Connect і Express - це веб-сервери для nodejs. На відміну від Apache та IIS, вони можуть обидва використовувати однакові модулі, які називаються "середніми".