Искусство Node Js (часть 2)

Прежде всего, прежде чем вы начнете читать это, если вы еще не читали часть 1, обязательно ознакомьтесь с ней здесь.

Во второй части этого блога мы собираемся осветить наиболее интересную часть семинара Node JS, проведенного в Саторипопе несколько недель назад «Узнайте, как создать приложение NodeJS / mongo / express / ejs!»

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

1 шаг:

Допустим, у вас установлены Node и npm. Первая команда npm, которую необходимо знать:

npm init

Эта команда позволяет создать ваш самый важный файл: package.json.
Например, давайте изучим его содержимое:

  1. Описание вашего проекта NodeJS поможет другим понять его цель и на каком этапе (версии) вы находитесь.
  2. Не забудьте указать URL своего репозитория.
  3. Это самая важная часть файла package.json:
    • Установите точку входа в проект в «main». Важно придать этому файлу правильное значение. например: если ваш проект представляет собой приложение, рекомендуется назвать его app.js. Если это сервер, имеет смысл назвать его server.js.
    • Вы должны знать уже существующие сценарии. В этом примере сборка - единственный настраиваемый скрипт. Чтобы запустить start, вы можете просто ввести в консоли:

npm start

Но для пользовательского скрипта вам нужно будет добавить аргумент «запустить».

npm запустить сборку

Эти скрипты помогут вам запустить множество процессов. Для дальнейших пояснений я хотел бы показать вам реальный пример:

В этом проекте я использую webpack и lint. Я запускаю проект по-разному в режимах dev и prod, поэтому я сделал по 2 скрипта для каждого случая.

Я создал сценарий, запускающий lint, и вызвал его в других сценариях. Мне также нужен сценарий сборки, который я запускаю всякий раз, когда хочу развернуть свое приложение. Я видел другие проекты, которые требуют сценариев для удаления некоторых кешированных файлов, для запуска других проектов, для загрузки файлов… и т. Д. Это рай, и вы можете делать и иметь все, что хотите!

4. Важно указать механизмы для вашего приложения, чтобы другие знали, нужно ли им устанавливать другую версию узла, чтобы приложение работало правильно.

5. Зависимости - это модули npm, которые потребуются вашему проекту для запуска. Иногда вам может понадобиться использовать некоторые модули только в режиме разработки. Вот почему вам понадобятся dev-зависимости.

Имейте в виду, что есть встроенные модули, которые вам не нужно устанавливать (например, fs, util).

Чтобы установить узел узла:

npm install [node-module-name] [@ version] - save [-dev]

аргумент - save сохранит модуль как зависимость от вашего package.json. Если вы не укажете версию, будет установлена ​​последняя стабильная версия.

Пример использования. Вы начинаете разрабатывать свое приложение 1 января с X-модулем в стабильной версии 1.2. Вы отметили в package.json версию 1. *. Вы закончили разработку 1 мая. X-модуль находится в стабильной версии 1.5. Вы развертываете свое приложение и запускаете npm install на своем производственном сервере. Добро пожаловать в ад! Npm установил [email protected]. Используемые вами функции ограничены. И вы не можете догадаться, потому что package.json все еще указывает 1. *.
Мой совет: не переключайтесь на prod (или pre-prod), если вы не указали правильное управление версиями для своих зависимостей в вашем пакете. json файл.

2-й шаг:

Второй шаг - настроить вашу среду. Вы зададите среду и глобальные переменные в файле .env, который вы никогда не будете версировать !! Вы будете помещать только .env.schema в свое репо. Файл .env.default может помочь со значениями по умолчанию.

Есть несколько модулей для загрузки вашего env. Мы выбрали dotenv-extended на большинстве наших проектов в саторипопе. С помощью этого модуля вы получите доступ ко всем своим переменным env в переменной process.env.

3-й шаг:

Вам не терпится начать кодировать. Вот и мы с нашим основным файлом app.js. Мы хотим запустить наш первый экспресс-сервер.
Прежде всего, позвольте мне сказать, что самое крутое в экспрессе:

Express - это минималистичный и гибкий фреймворк для веб-приложений Node.js. […] Express предоставляет тонкий слой основных функций веб-приложений, не скрывая при этом тех функций Node.js, которые вы знаете и любите.

Это означает, что мы можем запустить экспресс-сервер несколькими способами. Нет права или необходимости действовать. Все зависит от ваших потребностей. Вам нужно, чтобы это был https-сервер? Собираетесь добавить сервер socket.io? вы просто послушаете порт? Каждый случай поддерживается. Мы не будем рассматривать их все в этом сообщении в блоге, но вот что мы использовали на семинаре:

Запустите приложение, и вы увидите на http: // localhost: [PORT] сообщение hello world! сообщение.

4-й шаг:

Node JS не имеет определенной архитектуры или должен ее выполнять. Вы можете организовать свой проект как хотите. Если вы проверите проекты Node Js с открытым исходным кодом, вы найдете все виды архитектур. Вы даже можете написать целое приложение в одном файле. Очевидно, мы этого не рекомендуем.

В satoripop нам нравится использовать эту архитектуру для наших приложений express / mongoDB / ejs:

  • Модели: для моделей коллекций mongo db.
  • Маршруты: для файлов экспресс-маршрутизации
  • Представления: для файлов представлений ejs
  • public: для всех файлов, которые будут общедоступными в вашем приложении (например, изображений, шрифтов, CSS, фронтальных файлов js и т. д.)
  • utils: модули, созданные вами как помощники или промежуточное ПО.

5-й шаг:

Теперь вам нужно получить доступ к своей базе данных в Node Js. Сначала вам нужно установить в файле .env следующую строку подключения:

DB = mongodb: // локальный: 27017 / фастфуд

Мы использовали модуль npm мангуст:

mongoose.connect (process.env.DB);

В каталог моделей добавим файл модели коллекции блюд:

С мангустом есть разные стили для определения ваших моделей. Вы можете установить атрибут и указать (или нет) его конфигурацию (значение по умолчанию, обязательно, тип, uniq и т. Д.). Вы можете указать действия CRUD, как в этом примере. На семинаре мы сделали его простым для начала, и я добавил: Не сомневайтесь, исследуйте более сложные и разные коды. Node - это исследовать и пробовать новые уловки!

6-й шаг:

Чтобы взаимодействовать с нашей базой данных, мы хотим добавить первую страницу, на которой перечислены и заказаны блюда. Мы использовали ejs. Хотелось сохранить воркшоп в том же духе: только JS! Ejs - это javascript в вашем html.

Чтобы добавить ejs в качестве движка, мы добавим это в файл app.js:

Не забудьте установить модуль ejs npm и переименовать ваши файлы .html в .ejs!

Я добавил в строку 11 (как на картинке выше) статический маршрут к общедоступному каталогу, чтобы наш фронт мог получить доступ ко всем нашим общедоступным файлам.

7-й шаг:

Последний шаг! Все, что нам нужно сделать, это создать маршрут, который взаимодействует с моделями:

Корневой маршрут «/» получит все блюда из базы данных и отобразит представление индекса, передав массив блюд в ejs.

В ejs нам нужно будет выполнить цикл по массиву блюд, чтобы создать список блюд.

Теперь все, что вам нужно, это покопаться в документации по различным модулям и некоторым классным проектам NodeJS с открытым исходным кодом, чтобы творить чудеса. Чем больше вы попробуете, тем больше вы узнаете !!

Вот несколько интересных ссылок, которые стоит проверить в дальнейшем:





NodeSchool.io