Начнем с плохих новостей: поскольку 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 за исправление моих ошибок.)