Разверните веб-приложение JavaScript менее чем за 30 минут
Вы только что закончили свое первое приложение JavaScript и теперь задаетесь вопросом: Как мне разместить свое приложение в Интернете? В этом руководстве мы рассмотрим самый быстрый и простой способ развертывания вашего JavaScript-приложения на Heroku с помощью Git, Node, Node Package Manager (NPM) и Express.
Heroku - это облачная платформа, которая предлагает веб-разработчикам бесплатный план для управления и развертывания своих проектов. Чтобы воспользоваться их услугами, нам придется зарегистрироваться.
0. Предпосылки
Прежде чем мы начнем, убедитесь, что Git, Node и NPM установлены, выполнив следующие команды в вашем терминале:
* $
означает запуск команды в вашем терминале.
$ node --version
Если Node не установлен, скачайте его здесь.
$ npm --version
NPM обычно устанавливается вместе с Node. Однако, если NPM не установлен в вашей системе, попробуйте переустановить более свежую версию Node.
$ git --version
Если Git не установлен, скачайте его здесь. После установки Git давайте инициализируем локальный репозиторий для нашего приложения.
$ git init
1. Установите Heroku CLI.
После того, как мы подписались на Heroku и установили все необходимые компоненты, установите Heroku CLI и войдите в систему через свой терминал.
$ heroku login
2. Инициализируйте package.json в каталоге приложений.
Если у вас уже есть файл package.json в корневом каталоге приложения, вы можете перейти к шагу 3.
В противном случае в корневом каталоге приложения выполните следующую команду, чтобы инициализировать файл package.json. Этот файл действует как идентификатор (например, идентификационная карта для вашего приложения) и требуется NPM, чтобы знать, какие зависимости установить для вашего приложения.
$ npm init
После выполнения команды вам будет предложен ряд вопросов, которые автоматически заполнят ваш файл package.json метаданными из ваших ответов. Пока вы можете пропустить вопросы, нажав enter
, так как вы сможете редактировать файл позже.
3. Установка Express
Далее мы будем использовать фреймворк веб-приложений Node.js под названием Express для настройки нашего сервера. Чтобы установить Express, нам нужно выполнить следующую команду:
$ npm install --save express
Используя NPM, это поможет нам загрузить и установить необходимые файлы для модуля Express в каталог приложения. Флаг --save
также укажет Express как зависимость в нашем файле package.json.
4. Настройка сервера Express.
Создайте файл server.js. Это будет действовать как наш сценарий инициализации при развертывании нашего приложения на Heroku.
$ touch server.js
Затем откройте файл server.js и сохраните его в следующем коде:
Что это вообще значит? Давайте поговорим немного подробнее.
const express = require('express'); const app = express(); const path = require('path');
Чтобы наш скрипт server.js использовал Express, нам нужно потребовать модуль Express, инициализировав const express = require('express')
.
Следующая строка const app = express()
инициализирует переменную app новым объектом Express. Это позволит нам использовать методы, предоставляемые модулем Express.
Другой модуль, который мы будем использовать, - это модуль Путь, предоставляемый Node, к которому мы можем получить доступ через const path = require('path')
. Это предоставит нам набор методов, которые мы можем использовать при работе с каталогами путей. В нашем случае мы в основном будем использовать path.join(...)
.
app.use(express.static(path.join(__dirname)));
app.use(path, callback)
вызывается всякий раз, когда запрос (GET, POST, PATCH, DELETE) отправляется на путь, который запускает функцию обратного вызова. Проще говоря, представьте, что прослушиватель событий помещается на обозначенный путь с помощью функции обратного вызова. Тем не мение; если путь не указан, обратный вызов будет срабатывать при каждом запросе независимо от пути. Поскольку в настоящее время у нас нет пути, наша функция обратного вызова express.static(...)
будет срабатывать при каждом запросе, который получает наш сайт.
express.static(...)
- это функция промежуточного программного обеспечения, которая позволяет нам предоставлять каталог или файл для общего использования. В нашем случае мы передали path.join(__dirname)
в качестве аргумента нашей функции промежуточного программного обеспечения, где __dirname
представляет корневой каталог нашего приложения. Это означает, что каждый каталог и файл в нашем корневом каталоге приложения могут быть доступны клиенту, когда его браузер выполняет запрос.
Не пугайтесь! Помните, что каждый раз, когда клиент переходит на наш веб-сайт, его браузер выполняет GET-запрос. В свою очередь, наш сервер должен отправить ответ вместе с файлами html, css и js, которые составляют базовое веб-приложение. Если мы хотим разрешить публичный доступ только к определенному каталогу, мы можем вместо этого передать path.join(__dirname, '[name of the directory]')
. По мере того, как наши веб-приложения становятся более сложными, мы можем захотеть скрыть определенные файлы, которые могут содержать наши ключи API, секреты и т. Д., Путем ограничения того, какие файлы могут быть доступны публично.
app.get('/', function (req, res) { res.sendFile(path.join(__dirname, 'index.html')); });
Здесь мы устанавливаем наши маршруты. В функции app.get(path, callback)
обратный вызов запускается, когда выполняется запрос GET по указанному пути. В нашем примере у нас в настоящее время есть один маршрут к '/’
, по которому мы отправляем обратно index.html клиенту. Пока наш app.use(express.static(...))
разрешает публичное использование наших файлов css и js, клиентский браузер также сможет получать эти файлы для использования. На данный момент этого достаточно, чтобы наш сайт заработал.
app.listen(process.env.PORT || 3000);
Эта строка сообщает нашему веб-приложению, какой порт слушать. Когда мы развертываем наше веб-приложение, Heroku установит для сервера значение порта по умолчанию, которое будет обозначено как process.env.PORT
. Если порт не указан, наше веб-приложение по умолчанию будет использовать порт 3000.
Чтобы быстро это проверить, мы можем запустить $ node server.js
и перейти к http://localhost:3000
в нашем браузере. Когда все будет хорошо, нажмите Ctrl + C
в терминале, чтобы выключить локальный сервер.
4. Настройка package.json
После того, как мы настроили наш server.js, нам нужно будет настроить инструкции для Heroku для запуска нашего сервера при развертывании. В вашем файле package.json в разделе scripts добавьте "start": "node server.js"
.
Heroku автоматически найдет сценарий start и выполнит его при развертывании.
5. Зафиксируйте все изменения с помощью Git.
Теперь, когда мы настроили все необходимые файлы, выполните следующие команды, чтобы зафиксировать наши изменения. Во-первых, нам нужно будет выполнить наши изменения.
$ git add .
Эта команда добавит все наши файлы в область подготовки. Далее нам нужно будет зафиксировать изменения.
$ git commit -m '[type some detailed message here]'
После фиксации ваших изменений мы, наконец, можем развернуть наше приложение!
6. Развертывание нашего приложения на Heroku
Выполните следующую команду и замените [] именем вашего приложения.
$ heroku create [name of your app]
Это инициализирует приложение на веб-сайте Heroku и настроит Heroku в качестве удаленного репозитория в вашем файле .git. Как только это будет сделано, давайте переместим наш локальный репозиторий в удаленный репозиторий Heroku.
$ git push heroku master
После того, как наше веб-приложение будет успешно перенесено в удаленный репозиторий, Heroku автоматически запустит npm start
скрипт, который мы ранее определили в нашем файле package.json. В свою очередь, это запустит node server.js
и запустит наш сервер! Если все пойдет хорошо, нам будет возвращен URL-адрес нашего веб-приложения!
Удачи и удачного кодирования!