Что такое node js express

Что такое Node.js

Node.js — это способ запускать JavaScript-код не только в браузере. Приложения, которые чаще всего создаются на этой платформе, можно разделить на две категории:

  • вспомогательные инструменты для клиентских приложений — системы сборки, распространения пакетов, серверы разработки, редакторы кода и системы статического анализа;
  • серверные приложения — начиная от простых API и заканчивая огромными корпоративными программами.

Как пользоваться

Установите Node.js на свой компьютер. Теперь в терминале можно выполнить команду, которая выведет текущую версию платформы и докажет, что все установлено корректно:

Node.js позволяет исполнить любой JavaScript-файл. Создадим демо-файл script.js :

Запустим его в терминале:

Как понять

За выполнение JavaScript в браузере Google Chrome (и других браузерах основанных на Chromium — Edge, Яндекс.Браузер, Opera) отвечает, разработанный в Google, движок V8. В 2009 году Райан Даль, в качестве эксперимента, создал платформу Node.js, которая использует V8 для выполнения JavaScript-кода вне браузера.

В среде Node.js у приложения нет доступа к стандартным браузерным API. Например, document и window недоступны, потому что код исполняется вне браузера. Никаких документов и окон в его контексте не существует.

Абсолютное большинство инструментов для JavaScript-разработки использует Node.js. Многие серверные приложения тоже используют её, в основном при серверном рендеринге клиентских приложений и создании API-гейтвеев.

API-гейтвей — сервис с удобным клиенту API, который сам не выполняет никакой работы, а только вызывает другие сервисы, чтобы получить данные или совершить операцию. Ценность таких сервисов в удобном для клиентского кода API.

Что такое Node.js ' Connect, Express и "middleware"?

Несмотря на то, что я довольно хорошо знаю JavaScript, я не понимаю, что именно делают эти три проекта в экосистеме Node.js. Это что-то вроде Rails’ Rack? Может кто-нибудь объяснить?

8 ответов

У меня есть проблема с node.js+express+jade, которую я не знаю, как решить, я уже искал в google и stackoverflow без решения, поэтому я прошу Вас помочь мне, пожалуйста 🙂 Проблема в том, что все работает, кроме style.css: Failed to load resource: the server responded with a status of 500.

Я недавно начал изучать Node.js и пытаюсь настроить экспресс-установку с less-middleware и хочу использовать файлы Bootstrap 3 less. Я осмотрелся вокруг, но могу найти только учебники для Bootstrap 2. Это мой код до сих пор: /** * Module dependencies. */ var express = require(‘express’); var.

[ Обновление: С момента выпуска 4.0 Express больше не использует Connect. Однако Express по-прежнему совместим с промежуточным программным обеспечением, написанным для Connect. Мой первоначальный ответ приведен ниже.]

Я рад, что вы спросили об этом, потому что это определенно общая точка замешательства для людей, смотрящих на Node.js. Вот мой лучший шанс объяснить это:

сам Node.js предлагает модуль http, метод createServer которого возвращает объект, который можно использовать для ответа на запросы HTTP. Этот объект наследует прототип http.Server .

Connect также предлагает метод createServer , который возвращает объект, наследующий расширенную версию http.Server . Расширения Connect в основном предназначены для облегчения подключения промежуточного программного обеспечения . Вот почему Connect описывает себя как "middleware framework," и часто сравнивается с Ruby Rack.

Express делает для подключения то, что Connect делает с модулем http: Он предлагает метод createServer , который расширяет прототип Server Connect. Таким образом, вся функциональность Connect есть, плюс визуализация представления и удобный DSL для описания маршрутов. Ruby в Sinatra-хорошая аналогия.

Тогда есть другие фреймворки, которые идут еще дальше и расширяют Express! Например , Zappa, которая интегрирует поддержку CoffeeScript, серверную jQuery и тестирование.

Вот конкретный пример того, что подразумевается под "middleware": Из коробки ни один из вышеперечисленных файлов не служит для вас статическими файлами. Но просто добавьте connect.static (промежуточное программное обеспечение, которое поставляется с Connect), настроенное так, чтобы указывать на каталог, и ваш сервер предоставит доступ к файлам в этом каталоге. Обратите внимание, что Express также предоставляет промежуточные программы Connect; express.static — это то же самое, что и connect.static . (До недавнего времени оба были известны как staticProvider .)

