Рубрики
Без рубрики

Как связывать угловые 2 с рулоном

В этой статье я поделился своими выводами и проводим вас через проект запуска, который я построил. Надеюсь, другие могут видеть преимущества пакета с роутом.

Автор оригинала: Steve Belovarich.

Инструменты, как Брасифицировать и WebPack Были достаточно популярны среди инженеров пользовательских интернет-пользователей, чтобы объединить их исходный код. Роллап Это довольно новое – и, честно говоря, дыхание свежего воздуха после перемещения моего углового уровня 2 исходного кода из альфа до RC. По пути я попробовал каждый возможным внесением стабильной среды разработки и производства от использования Gulp, SystemJS, JSPM, угловой CLI, а затем WebPack и теперь свернут.

В этой статье я поделился своими выводами и проводим вас через проект запуска, который я построил. Надеюсь, другие могут видеть преимущества пакета с роутом.

Клон Angular2-Rollup Репозиторий, чтобы получить код, описанный в этой статье. Следуйте инструкциям в Readme этого хранилища для получения среды разработки и запуска. Оптимизированная связка, который создает роллеп, может отрицать необходимость ленивой нагрузки; В зависимости от масштаба вашего приложения.

Rollup имеет много преимуществ

Я мог отвлечься в плюсы и минусы всех этих вариантов, но это, вероятно, является другой статьей само по себе. Этот пост посвящен вставать и бегать с рулоном. Но сначала давайте найму на мгновение сосредоточиться на некоторых преимуществах свертывания соревнований.

  • Пакет легче читать, чем браурифицировать и WebPack, который пригодится для отладки в браузере
  • Rollup использует процесс, называемый деревом встряхивая, что приводит к высокооптимированному расслоению
  • Настройте пакет с минимальным кодом, написанным в ES2015.
  • Окружающая среда для разработки близка к зеркальным производственным средам
  • Угловой 2 рулонного плагина поддерживает встроенные CSS и HTML

Есть некоторые недостатки

  • NGModule не может быть ленивым, вырванным из коробки
  • Нехватка документации

До сих пор не поддерживает расщепление кода, что необходимо использовать ленивую загрузку NGModule найдено в угловых 2 RC5 и выше. Как написать эту статью, Проблема открыта на репозитории Rollup Github. Мы можем увидеть эту функцию в более позднем выпуске ролака или, возможно, через плагин, построенный сообществом развития.

Встряхнуть это дерево

Самое большое преимущество использования Rollup против соревнований – встряхивание деревьев. Встряхивание деревьев означает, что исключая неиспользуемые части вашей кодовой базы из пучка. Дерево-встряхивание работает только с модулями ES2015, потому что контент статичен. Модули ES5 часто имеют переключение API и содержание, что делает их действительно трудно дерево встряхнуть. До тех пор, пока код написан в ES2015, он может быть деревом, встряхивая рулетом, и все неиспользуемые части кодовой базы выпадаются из пучка. Для производственной среды вы также можете использовать инструменты, такие как UGLIFY, чтобы добывать и оптимизировать пакет еще больше. @ Угловой/компилятор-CLI Также предоставляет возможность предварительно предложить ваше приложение вместо в браузере, что приводит к еще меньшему пакету, потому что теперь вам не нужно упаковать компилятор с вашим кодом. Вы можете узнать больше о NGC здесь Отказ

Обратитесь!

Роллап создает высокооптимизированные пакеты через процесс встряхивания деревьев.

TS/ES2015 => Tree Shaking => ES2015 Bundle 

Затем мы можем использовать любой инструмент для транситирования пучка ES2015. Многие угловые 2 инженера используют Tymdercript транпировать, так что давайте добавим его в процесс:

TS/ES2015 => Tree Shaking => ES2015 Bundle => tsc => ES5 / ES3

Этот процесс приводит к высокооптимированному комплекту. Когда я ухудшил код, который Typeycript транслирован на ES5, размер файла сократился еще 50%. Гзапирование заминированного пакета привело к файлу 28 КБ! Удивительно, что это приложение может стать еще меньше, представляя угловой компилятор.

Rollup Bundle 310kb => Uglify 135kb => gzip 28kb

Результаты могут варьироваться для вашего исходного кода, но я не был бы удивлен, если вы видите падение размера файла для Bundle Very WebPack.

Как начать с скат

В этом примере мы собираемся отделить конфигурацию Rollup в два файла: один для поставщика кода и другой для углового источника приложения. Результат работы Роллап В командной строке будут два пакета: Vendor.js и bundle.js Отказ

Строительный код продавца

Вот как выглядит то, как выглядит файл конфигурации поставщика. Этот файл должен быть размещен в корневом каталоге проекта. Пояснение ниже.

// rollup.config.vendor.js
import alias from 'rollup-plugin-alias';
import typescript from 'rollup-plugin-typescript';
import resolve from 'rollup-plugin-node-resolve';

export default {
 entry: 'src/vendor.ts',
 dest: 'dist/vendor.es2015.js',
 format: 'iife',
 moduleName: 'vendor',
 plugins: [
   typescript(),
   alias({ rxjs: __dirname + '/node_modules/rxjs-es' }),
   resolve({ jsnext: true,
             main: true,
             browser: true }),
 ]
}

В первых нескольких линиях Rollup.config.vendor.js Мы импортируем три плагина, которые устанавливаются через NPM. Rollup полагается на сообщество разработчика, чтобы сделать плагины Отказ

  • Plotup-плагин-псевдоним Позволяет вам псевдоним модулей из одного модуля на другой. Это один из способов борьбы с проблемой ссылки на ссылку на код ES5 в вашем коде TS или ES6. псевдоним () называется в Массив плагинов позже в файле. Мы используем его на псевдоним версии RXJS ES2015 на все ссылки RXJS в нашем проекте.
  • Plotup-Plugin-Tymdercript Плагин позволяет свертывать на анализ TyerkScript Code.
  • Rollupp-плагин-узел-узел позволяет прокатировать, чтобы найти модули с использованием алгоритма разрешения узла, для использования сторонних модулей в node_modules Отказ

Обратите внимание на экспорт конфигурации на Объект который содержит фактическую конфигурацию. Это Объект имеет три важных свойства:

 entry: 'src/vendor.ts',
 dest: 'dist/vendor.es2015.js',
 format: 'iife'

Вход равно Строка Это представляет путь к максимальной самой начальной точке нашего дерева кода, мы хотим свернуть на совокупность в комплект. Точка входа этого поставщика Config на самом деле плоская. Но когда мы пишем конфигурацию для нашего исходного кода нашего приложения, точка входа будет .ts Файл, который загрузит наше приложение, которое находится в верхней части дерева компонентов.

dest Это путь к каталогу, в котором мы хотим, чтобы пучок компилировал наряду с именем файла пучка ES2015, который будет создан. Файл будет забрать TSC и транспортирован до ES5 по Typescript. Vendor.es2015.js можно рассматривать как временный файл и, вероятно, должен быть .гипитана Отказ

Формат Пакета в этом случае будет немедленно вызываемая функциональная экспрессия или IIFE Отказ

Idife.

Использование IIFE имеет несколько преимуществ и некоторых побочных эффектов, когда свертывание может найти зависимость, которая ссылается в исходном коде. Скатал будет принимать зависимость и находится на окно Затем введите его в IIFE. Это только одна из причин, чтобы быть явным при определении ваших зависимостей с помощью свертывания, но и спасатель, если нам приходится жесткий код зависимости поставщика в Loading...

Обратите внимание, как Reflect.js and zone.js включены в