Как связать веб-приложение с Parcel.js
Введение
При разработке сайта или веб-приложения рекомендуется разделить код на более мелкие и более управляемые фрагменты. В рабочей среде запрос всех ваших ресурсов по отдельности может замедлить работу вашего приложения. Компоновщик – это инструмент, используемый для решения этой проблемы с задержкой путем объединения и слияния вашего кода в один файл. Это ограничивает количество HTTP-запросов к серверу для этих ресурсов. Использование сборщика полезно для оптимизации работы как пользователя, так и разработчика.
Parcel.js — это сборщик с открытым исходным кодом. Он поддерживает многие популярные языки, такие как Typescript и SASS, а также может работать с такими типами файлов, как изображения и шрифты. В Parcel встроено несколько дополнительных инструментов: сервер разработки, диагностика, минимизация и даже сжатие изображений. Если ваш проект требует дополнительных настроек, у вас есть возможность использовать множество плагинов Parcel.
В этом руководстве вы будете использовать Parcel для создания и сборки небольшого веб-приложения, содержащего файлы HTML, CSS и JavaScript. Вы будете взаимозаменяемо работать с текстовым редактором и терминалом. Вы также узнаете, как настроить Parcel с помощью пользовательских скриптов npm, чтобы помочь с запуском и сборкой вашего приложения.
Предпосылки
Чтобы следовать этому руководству, вам понадобятся:
- Понимание HTML, CSS и JavaScript. Вы можете узнать об этом из нашей серии руководств How To Code in JavaScript.
- Текстовый редактор, например Visual Studio Code. Вы можете использовать любой текстовый редактор, который вам нравится.
- Знакомство с терминалом. Вы можете узнать, как использовать терминал, из наших руководств Learning to Love Your Terminal.
- Node.js установлен на вашем локальном компьютере. Следуйте нашему руководству по установке Node.js и созданию локальной среды разработки для вашей конкретной среды.
Установив Node.js на свой компьютер, вы готовы приступить к следующим шагам.
Шаг 1 — Установка Parcel Bundler
В этом учебном пособии в качестве рабочего каталога будет использоваться ваш_проект
, но вы можете переименовать или использовать собственную папку проекта. Откройте предпочитаемый текстовый редактор и терминал или командную строку и убедитесь, что вы находитесь в каталоге верхнего уровня вашего проекта, прежде чем переходить к следующему шагу.
В каталоге your_project
используйте терминал или командную строку для инициализации проекта с помощью команды npm init
:
- npm init
Эта команда вызовет серию запросов о вашем проекте. Вы можете нажать ENTER
, чтобы перейти к каждому вопросу, или изменить любой из параметров по умолчанию на ваши предпочтительные настройки. Когда вы закончите, и если вы не изменили какие-либо настройки по умолчанию, у вас будет файл package.json
, содержащий следующую информацию, которую можно просмотреть в текстовом редакторе:
{
"name": "your_project",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Затем установите сборщик Parcel локально, используя флаг --save-dev
:
- npm install --save-dev parcel
Флаг --save-dev
сохраняет пакет установки как зависимость разработки. Это означает, что ваш проект будет полагаться на Parcel в процессе разработки для управления и создания вашего приложения.
После установки в ваш проект будут включены дополнительный файл package-lock.json
и каталог node_modules
. Файл package-lock.json
автоматически создается при установке npm. В нем описываются все зависимости, на которые ваш проект полагается для правильной работы. Если вас интересует информация, которую содержит этот файл, вы можете изучить документацию по npm. Как и файл package-lock.json
, папка node_modules
содержит все различные пакеты, на которые опирается ваш проект. Обратите внимание, однако, что автоматически сгенерированные файлы в этом сценарии не предназначены для непосредственного редактирования.
Обратите внимание, что в файле package.json
он теперь включает parcel
в качестве зависимости разработки:
...
"devDependencies": {
"parcel": "^2.7.0"
}
…
Теперь, когда сборщик Parcel установлен как локальная зависимость, вы готовы начать работу над своим приложением.
Шаг 2 — Создание файлов приложения
В следующем примере вы будете создавать небольшое приложение, которое меняет цвет фона при нажатии кнопки. Parcel будет внедрен в проект после того, как эти файлы приложения будут созданы.
Parcel может принять любой файл в качестве точки входа для вашего приложения. Файл точки входа — это место, где начинается выполнение вашего приложения. С этой точки входа Parcel создает ваше приложение со всеми зависимостями, на которые вы указываете, включая ссылки на файлы CSS и JavaScript. Вы будете использовать HTML-файл index.html
в качестве точки входа в ваше приложение.
С помощью текстового редактора создайте папку src
в каталоге your_project
для хранения и организации вашего кода. Если вы используете Visual Studio Code, вы можете щелкнуть правой кнопкой мыши
внутри каталога your_project
и выбрать Новая папка
и назовите его src
:
В этой папке src
создайте файл index.html
. В Visual Studio Code щелкните правой кнопкой мыши
внутри папки src
и выберите Новый файл
. Назовите этот файл index.html
.
Включите в файл index.html
следующие строки:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="css/style.css">
<title>Your Parcel Project</title>
</head>
<body>
<h1>Welcome to Parcel!</h1>
<div class="sammy-wrapper">
<div class="img-wrapper sammy-1">
<img src="https://assets.linux-console.net/articles/docker_node_image/sammy.png" alt="Sammy the Shark">
</div>
</div>
<button>Change the Background Color</button>
<script type="module" src="js/app.js"></script>
</body>
</html>
Этот файл HTML является целевой страницей для вашего приложения. Он включает ссылки на таблицу стилей и сценарий. Эти файлы будут храниться в соответствующих папках, чтобы ваш код был отдельным и организованным. Не забудьте сохранить файл после обновления. В VS Code вы можете сохранить файл, нажав CTRL+S
или CMD+S
.
В каталоге src
создайте еще одну папку с именем css
. Затем внутри папки css
создайте таблицу стилей CSS с именем style.css.
:
Включите следующий код CSS в файл style.css
:
html {
box-sizing: border-box;
}
*, *:before, *:after {
box-sizing: inherit;
padding: 0;
margin: 0;
}
body {
display: flex;
flex-direction: column;
align-items: center;
font-family: sans-serif;
color: white;
background: var(--bg, rgb(26, 80, 190));
font-size: 16px;
}
h1 {
font-size: 3rem;
padding: 2rem;
}
.img-wrapper {
max-width: 600px;
padding: 0 1rem;
margin: 2rem;
cursor: pointer;
}
.img-wrapper img {
width: 100%;
}
button {
font-size: inherit;
font-size: 1rem;
padding: .5rem;
margin: 8rem 0;
}
Не забудьте сохранить этот файл.
Затем внутри каталога src
создайте папку js
для хранения кода JavaScript:
В папке js
создайте файл app.js
со следующим кодом:
const btn = document.querySelector('button');
const body = document.querySelector('body');
let availableColors = ['darkslateblue', 'midnightblue', 'teal', 'tomato', 'seagreen', 'royalblue', 'saddlebrown', 'indigo', 'olivedrab', 'rosybrown'];
btn.addEventListener('click', function() {
const randomizeColor = Math.floor(Math.random() * availableColors.length);
body.style.setProperty('--bg', availableColors[randomizeColor]);
});
Код JavaScript случайным образом выбирает цвет из массива availableColors
, а затем меняет фон на этот цвет по щелчку.
После редактирования сохраните этот файл.
В целом, ваша текущая архитектура сайта будет следующей:
your_project/
|── node_modules
|── src/
| |── css/
| | |── style.css
| |── js/
| | |── app.js
| |── index.html
|── package.json
|── package-lock.json
Создав основные элементы вашего приложения, вы можете использовать Parcel для просмотра и настройки вашего приложения.
Шаг 3 — Запуск вашего приложения на сервере разработки
Один из способов просмотреть ваше приложение — открыть HTML-файл в браузере. Однако, если вы внесли изменения в любой из ваших файлов, вам придется вручную обновлять браузер каждый раз, когда вносятся изменения. Parcel поставляется с сервером разработки, который работает на вашем компьютере. Когда вы вносите изменения в свой код во время работы вашего сервера разработки, Parcel автоматически обновляет ваше приложение в вашем браузере без необходимости обновления. Это часто называют горячей перезагрузкой. Таким образом, вам не нужно останавливать сервер, применять ваши изменения, а затем снова перезапускать сервер, чтобы просмотреть ваши изменения.
Например, когда сервер разработки Parcel запущен, вы можете изменить атрибут background
в таблице стилей your_project/src/css/style.css
. на красный
и сохраните изменения. После сохранения вы сразу же заметите изменения в своем браузере без необходимости останавливать сервер разработки или обновлять его.
В своем терминале убедитесь, что вы находитесь в каталоге your_project
. Когда вы окажетесь в каталоге your_project
, запустите следующий код, чтобы запустить сервер разработки:
- npx parcel src/index.html
Output❯ npx parcel src/index.html
Server running at http://localhost:1234
✨ Built in 5ms
Встроенный сервер разработки Parcel запущен. Команда npx посылка
берет вашу точку входа src/index.html
и создает ваше приложение с необходимыми активами. Вывод также указывает, что приложение работает на http://localhost:1234
.
Чтобы просмотреть работающее приложение, откройте веб-браузер и перейдите по адресу http://localhost:1234
:
В вашем каталоге your_project
при выполнении команды npx plot
были созданы две новые папки. Папка .parcel-cache
содержит информацию о вашем проекте и используется Parcel для перестроения вашего приложения. Когда вы вносите изменения в свои файлы, Parcel обнаружит эти изменения и повторно запустит вашу сборку с этими файлами вместо того, чтобы начинать с нуля.
Другая папка, dist
, содержит динамически сгенерированные файлы, созданные Parcel для вас. Обратите внимание, что эта папка содержит ваши файлы HTML, CSS и JavaScript, но все они называются index
со случайными символами между ними. Он также включает файлы .map
. Parcel создает так называемую исходную карту, когда вы используете команду npx plot
. Исходная карта сообщает браузеру, как найти исходный код из вашего связанного кода. Он используется для помощи в отладке вашего кода в процессе разработки и производства:
Чтобы было ясно, вы не выполняете никакой работы в этих файлах. На самом деле, если вы удалите эти папки, папки .parcel-cache
и dist
будут автоматически созданы и обновлены при запуске пакета npx
команда еще раз.
Примечание. Иногда при внесении значительных изменений в код вы можете заметить, что эти изменения не отражаются в браузере. Если это произойдет, вы можете попробовать обновить браузер. Если проблема не устранена, остановите работу сервера, нажав CTRL+C
в терминале. Затем удалите папки .parcel-cache
и dist
. Папка .parcel-cache
потенциально может содержать остатки старого кода, и, удалив ее, вы сможете устранить болевые точки. После их удаления снова запустите команду npx посылка src/index.html
. Это заново создаст папки и файлы .parcel-cache
и dist
с вашим обновленным кодом.
Когда вы закончите изучение новых папок и файлов, остановите работу сервера, нажав CTRL+C
в терминале или командной строке.
Шаг 4 — Создание сценариев npm для запуска и сборки вашего приложения
Вместо того, чтобы запускать команду npx посылка src/index.html
внутри вашего терминала каждый раз, когда вы хотите проверить свой сервер разработки, вы можете создать сценарий npm внутри вашего package.json
, чтобы запустить эту повторяющуюся задачу и автоматизировать этот шаг. Вы также можете включить дополнительный скрипт для сборки вашего приложения, когда вы будете готовы к работе.
Начните с открытия файла ваш_проект/package.json
в текстовом редакторе.
Измените этот файл, включив в него следующие строки:
{
"name": "your_project",
"version": "1.0.0",
"description": "",
"source": "src/index.html",
"scripts": {
"start": "parcel",
"build": "parcel build --dist-dir public"
},
"author": "",
"license": "ISC"
...
В файле package.json
вы заменили main: index.js
на source: src/index.html
. source
указывает ввод или исходный файл вашего приложения и конкретный путь к файлу. Вы также включили следующие два скрипта:
-
start: parcel
:start
— это имя этой команды. Вы можете назвать это как угодно.parcel
— это фактическая команда, которую вы хотите, чтобы ваш скрипт выполнял. В этом случаеparcel
делает то же самое, что и предыдущая командаnpx packet
. Он запускает сервер разработки с вашим файлом точки входа и строит его с включенными вами активами. Поскольку вы указали источник точки входа в полеsource
, Parcel понимает, где найти этот файл. -
build: parcel build --dist-dir public
:build
— это имя этой команды, подобноеstart
выше. . Вы можете назвать это как угодно. Командаparcel build
создает и оптимизирует ваш код для производства. Обычно это запускается после того, как вы закончили разработку приложения. Каталог Parcel по умолчанию для вашего вывода называетсяdist
. Тег--dist-dir public
определяет выходную папку для ваших производственных файлов и называетсяpublic
, чтобы избежать путаницы с каталогомdist
по умолчанию. Вы выполните эту задачу позже.
Теперь вместо ввода npx посылки src/index.html
в терминале для запуска сервера разработки вы можете ввести npm start
:
- npm start
Output❯ npm start
> your_project@1.0.0 start
> parcel
Server running at http://localhost:1234
✨ Built in 5ms
Команда npm start
— это сокращенный способ запуска вашего сервера разработки.
Откройте веб-браузер и перейдите по адресу http://localhost:1234
. Целевая страница вашего приложения должна быть такой же, как и раньше.
После завершения файла конфигурации вы можете продолжить разработку и тестирование своего приложения. Когда ваше приложение будет готово к производству, вы можете приступить к следующему шагу.
Шаг 5 — Создание приложения для производства
Одной из основных функций сборщика является объединение типов файлов. Это то, что Parcel делает для вас, когда вы запускаете команду build
. Например, если у вас есть несколько файлов CSS, которые зависят друг от друга в вашем каталоге src/css
, Parcel объединит эти файлы в один файл, когда вы используете npm run build
команда. То же самое относится и к любому из ваших файлов JavaScript. Вы можете узнать больше о том, как Parcel это делает, изучив их документацию.
Когда ваше приложение будет готово к работе, используйте команду build
, включенную в файл package.json
, для создания рабочих файлов.
Во-первых, убедитесь, что вы находитесь в каталоге верхнего уровня, ваш_проект
, затем введите следующую команду в свой терминал или командную строку:
- npm run build
Output❯ npm run build
> your_project@1.0.0 build
> parcel build
✨ Built in 767ms
public/index.html 781 B 239ms
public/index.9daf4050.css 582 B 21ms
public/index.a9c94235.js 532 B 179ms
Как отмечалось выше, вывод Parcel по умолчанию для ваших файлов находится в папке dist
. Поскольку вы указали скрипт build
для вывода ваших файлов в каталог с именем public
, Parcel создает эту папку и выводит в нее ваши производственные файлы. Файлы в этой папке отличаются от тех, когда вы находились в разработке, поскольку они объединены, минимизированы и дополнительно оптимизированы. Вы можете узнать больше о рабочих файлах и о том, что делает Parcel для оптимизации вашего кода, из их документации.
Например, если вы открываете файл public/index.html
, код должен быть минимизирован:
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/index.9daf4050.css"><title>Your Parcel Project</title></head><body><h1>Welcome to Parcel!</h1> <div class="sammy-wrapper"><div class="img-wrapper sammy-1"><img src="https://assets.linux-console.net/articles/docker_node_image/sammy.png" alt="Sammy the Shark"></div></div> <button>Change the Background Color</button> <script type="module" src="/index.a9c94235.js"></script></body></html>
Как и в случае с папкой dist
, вы не выполняете никаких действий в каталоге public
. Если вам нужно внести изменения в свой код, внесите изменения непосредственно в файлы в каталоге src
.
Как и в случае с командой npm start
, после внесения изменений вы можете пересобрать рабочие файлы с помощью команды npm run build
. Ваша папка public
и файлы в ней должны быть развернуты на веб-сервере, когда вы будете к этому готовы.
Вы создали и связали приложение с помощью Parcel.
Заключение
В этом руководстве вы создали приложение и связали его с Parcel. Вы также создали два сценария npm для создания файлов разработки и рабочих файлов. Если вам интересно узнать больше о Parcel, вы можете ознакомиться с их официальной документацией.
Если вы хотите узнать, как развернуть свое приложение, прочитайте наш учебник «Как развернуть статический сайт в облаке с помощью платформы приложений DigitalOcean».