У меня сложилось впечатление, что в наши дни большинство приложений "real" Node.js разрабатываются с помощью Express; функции, которые он добавляет, чрезвычайно полезны, и все функции более низкого уровня все еще существуют, если вы этого хотите.

Принятый ответ действительно стар (и теперь неверен). Вот информация (с источником), основанная на текущей версии Connect (3.0) / Express (4.0).

Что Node.js поставляется с

http / https createServer , который просто принимает обратный вызов(req,res), например

Что добавляет connect

Промежуточное программное обеспечение-это в основном любое программное обеспечение, которое находится между кодом вашего приложения и некоторым низкоуровневым API. Connect расширяет функциональность встроенного сервера HTTP и добавляет фреймворк плагинов. Плагины действуют как промежуточное программное обеспечение и, следовательно, connect-это платформа промежуточного программного обеспечения

Способ, которым он это делает, довольно прост ( и на самом деле код действительно короткий! ). Как только вы вызовете var connect = require(‘connect’); var app = connect(); , вы получите функцию app , которая может:

  1. Может обрабатывать запрос и возвращать ответ. Это потому, что вы в основном получаете эту функцию
  2. Имеет функцию-член .use ( источник ) для управления плагинами ( это происходит отсюда из-за этой простой строки кода ).

Из-за 1.) вы можете сделать следующее :

Объедините с 2.) и вы получите:

Connect предоставляет служебную функцию для регистрации в http , чтобы вам не нужно было звонить в http.createServer(app) . Его называют listen , и код просто создает новый сервер http, регистрирует соединение в качестве обратного вызова и пересылает аргументы в http.listen . Из источника

Итак, вы можете сделать:

Это все еще ваш старый добрый http.createServer с фреймворком плагинов сверху.

Что добавляет ExpressJS

ExpressJS и connect-это параллельные проекты. Connect-это просто платформа промежуточного программного обеспечения с хорошей функцией use . Express не зависит от Connect ( см. package.json )., Однако он делает все, что делает connect, т. е.:

  1. Может быть зарегистрирован с помощью createServer , как connect, так как это тоже просто функция, которая может принимать пару req / res ( источник ).
  2. Функция использования для регистрации промежуточного программного обеспечения .
  3. Служебная функция listen для регистрации в http

В дополнение к тому, что предоставляет connect (которые выражают дубликаты), он имеет множество дополнительных функций. например

  1. Имеет поддержку движка просмотра .
  2. Имеет глаголы верхнего уровня (get/post и т. Д.) Для своего маршрутизатора .
  3. Имеет поддержку настроек приложения .

Промежуточное программное обеспечение является общим

Функция use ExpressJS и connect совместимы, и поэтому промежуточное программное обеспечение является общим . Оба являются фреймворками промежуточного программного обеспечения, express просто имеет больше, чем просто фреймворк промежуточного программного обеспечения .

Какой из них вы должны использовать?

Мое мнение: вы достаточно информированы, основываясь на вышеизложенном, чтобы сделать свой собственный выбор.

  • Используйте http.createServer , если вы создаете что-то вроде connect / expressjs с нуля.
  • Используйте connect, если вы создаете промежуточное программное обеспечение, протоколы тестирования и т. Д., Так как это хорошая абстракция поверх http.createServer
  • Используйте ExpressJS, если вы создаете веб-сайты.

Большинство людей должны просто использовать ExpressJS.

Что плохого в принятом ответе

Это могло быть правдой в какой-то момент времени, но сейчас это неправильно:

который наследует расширенную версию http.Server

Неправильный. Он не расширяет его и, как вы видели, . использует его

Express делает для подключения то, что Connect делает с модулем http

Express 4.0 даже не зависит от подключения. см. раздел текущие зависимости package.json

Я использую grunt-contrib-connect , так как он поставляется с генератором angular Йомена . У меня также есть приложение node.js express с видом jade, в котором я хочу ссылаться на .js, .css, .html, но кажется, что grunt-contrib-connect и express не могут использовать один и тот же порт. На мой.

Я хотел бы спросить вас, как использовать url переписывание с mod_rewrite на node.js. Создатели connect-modrewrite подготовили примеры здесь , но, к сожалению, в случае express этот пример недействителен, в нынешней версии метод configure устарел. Стандартный синтаксис таков: var app =.

