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