Мне было интересно, как можно разработать веб-сайт с нуля с помощью Node.js. Я понимаю , как я мог бы , возможно , сделать это, но я заинтересован в лучшей практике проектирования.
Мне нужен этот теоретический сайт, чтобы:
- Много используйте AJAX
- Будьте очень откровенны
- Быть относительно маленьким
- Подключитесь к ... скажем, серверу MySQL
В PHP создание довольно небольшого веб-сайта было очень простым - я установил PHP на Apache и сервер MySQL, а затем сделал что-то вроде:
includes/db/
в котором есть connect.php для подключения к базе данных, файл с общими функциями, связанными с базой данных, и т. д.includes/layout/
в котором были такие вещи, как footer.php, header.php и другие вещи, связанные с макетомincludes/users/
для обработки действий, связанных с пользователем
Затем PHP просто позволяет вам создавать страницы и включать эти файлы вместе для создания веб-сайта - я мог бы сделать что-то вроде:
<?php
require_once('inclues/users/user_session.php');
require_once('inclues/db/connect.php');
require_once('inclues/design/header.php')
?>
// Other php or html or related content relating to the page
<?php
require_once('inclues/.../footer.php');
?>
Мне было интересно, что могло бы быть похожим в Node.js - я ищу способ сделать это как можно более простым , быстрым и понятным .
Если ответ непростой, я бы хотел порекомендовать книгу, я не против чтения.
Мне нравится программирование на основе событий, мне очень нравятся возможности JavaScript, и мне очень нравится Node.js. Я хочу научиться правильно развивать подобные вещи с самого начала.
источник
Ответы:
Начнем с плохих новостей: поскольку 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 за исправление моих ошибок.)
источник