node.js

Node.js — это двигатель javascript для серверной стороны.
В дополнение ко всем возможностям js, он включает в себя сетевые возможности (например, HTTP) и доступ к файловой системе.
Это отличается от js на стороне клиента, где сетевые задачи монополизированы браузером, а доступ к файловой системе запрещен по соображениям безопасности.

node.js как веб-сервер: экспресс

Что-то, что работает на сервере, понимает HTTP и может получить доступ к файлам, звучит как веб-сервер. Но это не так.
Чтобы node.js вел себя как веб-сервер, его нужно запрограммировать: обрабатывать входящие запросы HTTP и предоставлять соответствующие ответы.
Это то, что делает Express: это реализация веб-сервера в js.
Таким образом, реализация веб-сайта похожа на настройку экспресс-маршрутов и программирование конкретных функций сайта.

Промежуточное программное обеспечение и подключение

Обслуживание страниц включает в себя ряд задач. Многие из этих задач хорошо известны и очень распространены, поэтому модуль подключения узла (один из многих модулей, доступных для запуска в узле) реализует эти задачи.
Смотрите текущее впечатляющее предложение:

  • регистратор запросов регистратор запросов с поддержкой пользовательского формата
  • защита от подделки межсайтовых запросов csrf
  • сжатие Gzip промежуточное программное обеспечение сжатия
  • basicAuth базовая http аутентификация
  • bodyParser расширяемый анализатор тела запроса
  • json приложение/json парсер
  • синтаксический анализатор urlencoded application/x-www-form-urlencoded
  • составной парсер multipart/form-data
  • тайм-аут запроса тайм-аута
  • cookieParser анализатор файлов cookie
  • поддержка управления сеансами в комплекте MemoryStore
  • cookieSession поддержка сеансов на основе файлов cookie
  • поддержка метода methodOverride HTTP
  • responseTime вычисляет время отклика и предоставляет информацию через X-Response-Time
  • уровень кэша памяти staticCache для промежуточного программного обеспечения static()
  • статическая потоковая передача диапазон поддержки статического файлового сервера и многое другое
  • каталог список каталогов промежуточное программное обеспечение
  • промежуточное программное обеспечение для сопоставления поддоменов виртуального хоста vhost
  • favicon эффективный favicon сервер (со значком по умолчанию)
  • лимит ограничение байтового размера тел запросов
  • запрос автоматический анализатор строк запросов, заполняющий req.query
  • errorHandler гибкий обработчик ошибок

Connect-это фреймворк, и с его помощью вы можете выбрать необходимые вам модули.
На странице промежуточного программного обеспечения Contrib перечислен длинный список дополнительных промежуточных программ .
Сам Express поставляется с наиболее распространенными промежуточными программами Connect.

Что делать?

Установите node.js.
Узел поставляется с npm , менеджером пакетов узлов .
Команда npm install -g express загрузит и установит express глобально (проверьте руководство по express ).
Запуск express foo в командной строке (не в узле) создаст приложение ready-to-run с именем foo. Перейдите в его (недавно созданный) каталог и запустите его с узлом с помощью команды node <appname> , затем откройте http://localhost:3000 и посмотрите. Теперь вы в деле.

Connect предлагает "higher level" APIs для общих функций сервера HTTP, таких как управление сеансами, аутентификация, ведение журнала и многое другое. Express построен поверх Connect с расширенной функциональностью (Sinatra like).

сам Node.js предлагает модуль HTTP, метод createServer которого возвращает объект, который можно использовать для ответа на запросы HTTP. Этот объект наследует прототип http.Server .

Соответствующая информация, особенно если вы используете NTVS для работы с Visual Studio IDE. NTVS добавляет как NodeJS, так и экспресс-инструменты, строительные леса, шаблоны проектов в Visual Studio 2012, 2013.

Кроме того, выражение, которое вызывает ExpressJS или подключается как "WebServer", неверно. Вы можете создать базовый WebServer с ними или без них. Базовая программа NodeJS также может использовать модуль http для обработки запросов http, таким образом становясь рудиментарным веб-сервером.

