На прошлой неделе я посетил хакатон и, чтобы познакомиться с ES6 в сочетании с Angular 1.x, решил использовать именно его. И это было намного проще, чем я ожидал!

Допустим, у нас есть следующая структура приложения

/ приложение

  • / example (главный файл компонента)
    example-controller (компонентный контроллер)
    example-directive (компонентная директива)
    example-service (компонентный сервис)

Мы хотим использовать классы ES6 везде, где это возможно, и я объясню, как это сделать для каждого файла.

Контроллеры и сервисы

Контроллеры и службы проще всего писать на ES6.

пример-контроллер

пример-сервис

Вы могли заметить две вещи. Во-первых, это «экспорт по умолчанию», это означает, что мы можем просто написать

импортировать ExampleService из ‘./example-service/example-service.js’;

Вместо того

импортировать {ExampleService} из "./example-service/example-service.js";

Другая вещь, которую вы могли заметить, - это ExampleService. $ Inject, который сообщает angular, какие зависимости внедрять в наш класс. Вы также можете использовать что-то вроде ngAnnotate, если хотите, чтобы

Директивы

Директивы немного сложнее писать в синтаксисе ES6, потому что Angular ожидает литерал объекта, а не функцию-конструктор. Однако это легко исправить.

пример-директива

Как видите, мы все еще можем использовать передовые методы, такие как controllerAs и синтаксис bindToController, чтобы предотвратить использование области видимости. Контроллер директивы определяется как другой класс.

Определим наш компонент

Теперь, когда мы определили все подкомпоненты нашего файла компонента, мы можем определить их в основном файле.

Как видите, отличается только синтаксис директивы, потому что Angular ожидает литерал объекта, а не функцию-конструктор.

Используйте загрузчик модулей

Мы можем использовать такой пакет, как webpack, чтобы объединить весь код в один пакет. Преимущество использования веб-пакета заключается в том, что мы также можем скомпилировать наш код для ES5 при объединении для поддержки текущих браузеров.

Вы можете найти полный код здесь