Начнем с плохих новостей: поскольку Node.js - довольно молодая технология, я думаю, вы обнаружите, что процесс создания полноценного веб-сайта и его поддержки / эксплуатации будет сильно отличаться от того, к чему вы привыкли в настоящее время.
Джош3736 добавляет: « Как только вы выясните, как работают Node.js и его различные пакеты (Connect, Express), я обнаружил, что вы можете очень быстро разрабатывать новые сайты.
Неровности, которые в настоящее время существуют в Node.js, в сочетании с быстрыми темпами его разработки и всеми задействованными модулями могут все же усложнить ситуацию и сделать вещи менее простыми, быстрыми и понятными, чем хотелось бы.
Имея это в виду, вот хорошие новости:
Node Package Manager, NPM имеет много хороших инструменты и механизмы для расширения функциональных возможностей голых костей Node.js, что делает его пригодным для создания вебов - сервера.
В первую очередь это Express Framework. который содержит почти все, что вам нужно для запуска веб-сервера (включая файлы cookie, сеансы и маршрутизацию пути). Вдобавок Express поддерживает партиалы, которые заботятся о вашем верхнем и нижнем колонтитулах.
Express построен на основе Sencha Connect . Файлы cookie и сеансы фактически поддерживаются Connect. Express - это то, что упрощает вашу маршрутизацию и обрабатывает представления / частичные данные. Поэтому, если вам не нужны все навороты, которые поставляются с Express, вы можете вместо этого просто перейти на Connect.
Если вам нравится использовать шаблоны для этих частичных файлов, Jade Template Engine может ускорить процесс. Хотя Джош3736 указывает на то, что Джейд медлителен и имеет большое количество пробелов. Более полный обзор можно найти здесь , в том числе его любимого, doT . (Я лично использую Node.js только для базовых socket.io
приложений, поэтому он лучший источник, чем я, когда дело доходит до создания шаблонов).
Вы можете подключиться к MySQL из Node.js с помощью модуля db-mysql , но если вам это не нужно, потому что вы обращаетесь к данным, подключенным к уже существующей системе, я бы посоветовал использовать более ... ', который заключается в использовании базы данных NoSQL, как, похоже, делает большинство проектов Node.js. MongoDB через Mongoose - популярный способ.
Или, если он просто хранит объекты, которые вас интересуют, просто перейдите на Redis (который, вероятно, вам в какой-то момент понадобится).
Когда ваш сайт будет готов, вам нужно будет развернуть его и убедиться, что он продолжает работать. Есть много способов сделать это, например, использовать встроенную поддержку кластера или использовать более удобный forever
модуль npm. См. Этот мой вопрос SO для получения дополнительной информации.
Вывод :
Я пытаюсь понять следующее:
Спросить, как лучше всего создать веб-сайт на Node.js, - это примерно то же самое, что спросить, какой лучший способ создать веб-сайт на PHP: 100 разработчиков дадут вам 100 разных ответов.
NPM наделен множеством отличных фреймворков, которые значительно упрощают множество задач, но все зависит от предпочтений, какой из них действительно подходит.
Как я уже сказал, Node.js - все еще довольно молодая техника, поэтому ни один из фреймворков или дополнительных инструментов еще не стал «стандартом де-факто»; для большинства вещей, которые вы пытаетесь сделать, вероятно, существуют различные альтернативы, и вы можете ожидать, что ваш код сломается при использовании большинства из них во время обновлений, потому что разработка самого Node.js и большинства модулей идет быстро. Вам придется не отставать.
Собираем все вместе :
Как я уже сказал, мое основное производственное использование Node.js - это возможность его использовать socket.io
, поэтому у меня нет хороших производственных примеров (и, поскольку я собираюсь уехать в заслуженный отпуск, я не У меня тоже есть время собрать одну). Однако есть несколько хороших примеров:
Опять же, путь (а затем и пример для подражания) во многом зависит от ваших конечных целей и выбранных методов, но, к счастью, есть много ресурсов, доступных для всех доступных вариантов. Большинство модулей используют хорошо документированные репозитории GitHub и включают примеры в сочетании с наиболее популярными модулями (см. /examples/
Каталог, который, по-видимому, присутствует в большинстве репозиториев).
Удачи! (И спасибо Josh3736 за исправление моих ошибок.)