промежуточное программное обеспечение, как следует из названия, на самом деле промежуточное программное обеспечение находится между серединой.. о чем? середина запроса и ответа.. как запрос,ответ, экспресс-сервер сидят в экспресс-приложении на этом рисунке вы можете видеть, что запросы поступают от клиента, а затем сервер экспресс-сервера обслуживает эти запросы.. тогда давайте копнем глубже.. на самом деле мы можем разделить всю задачу этого экспресс-сервера на небольшие отдельные задачи, например, таким образом. как промежуточное программное обеспечение сидит между запросом и ответом небольшой кусок серверных частей, выполняющих какую-то конкретную задачу, и передал запрос следующему . наконец, выполнив все задачи, ответ был сделан.. все средние изделия могут получить доступ к объекту запроса, объекту ответа и следующей функции цикла ответа запроса..

это хороший пример для объяснения промежуточного программного обеспечения в express youtube video for middleware

Глупый простой ответ

Connect и Express-это веб-серверы для nodejs. В отличие от Apache и IIS, они оба могут использовать одни и те же модули, называемые "middleware".

Похожие вопросы:

Я в замешательстве. Главный вопрос, который у меня есть, заключается в том, когда использовать чистый node.js, когда я должен использовать фреймворк/MVC, такой как express или connect. Я знаю, что.

Этот вопрос расширяет вопрос о том, что такое Node.js’ Connect, Express и middleware? Я иду по пути изучения Javascript — > Node.js — > Connect — > Express — > . чтобы узнать об использовании.

я создаю приложение, используя nodejs (0.8.15), express (>3.0) framework, socket.io и mongodb для регистрации пользователей. 1) Все знают, что легко создать простой чат, используя только socket.io.

У меня есть проблема с node.js+express+jade, которую я не знаю, как решить, я уже искал в google и stackoverflow без решения, поэтому я прошу Вас помочь мне, пожалуйста 🙂 Проблема в том, что все.

Я недавно начал изучать Node.js и пытаюсь настроить экспресс-установку с less-middleware и хочу использовать файлы Bootstrap 3 less. Я осмотрелся вокруг, но могу найти только учебники для Bootstrap.

Я использую grunt-contrib-connect , так как он поставляется с генератором angular Йомена . У меня также есть приложение node.js express с видом jade, в котором я хочу ссылаться на .js, .css, .html.

Я хотел бы спросить вас, как использовать url переписывание с mod_rewrite на node.js. Создатели connect-modrewrite подготовили примеры здесь , но, к сожалению, в случае express этот пример.

Я сделал npm install connect , но Error: Cannot find module ‘connect/middleware/session/memory’ не исчез в выводе. Какой пакет я не установил? windows 7 C:\Users\guo\Desktop\js8_chat\chat>node -v.

Веб-фреймворк Express (Node.js/JavaScript)

Express представляет собой популярный веб-фреймворк, написанный на JavaScript и работающий внутри среды исполнения node.js. Этот модуль освещает некоторые ключевые преимущества этого фреймворка, установку среды разработки и выполнение основных задач веб-разработки и развёртывания.

Предварительные требования

Перед началом этого модуля вам необходимо представлять, что из себя представляет серверное программирование и веб-фреймворки, желательно из прочтения статей другого модуля Server-side website programming first steps. Знакомство с основными концепциями программирования и языком программирования JavaScript будет очень полезным, но оно не является обязательным для понимания базовых понятий этого модуля.

Примечание: Этот веб-сайт содержит множество источников для изучения JavaScript в контексте разработки на стороне клиента: JavaScript, JavaScript Guide, JavaScript Basics, JavaScript (изучение). Ключевые особенности и концепции языка JavaScript остаются сходными и для серверной разработки на Node.js и используемый материал достаточно релевантен. Node.js предоставляет additional APIs для обеспечения функциональности, которая полезна для "безбраузерной" разработки, т.е. для создания HTTP-сервера и доступа к файловой системе, но не поддерживает JavaScript APIs для работы с браузером и DOM.

Это руководство обеспечит вас некоторой информацией о работе с Node.js и Express, но также существуют и другие многочисленные отличные ресурсы в Интернете и книгах — некоторые из них доступны из тем How do I get started with Node.js (StackOverflow) и What are the best resources for learning Node.js? (Quora).

Руководства

Смотрите также

Изучите другие учебники

Это все статьи учебника (на данный момент). Если вы хотите продолжить обучение, есть другие интересные темы:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *