1 Обзор
Parcel
да2017
Он был выпущен вWebpack
Он слишком громоздкий в использовании, а документация на официальном сайте не очень понятная.Parcel
Как только он был запущен, он был быстро выдвинут на передний план. Его основная особенность заключается в том, что он не имеет абсолютно нулевой конфигурации в истинном смысле, обеспечивая почти дурацкий пользовательский интерфейс. Вам нужно только понять несколько простых команд, предоставленных для использовать его для создания интерфейсных приложений.Программа не имеет никакого вторжения в проект.
И весь процесс будет автоматически устанавливать зависимости, так что процесс разработки может быть больше сосредоточен на кодировании. ПомимоParcel
Сборка выполняется очень быстро и использует многопроцессорную внутреннюю работу по сравнению сWebpack
Скорость упаковки его быстрее.
Но в настоящее время большая часть упаковки проекта по-прежнему будет использоватьWebpack
,потому чтоWebpack
Экосистема станет лучше, расширение будет богаче, а проблемы можно будет легко решить.
Parcel
Для такого инструмента, для разработчиков, понять его — это фактически сохранить чуткость к новым технологиям и инструментам. Чтобы лучше уловить тенденцию и направление технологий, не более того.
2. Используйте
пройти черезyarn init
инициализацияpackage.json
документ. Может быть установлен после завершенияParcel
соответствующий модульparcel-bundler
.
yarn add parcel-bundler --dev
новыйsrc
Каталог используется для хранения исходного кода, написанного на этапе разработки. Создайте/src/index.html
файл какparcel
Упакованный входной файл.
parcel
а такжеwebpack
Оба поддерживают любой тип файла в качестве записи упаковки, ноparcel
Официально рекомендуется использоватьhtml
файл в качестве записи об упаковке, причина в том, чтоhtml
Это точка входа, когда приложение работает на стороне браузера.
В этом входном файле вы можете писать как обычно или ссылаться на некоторые файлы ресурсов. Упомянутые здесь ресурсы в конечном итоге будутparcel
Упакованы вместе для вывода в выходной каталог.
Представьте сначала здесьmain.js
файл сценария.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Parcel Tutorials</title>
</head>
<body>
<script src="main.js"></script>
</body>
</html>
новый/src/main.js
файл, а затем создать новый/src/foo.js
документ.
foo.js
кES Module
способ экспорта объекта по умолчанию.
export default {
bar: () => {
console.log('hello parcel~')
}
}
main.js
прошедшийimport
импортfoo
модуль.
import foo from './foo';
foo.bar();
parcel
пара поддержкиES Module
Для упаковки модулей команда упаковки должна передавать путь записи упаковки.
yarn parcel src/index.html
parcel
По переданным параметрам он сначала найдетindex.html
файл, то согласноindex.html
средиscript
тег, чтобы найти импортированныйmain.js
файл и, наконец,import
выписка найденаfoo
модуль для завершения упаковки всего проекта.
parcel
Команда не только упаковывает приложение, но и запускает сервер разработки, связанный сwebpack
средиdev-server
Такой же. Откройте инструменты разработчика в браузере (консольF1
2), вы можете использовать функцию автоматического обновления в это время.
export default {
bar: () => {
// console.log('hello parcel~');
console.log('hello parcel11~');
}
}
Если вам нужен опыт горячей замены модулейparcel
также поддерживается, вmain.js
нужно использоватьhmr
который предоставилapi
.
судить первымmodule.hot
Существует ли объект, если объект существует, это доказывает, что текущая среда может быть использованаhmr
изapi
. использоватьmodule.hot.accept
Метод обрабатывает логику горячей замены модуля.
Но здесьaccept
а такжеwebpack
который предоставилapi
Одно дело другое,webpack
средиapi
Получает два параметра для обработки логики после обновления указанного модуля. а такжеparcel
который предоставилaccept
Он получает только один параметр, то есть функцию обратного вызова, которая будет автоматически выполняться при обновлении модуля или обновлении модуля, от которого зависит модуль.
import foo from './foo';
foo.bar();
if (module.hot) {
module.hot.accept(() => {
console.log('hmr');
})
}
За исключением горячей заменыparcel
Он также поддерживает очень удобную функцию, которая заключается в автоматической установке зависимостей.
Тогда представьте, что в процессе разработки приложения, если вы вдруг захотите использовать сторонний модуль, вам нужно сначала остановить работающий модуль.dev-server
Затем перейдите к установке модуля, а затем перезапустите после завершения установкиdev-server
. С автоматической установкой зависимостей это уже не такая заморочка.
Предположим, вы хотите использоватьjQuery
, хотя этот модуль не установлен, это из-за автоматической установки зависимостей. Просто импортируйте его в обычном режиме. Импорт полного использованияjQuery
который предоставилapi
, после сохранения файлаparcel
Импортированные модули будут автоматически загружены и установлены. Лишние операции в значительной степени избегаются.
import $ from 'jquery';
import foo from './foo';
foo.bar();
$(document.body).append('<h1>Hello Parcel</h1>');
if (module.hot) {
module.hot.accept(() => {
console.log('hmr');
})
}
Помимоparcel
Он также поддерживает загрузку других типов модулей ресурсов и по сравнению с другими упаковщиками модулей.parcel
Загрузка любого типа ресурсного модуля также не требует настройки.
Например, добавьте/src/style.css
файл стиля. Затем добавьте в этот файл несколько простых стилей.
body {
background: red;
}
назадmain.js
прошедшийimport
Импортируйте этот файл стиля и сохраните стиль, чтобы он вступил в силу немедленно.
import $ from 'jquery';
import foo from './foo';
import './style.css';
foo.bar();
$(document.body).append('<h1>Hello Parcel</h1>');
if (module.hot) {
module.hot.accept(() => {
console.log('hmr');
})
}
Никаких дополнительных плагинов за весь процесс не устанавливается, а также есть возможность добавлять картинки по желанию.
import $ from 'jquery';
import foo from './foo';
import './style.css';
import logo from './icon.png';
foo.bar();
$(document.body).append('<h1>Hello Parcel</h1>');
$(document.body).append(`<img src=${logo} />`);
if (module.hot) {
module.hot.accept(() => {
console.log('hmr');
})
}
Вкратце,parcel
Надеюсь, опыт разработчиков таков, что вы можете просто делать то, что хотите, а за лишнее отвечают инструменты. Кроме тогоparcel
Он также поддерживает динамический импорт.Если динамический импорт используется внутри, он автоматически разделяет код.
// import $ from 'jquery';
import foo from './foo';
import './style.css';
import logo from './icon.png';
foo.bar();
import('jquery').then($ => {
$(document.body).append('<h1>Hello Parcel</h1>');
$(document.body).append(`<img src=${logo} />`);
})
if (module.hot) {
module.hot.accept(() => {
console.log('hmr');
})
}
Вышеупомянутое в основномParcel
Некоторые из наиболее часто используемых функций. в использованииParcel
Почти никаких трудностей, только что выполнил один от начала до концаParcel
Заказ. все вещиParcel
Это делается автоматически внутри.
3. Развертывание в рабочей среде
воплощать в жизньparcel
который предоставилbuild
Команда поддерживает путь к файлу записи для запуска пакета в производственном режиме. Для проектов одинакового размераParcel
коэффициент скорости сборкиWebpack
Намного быстрее. Потому чтоParcel
Внутреннее использование многопроцессорной работы в то же время дает полный простор многоядернымCPU
представление,Webpack
также можно использовать вhappypack
Плагины достигают этого.
parcel build src/index.html