Почему вы должны это прочитать
Каждый программист должен знать основы создания веб-приложений, ведь каждое устройство подключено к Интернету. 👽
Эта статья научит вас, как создать веб-сайт с помощью Node.js, Express и Heroku за 5 минут!
Если вы уже знаете, как это сделать:вы можетеоткрыть некоторые скрытые жемчужины 💎 в этой статье.
вступление
В четвертом уроке мы рассмотрим «Начало работы с Heroku с помощью Node.js».
https://www.heroku.com/
https://expressjs.com/
https://nodejs.org
Конечный результат
В конце этого урока у вас будет работающий веб-сайт в облаке, доступный через URL-адрес.
Исходный код
Исходный код этого урока можно найти по адресу https://github.com/programming-online-courses/lbs-to-kg/tree/lesson4-web-server/server.
| Задача 1 | Настроить локальный веб-сервер
Цель:
👉 Создайте простейший веб-сервер с помощью express.js.
Определение. Сервер — это часть программного обеспечения, обеспечивающая функциональность для других программ, называемых клиентами. Эта архитектура называется моделью клиент-сервер. Подробнее читайте в Википедии
Определение. Express — это минималистичная и гибкая платформа веб-приложений Node.js, предоставляющая надежный набор функций для веб-приложений и мобильных приложений.
Пошаговое руководство
1.
Давайте разделим серверную и клиентскую логику. Создайте новую папку./server
2.
Инициализируйте его с помощью package.json
и создайте 2 новые папки s/server/public
и /server/src
3.
Создайте новый файл your-project/server/src/main.js
Это будет основной файл для вашего сервера.
4.
npm install --save express
5.
Окончательная структура папок проекта должна быть примерно такой
6.
Украсть код hello world с https://expressjs.com/en/starter/hello-world.html
//main.js const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`) })
Обновить скрипт package.json start
"scripts": { ... "start": "node src/main.js" },
Проверьте, работает ли ваш веб-сервер: npm run start
Дошли до http://localhost:3000 Там должен быть текст: Hello world.
Если это не сработало, вы облажались! Напишите комментарий, я вам помогу
7.
Успех! Теперь вы знаете, как создать базовый веб-сервер. Разве это не было легко!? — Каждый может научиться программировать! 🏫
| Задача 2 | Не красивое зрелище! Сделать сайт красивым.
Цель:
👉 Давайте обслуживать статические файлы, такие как index.html, index.css и gif.
Пошаговое руководство
1.
Создать /server/public/index.html
файл
Что-то простое вроде этого поможет:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Amazing</title> </head> <body> <h1>Hello World</h1> </body> </html>
2.
Обновить main.js
//main.js const express = require('express') const app = express() const port = 3000 app.use('/', express.static("public")) app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`) })
Пояснение:
Это -› app.use(‘/’, express.static(“public”))
делает доступными все ресурсы в общей папке. Вот так:
http://localhost:3000/index.html http://localhost:3000/index.css http://localhost:3000/yourImage.jpg
Если бы вы использовали app.use('/SOMETHING_ELSE', express.static(“public”))
, все эти ресурсы были бы доступны следующим образом:
http://localhost:3000/SOMETHING_ELSE/index.html http://localhost:3000/SOMETHING_ELSE/index.css http://localhost:3000/SOMETHING_ELSE/yourImage.jpg
Полезно знать. По умолчанию браузер перенаправляетhttp://localhost:3000
на http://localhost:3000/index.html
. Вот почему http://localhost:3000
отображает файл .html.
3.
Создать public/index.css
Добавить любой стиль, который вы хотите. Я написал следующее:
// index.css body { text-align: center; } a { display: block; font-size: 25px; margin-top: 25px; }
Обновление public/index.html
Например, я связал файл CSS и добавил изображение.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My test page</title> <link rel="stylesheet" href="/index.css"> </head> <body> <h1>Make sure you give a clap</h1> <img src="/clap_gif3.gif"/> <a href="https://medium.com/@premiumtechnologyacademy"> @premiumtechnologyacademy </a> </body> </html>
Совет: Убедитесь, что вы загрузили изображение в папку /public
, если вы хотите иметь к нему доступ внутри вашего index.html
4.
Теперь если вы запустите npm run start
и откроете http://localhost:3000, то у вас должно получиться что-то вроде этого:
5.
Ура! Теперь вы знаете, как создать базовый веб-сайт и веб-сервер на локальном хосте. 😋
Далее, давайте оживим!
| Задача 3 | На Луну! Развернуть в облаке
Цель:
👉 Разверните свой сайт в облаке Heroku
Пошаговое руководство
Чтобы заставить его работать в Heroku, нам нужно внести несколько изменений.
1.
Во-первых, давайте добавим переменную PORT
const port = process.env.PORT || 3000;
Нам это нужно, потому что Heroku будет решать, на каком ПОРТЕ будет работать наш веб-сервер. Это означает, что мы не можем жестко закодировать номер порта!
2.
Heroku ищет package.json
в корневой папке. Если у вас несколько папок, убедитесь, что у вас есть одна package.json
в корневой папке. Как показано ниже:
3.
В этом файле lbs-to-kg/package.json
у вас должны быть скрипты start
и install
.
scripts: { "start": "node server/src/main.js", "install": "npm run install:server", "install:server": "npm install --prefix server", ... }
Сценарий установки связан с тем, что нам нужно установить зависимости. Heroku по умолчанию ищет скрипт install
в package.json.
После этого Heroku запустит скрипт start
.
4.
Убедитесь, что у вас есть правильные пути в main.js
!
npm run start
и npm run server/start
не эквивалентны, их относительные пути различны.
Это означает, что вам нужно обновить main.js
, чтобы наш код использовал __dirname
.
Объяснение: __dirname
– это переменная среды Node
Следующий код будет работать:
... const rootPath = "../"; const uiHtmlPath = path.resolve(__dirname, rootPath, 'public', 'index.html'); const cssAndGifsFiles = path.resolve(__dirname, rootPath, 'public') app.use("/static", express.static(cssAndGifsFiles)) app.get("/", (req, res) => { res.sendFile(uiHtmlPath); }) ...
Теперь вы можете запустить сервер из двух мест:
C:\...\lbs-to-kg>npm run start
и
C:\...\lbs-to-kg\server>npm run start
4b.
Убедитесь, что у вас есть правильные пути в index.html
Например
//index.html <link rel="stylesheet" href="/static/index.css">
Нам пришлось добавить «static» в путь, потому что мы использовали
//main.js app.use("/static", express.static(cssAndGifsFiles))
5.
Перейдите на https://www.heroku.com и зарегистрируйтесь
Я не получаю от них денег. Я был бы чертовски богат, если бы они давали мне комиссионные.
6.
Создайте новое приложение, вы можете сделать это, нажав «Создать».
7.
Вам необходимо установить интерфейс командной строки Heroku (CLI). Подробнее читайте на https://devcenter.heroku.com/articles/heroku-cli
После установки войдите в систему, используя heroku login
8.
У вас также должен быть установлен git
, сделайте это.
9.
Развернуть приложение
$ cd YOUR_PROJECT_NAME_IN_YOUR_COMPUTER/ $ git init $ heroku git:remote -a YOUR_APP_NAME_AT_HEROKU
Вы можете прочитать больше о развертывании на https://dashboard.heroku.com/apps/[ВАШЕ_ИМЯ_ПРИЛОЖЕНИЯ_HERE]/deploy/heroku-git
Совет. Убедитесь, что вы изменили URL-адрес, чтобы он соответствовал названию вашего приложения, иначе эта ссылка не будет работать
10.
Как только это будет сделано, откройте свой сайт. Мой https://five-minutes-app.herokuapp.com/
Совет. Если вы используете БЕСПЛАТНУЮ версию, поначалу она может медленно выходить из спящего режима. Но если вы перейдете на Hobby, то он будет молниеносным.
11.
Выгода! 💰
Советы:
Совет 1. Используйте heroku logs
для получения информации о том, что происходит в облаке Heroku.
Совет 2. Если это не сработало, обязательно оставьте комментарий! Иногда студенты путаются в конфигурации проекта, и он не развертывается. Я помогу.
Совет 3. Убедитесь, что вы находитесь в ветке master
, прежде чем отправлять в heroku
Совет 4. Если вы хотите использовать видеорешение, обязательно хлопните в ладоши или ответьте! Спасибо! :)
Исходный код
Исходный код этого урока можно найти по адресу https://github.com/programming-online-courses/lbs-to-kg/tree/lesson4-web-server/server.
Резюме
Спасибо за внимание! Теперь вы знаете, как создать веб-сервер и как развернуть его в облаке Heroku!
Любовь ❤️
Кстати: разбейте эту кнопку хлопка, спасибо! ;)
Вы можете задавать мне вопросы в twitter/@codegodzilla. Возможно, я даже проверю ваш код, если у меня будет время.
Также посетите мой веб-сайт, чтобы найти больше интересного контента codegodzilla.com.