jsliang Job Search Series - 36 - Краткое изложение серии Front-End Engineering

Поиск работы опрос

каталог

Чем отличается передок без закидывания от соленой рыбы?

содержание
каталог
Два обзорных очка знаний
2.1 Babel
2.2 Webpack
2.3 Webpack - Tree Shaking
2.4 Webpack - Scope Hoisting
2.5 Простая реализация Webpack
2.6 Оптимизация производительности Webpack
Три ссылки
3.1 Разное
3.2 Babel
3.3 Механизм шаблонов
3.4 Мониторинг передней работы
Четыре ссылки на Webpack
4.1 Серия статей Webpack
4.2 Оптимизация производительности Webpack
4.3 Scope Hoisting
4.4 Tree Shaking
4.5 Ленивая загрузка

Два обзорных очка знаний

Назад к содержанию

Эта серия относится к статьям 79 и обобщает статьи 6. Спасибо за вашу поддержку.

2.1 Babel

Назад к содержанию

Адрес статьи:Babel

  • AST: абстрактное синтаксическое дерево, которое является абстрактным представлением синтаксической структуры исходного кода.
  • принцип: Поместите существующий код ES6+, сначала черезлексический анализа такжеРазборПозжеРазобратьдляAST, затем поместите этоAST конвертироватьдля нужной нам формыAST, и, наконец, поместите этоASTЗатем конвертируйте в ES5 или нужный формат.

2.2 Webpack

Назад к содержанию

Адрес статьи:Webpack

  • что: по сути упаковщик модулей, чья работа заключается в упаковке каждого модуля в соответствующийbundle
  • Основная идея:mode,entry,output,loader,plugin
  • процесс сборки: инициализация, компиляция, вывод, плагины (Plugin) контролировать в любое времяWebpackтранслировать и звонить в какой-то моментAPIИзменить текущий результат.
  • entry: указывает файл записи пакета. Первоначальноstring, то есть одна запись в один упакованный файл,objectмного к одному,arrayмногие ко многим
  • output: местоположение упакованного файла
  • loader: Транслятор, обработка разных ресурсов, выполнение справа налево
  • plugin: плагин, расширениеWebpackфункция, мониторWebpackжизненный цикл звонкаAPIИзменить результат вывода.
  • resolve: настроитьWebpackКак найти файл, соответствующий модулю.resolve.modules/extensions/include/exclude
  • Настроить Webpack с 0
    • Выбор технологии: мобильный терминал | ПК, MPA | SPA, HTML | шаблонизатор, CSS | препроцессор, ES5 | ES6+, Mock, React | Vue, сотрудничество нескольких человек | проект одного человека, ESlint | TSlint, модульное тестирование, представление спецификации
    • Загрузчик обрабатывает CSS, Less, Sass
    • Загрузчик обрабатывает изображения
    • Загрузчик обрабатывает шрифты
    • Многостраничная упаковка конфигурации загрузчика (MPA)
    • source map
    • webpack dev server
    • babel
    • react
    • оптимизация производительности
    • Другие: Парсер, Загрузчик записи, Плагин записи
  • ленивая загрузка
    • разделение кода:code splitting
    • Принцип реализации: Подмодули упакованы отдельно, лениво загружены функциями
    • Vue загружает по запросу
  • Горячее обновление
    • открытый метод: настроитьdevServer, добавить плагин горячего обновленияHotModuleReplacementPlugin
    • Принцип горячего обновления
  • 3 хэша:
    • hash: Пока есть изменение файла во всем проекте, измените его.
    • chunkhash: соответствует записиchunkвнесли изменения, затем сгенерируйте новыйhashзначение, не повлияет на другиеchunk
    • contenthash: при изменении содержимого файла файл будет заменен и создан новый.hash, не затрагивая другие файлы в том же модуле
  • source map: процесс сопоставления скомпилированного, упакованного и сжатого кода с исходным кодом.

2.3 Webpack - Tree Shaking

Назад к содержанию

Адрес статьи:Webpack - Tree Shaking

  • Tree Shaking: вpackage.jsonоткрыть вsideEffects, который преобразует синтаксис шаблона ES6 вimportПоведение импорта файлов помечается как отсутствие побочных эффектов, затем открывается-pпроизводственный режим, позволяющийWebpackпозвонить во внутреннююUglifyJSWebpackPluginдля удаления неиспользуемого кода.
  • dead-code: код не будет выполнен, или результат выполнения не будет использован, или код будет воздействовать только на мертвые переменные, вызываемыеdead-code
  • побочный эффект: если вimportКод, который ведет себя особым образом при импорте, называется кодом с побочными эффектами, такими какpolyfillвлияет на глобальную область
  • статический анализ: синтаксис шаблона ES6 позволяет буквально анализировать код без его выполнения. статический анализTree ShakingОсновы. а такжеrequireЕго необходимо выполнить, чтобы узнать содержание ссылки, и его нельзя оптимизировать с помощью статического анализа.

2.4 Webpack - Scope Hoisting

Назад к содержанию

Адрес статьи:Webpack - Scope Hoisting

  • Scope Hoisting: функция, добавленная Webpack3, увеличение масштаба. Принцип заключается в анализе эталонных отношений модулей, объединении разбросанных модулей в одну и ту же функцию и необходимости синтаксиса шаблона ES6 для статического анализа.

2.5 Простая реализация Webpack

Назад к содержанию

Адрес статьи:Простая реализация Webpack

  • использоватьbabelПолное преобразование кода и создание зависимостей для одного файла
  • Сгенерировать граф зависимостей
  • Сгенерировать окончательный код упаковки

2.6 Оптимизация производительности Webpack

Назад к содержанию

Адрес статьи:Оптимизация производительности веб-пакета

  • resolve.modules: для настройкиWebpackВ каких каталогах искать сторонние модули (node_modules)
  • resolve.extensions: при импорте пути без суффикса файлаWebpackАвтоматически добавит суффикс, чтобы попытаться спросить, существует ли файл, иresolve.extensionsИспользуется для настройки списка используемых суффиксов; по умолчаниюextensions:['js', 'json']
  • resolve.include/excludebabel-loaderНапример, поincludeа такжеexcludeпомогите нам избежатьnode_modulesэти огромные папки]
  • тайник:cache-loaderа такжеuglifyjs-webpack-plugin, запишите результат компиляции в кеш жесткого диска и в следующий раз вытащите кеш напрямую, если файл не изменится
  • мультипрогресс:Happypackа такжеthread-loader, разбейте задачу на несколько подпроцессов для одновременного выполнения и повышения эффективности упаковки.
  • Многопроцессное сжатие:WebpackавтономныйUglifyJSWebpackPluginПлагин сжатия работает в однопоточном режиме, аTerserWebpackPluginМожет выполняться параллельно (многопоточно)
  • Статическое разделение ресурсов:CommonsChunkPluginsПерестраивает каждую сборкуvendor, используется из соображений эффективностиDllPluginСтороннюю библиотеку можно запаковать в файл отдельно, и она будет переупакована только в случае изменения версии самой зависимости
  • Пакетное сжатие ресурсов:
    • JS-сжатие:UglifyJSWebpackPluginа такжеTerserWebpackPlugin
    • Сжатие HTML:HtmlWebpackPlugin
    • Сжатие CSS:MiniCssExtractPlugin
    • Сжатие изображения:ImageWebpackPlugin
    • Сжатие Gzip: не включает изображения
  • Tree Shaking
  • Scope Hoisiting
  • нагрузка по требованию

Три ссылки

Назад к содержанию

В этой серии 79 ссылок.

3.1 Разное

Назад к содержанию

2020:

2019:

2018:

3.2 Babel

Назад к содержанию

3.3 Механизм шаблонов

Назад к содержанию

3.4 Внешний мониторинг

Назад к содержанию

Четыре ссылки на Webpack

Назад к содержанию

Серия ссылок Webpack включает 52 статьи.

4.1 Серия статей Webpack

Назад к содержанию

разное:

2020 Статьи:

2019 Статьи:

2018 Статьи:

2017 Статьи:

4.2 Оптимизация производительности Webpack

Назад к содержанию

2019 Статьи:

2018 Статьи:

2017 Статьи:

4.3 Scope Hoisting

Назад к содержанию

4.4 Tree Shaking

Назад к содержанию

4.5 Ленивая загрузка

Назад к содержанию


репозиторий документации jsliang предоставляетсяЛян ЦзюньронгиспользоватьCreative Commons Attribution-NonCommercial-ShareAlike 4.0 Международная лицензияЛицензия.
на основеGitHub.com/l ian Jun Ron…Создание работ выше.
Права на использование, отличные от разрешенных в настоящем Лицензионном соглашении, могут быть получены отCreative Commons.org/licenses/не…получено в.