Skip to content

Список ресурсов по Angular на русском

Notifications You must be signed in to change notification settings

jamaks/angular-awesome-list

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 

Repository files navigation

Awesome Angular

Awesome Angular Awesome TipeIO Awesome devarchy.com

Здесь вы найдете список полезных репозиториев, стартеры, примеры, учебные пособия, компоненты, модули, видеоролики и все остальное причастное к экосистеме Angular. А также вы можете подписаться на наш чат в телеграмме:

Angular-RU

Current Angular version:

npm version

Current Browser support for Angular:

Sauce Test Status

Содержание:


Полезные книги

Книги о программировании для разного уровня специалистов. Все перечисленные ниже книги являются переводом с английского, поэтому по возможности рекомендуем читать их в оригинале.

Чистый код

О том, как правильно писать чистый и понятный код, какие приемы рефакторинга существуют.

Паттерны проектирования

Подробное описание популярных паттернов проектирования и примеры их использования.

Чистая архитектура

Введение в чистую архитектуру, полезна для больших проектов.

Angular

Angular - это платформа для разработки мобильных и десктопных веб-приложений.

Карта развития

img

Официальные ресурсы

Новости в twitter

Данный список хорош тем, что благодаря нему, вы будете в курсе основных событий.

Angular Team (эксперты из команды Angular)
Остальные известные эксперты:
Сообщества:
Митапы:

Этот список далеко не полный...

Сообщества


Серверный рендеринг


Cheatsheet (чит-лист)


UI библиотеки

Material Design

Other Design


Важные особенности

Компоненты

Компонент управляет отображением представления на экране, в ее основе используется Shadow DOM по умолчанию (для создания инкапсулированного визуального поведения). Как правило, компоненты используются для создания простого виджета в пользовательском интерфейсе, в то же время они могут представлять из себя набор еще более простых компонентов внутри себя (для увеличения абстракции и создания простых функциональных виджетов внутри приложения).

@Component({
  selector: 'html-name-element'
})
export class MyComponent {
  // ...
}

Шаблоны

Шаблон - это ваша html-разметка, в которой вы можете описывать ваши взаимодействия с DOM на основе модели данных и событий вашего класса компонента (в примере, контроллер MyComponent).

@Component({
 templateUrl: 'my.component.html'
})
export class MyComponent {
 
  public title: string = "Hello world";
  
  // ..

}
<!-- my.component.html -->
<p>
  Интерполяция: {{ title }},  
  или так:      {{ this.title }}
</p>

Обнаружение изменений

Каждый компонент имеет свой собственный детектор изменений, который гарантирует проверку привязок данных, определенных шаблоне.

Внедрение зависимостей

Внедрение зависимостей (англ. Dependency Injection) — это композиция структурных шаблонов проектирования, при которой за каждую функцию приложения отвечает один, условно независимый объект (сервис), который может иметь необходимость использовать другие объекты (зависимости), известные ему интерфейсами. Зависимости передаются (внедряются) сервису в момент его создания.

// logger.service.ts
@Injectable()
export class LoggerService {
  // ..
  
  public get trace() {
    return console.debug.bind(console);
  }
  
}
// my-component.component.ts
@Component({ /* .. */ })
export class MyComponent {
 
  constructor(private logger: LoggerService) {
    logger.trace('Init MyComponent');
  }

}

Директивы

Директивы позволяют получать прямой доступ к DOM ваших элементов. Они бывают двух видов: структурные и атрибутные.

Атрибутная директива:

@Directive({
  selector: '[bold]'
})
export class BoldDirective {
     
    constructor(private elementRef: ElementRef){
        this.elementRef.nativeElement.style.fontWeight = "bold";
    }
}

Здесь внедряется сервис "ElementRef". Он представляет ссылку на элемент, к которому будет применяться директива:

<!-- my-component.component.html -->
<p bold>Hello world</p>

Структурные директивы:

Структурные директивы изменяют структуру DOM с помощью добавления или удаления html-элементов. Существует минимум три встроенных структурных директивы: ngIf, ngSwitch и ngFor.

@Component({ /* ... */ })
export class AppComponent {
    // ..
    
    public items = ["Apple iPhone", "Huawei Mate", "Samsung Galaxy", "Motorola Moto Z"];
}
<!-- my-component.component.html -->
<ul>
  <li *ngFor="let item of items">{{item}}</li>
</ul>

Пайпы

Пайп (pipe) представляет собой особый обработчик, который позволяет форматировать отображаемые значения

// my-component.component.ts
@Component({ /* .. */ })
export class MyComponent {
  public fields = [ { id: 1 }, { id: 2 } ];
}
<!-- my-component.component.html -->
Читаемый вывод объекта: 
<pre> {{ fields | json }} </pre>

Помимо стандартных, вы можете писать собственные

@Pipe({ name: 'factorial' })
export class FactorialPipe implements PipeTransform {
  transform(value: number, args?: any): number {
    if (value <= 0) return 0;
     
    let result = 1;
    for (let i = 1; i <= value; i++) {
        result = result * i;
    }
    
    return result;
  }
}
// my-component.component.ts
@Component({ /* .. */ })
export class MyComponent {
  public x = 5;
}
<!-- my-component.component.html -->
Факториал числа {{ x }} равен {{ x | factorial }}
<!-- Факториал числа 5 равен 120 -->

Web Workers

Поддержка Web Worker в Angular предназначена для упрощенного распараллеливания в вашем приложении. Когда ваше приложение запускается, Angular проводит всю основную работу по обработке вашей логики в отдельных потоках, ядро выполняет вычисление в своем рабочем потоке, в то время как другие функции могут и вовсе выполняться не в потоках.

HTTP

Самый распространенный способ получить данные от web-служб — это через HttpClient сервис доступный для внедрения зависимостей в ваших компонентах. Angular HttpClient довольно прост. Все, что нам нужно сделать, это вызвать метода get и передать ему url. Данный метод get возвращает объект Observable. Этот класс является частью библиотеки rxjs, которая используется во многих местах Angular'а.

// rest.service.ts
@Injectable()
export class RestService {

  constructor(private httpClient: HttpClient) {}
  
  public getByObservable(url: string): Observable<any> {
      return this.httpClient.get(url);
  }
  
  public getByPromise(url: string): Promise<any> {
      return this.httpClient.get(url).toPromise();
  }
 
}

Подобно обещанию (Promise), наблюдатель (Observable) не содержит в себе сразу значения. Вместо этого у него есть метод подписки(subscribe), где мы можем зарегистрировать обратный вызов(callback). Этот callback вызывается, как только результат будет доступен. Помимо обещания, Observable может вернуть более одного значения. Вы можете вернуть себе поток результатов. Но это не имеет значения в данном случае. В нашем случае Observable возвращает только одно значение.

// my-component.component.ts
@Component({ /* .. */ })
export class MyComponent {

  constructor(private rest: RestService) {}
  
  // Observable classic examples
  public getFields() {
    this.rest.getByObservable('http://anyurl.com').subscibe(value =>{
      // value - результат
    },
    error => {
      // error - объект ошибки
    });
  }
  
  // Promise classic examples
  public async getAsyncField() {
    try {
      // value - результат
      const value = await this.rest.getByPromise('http://anyurl.com');
    } catch (error) {
      // error - объект ошибки
    }
  }
  
}

Роутинг

Тестирование

Ahead-of-Time компиляция


Angular CLI

Angular CLI - инструмент для быстрой разработки приложений на Angular


Dev Tools

  • @compodoc/ngd-cli - Просмотр зависимостей в Angular
  • angular-playground - Scenario Driven Development
  • @ngrx/store-devtools - Инструменты разработчика для @ngrx/store.
  • angular-prettyjson - Улучшенный вывод объектов в шаблоне для отладки (директива json)
  • Augury - Chrome расширение разработчика для отладки
  • angular-webpack-config - Заготовленная Webpack конфигурация для быстрого старта

Starter Kit


Webpack стартеры


Angular Universal

Universal (изоморфный) - рендеринг приложений Angular на серверной стороне

Universal (основные ресурсы)

Основные источники

  • universal-starter - Angular Universal стартер от @Angular-Class
  • ng-seed/universal - Angular Universal стартер с Webpack, dev/prod modes, DLLs, AoT compilation, HMR, SCSS compilation, lazy loading, config, cache, i18n, SEO, TSLint/codelyzer

Публикации


Видеоуроки


Стайл-гайды


Angular Connect конференция


Книги


Онлайн тренинги


Подборка статей


Интеграции


Подборка компонентов

  • Material 2 - Компоненты от Material Design
  • NG ZORRO - Enterprise компоненты, основанные на Ant Design
  • Element Angular - Element Design компоненты
  • ng-bootstrap Нативный Bootstrap для Angular
  • ng-charts Компоненты диаграмм основанные на Chart.js
  • ng-dragula Drag and Drop
  • ng-file-upload Простая директива для загрузки файлов
  • ng-handsontable Excel-подобная таблица (data grid / spreadsheet)
  • ng-markdown Angular Markdown компонент
  • ng-select Angular компонент для select
  • ng-safe-img Простая директива для обработки событий ошибки загрузки картинок (img)
  • ng-table Простой компонент таблицы с сортировкой и фильтрацией
  • ng-smart-table Smart-компонент таблицы
  • ng-bs Директивы для Bootstrap
  • ng-lightning Компоненты основанные на Lightning Design System
  • ag-grid Улучшенный Datagrid
  • angular-query-builder Усовершенствованные запросы на основе jquery QueryBuilder
  • angular-grid drag/drop/resize сетка
  • angular-fontawesome Angular компоненты и директивы для Fontawesome
  • angular-google-maps Angular директивы для Google Maps
  • angular-cesium Создание map web apps с использованием Cesium
  • ng-radio-group Angular директивы для radio/checkbox
  • ng-dropdown Выпадающее меню на основе bootstrap 3
  • angular-multiselect-dropdown Выпадающее меню (multiselect)
  • ng-progress-bar Простой progress bar
  • ng-tabs Tabs control для angular
  • ng-modal Модальные окна
  • ng-sheet Динамические компоненты меню
  • ng-paginator Контроллы пагинации для angular
  • fuel-ui Bootstrap 4 компоненты и директивы
  • prime-ng Коллекция Primeng-компонентов
  • ng-ace Ace editor на Angular
  • ng-fontawesome Простая директива для fontawesome
  • ng-sweetalert2 Обертка над sweetalert2
  • angular-text-mask Angular input маска (директива)
  • angular-imask Еще одна input маска (директива)
  • ng-fullpage Fullpage скролл на основе fullPage.js
  • file-droppa Простой загрузчик файлов на основе drag and drop
  • ngx-img-fallback Placeholder загрузки для image и image error
  • angular-busy Индекатор загрузки для Promise, Observable's
  • ng-pdf-viewer PDF viewer на Angular
  • Covalent - UI набор компонентов на основе Material Design
  • ng2-alfresco-core - Alfresco набор компонентов
  • angular-infinite-scroll - Бесконечный скролл на Angular
  • ng-card - Card-компоненты
  • Wijmo 5 - Набор компонентов пользовательского интерфейса для Angular
  • ng-swipeable-card - Перетаскиваемые card-компонентыы
  • ngSemantic - Компоненты пользовательского интерфейса на основе Semantic UI
  • vmware clarity - Clarity набор компонентов от VMware
  • Teradata covalent - Набор компонентов пользовательского интерфейса на основе materialize
  • ng-quill-editor - Quill editor компонент
  • ngx-charts - Настраиваемый Charting-фреймворк на Angular
  • ngx-datatable Функциональный и легкий компонент таблиц данных
  • ngx-ui - Библиотека стилей и компонентов ngx-ui
  • Cloudinary - Angular SDK для управления изображениями и видео в облаке
  • angular-simple-countdown - Простой countdown
  • ng-animate - Коллекция крутых анимаций
  • lottie-angular - After Effects анимации для Angular
  • ngx-restangular - Restangular сервис
  • ngfb-sortable-table - Angular Firebase Table компоненты
  • angular-split Angular split компонент
  • od-virtualscroll Бесконечный скролл на Observable
  • angular-froala-wysiwyg WYSIWYG HTML Editor на Angular
  • ngx-meta - Утилита Dynamic page для Angular Universal
  • ng-meta - Динамические meta для SEO

Пайпы (pipes)

  • fuel-ui - OrderBy и Range, портированные из AngularJS 1.x в Angular
  • ngx-filter-pipe Пайп (pipe) для фильтрации массивов
  • ngx-pipes набор полезных пайпов для Angular
  • ngx-order-pipe OrderBy - сортировка коллекций
  • angular2-camelcase Пайп для преобразования строк в camelCase
  • angular-pipes - Используем крутые пайпы
  • ngx-pipes - Пайпы без единой зависимости
  • ng-pipes - Набор полезных пайпов
  • angular-linky - Linky пайп

Структуры данных и манипуляции состоянием

  • angular-localstorage - Декоратор для автоматического сохранения и восстановления полей классов из LocalStorage
  • ng-webstorage - LocalStorage и SessionStorage менеджер
  • ng-storage localStorage и sessionStorage обертки
  • angular-safeguard - Обертка над cookies/sessionStorage/localStorage
  • @ngx-cache/core - Умное кеширование в Angular
  • angular-cookie Библиотека имплеминтирующая из AngularJS 1.x $cookies-сервис в Angular
  • ng-http-cache - Кеширование http-запросов

Роутинг

  • ng-breadcrumb - генератор иерархии маршрутизации на основе вложенного роутинга
  • ng-page-transition - Простой компонент с анимированными переходами при имезении маршрутизации
  • @ngx-i18n-router/core - Инструмент интернационализации роутинга

Валидация


Логгирование


i18n

  • @ngx-translate/core - Удобная библиотека для работы с файлами локализаций (i18n)
  • @angular-ru/ngx-i18n-combine - Объединение файлов i18n из компонентов и общих файлы для ваших локализаций (json, ts, js, jsx, tsx)
  • angular-l10n - Библиот для перевода сообщений, дат и цифр
  • @ngx-universal/translate-loader - Лоадер, который обеспечивает переводы на стороне браузер или сервера

Производительность

  • angular-performance-checklist - чеклист советов по улучшению производительности приложений на Angular
  • @angularclass/idle-preload - Idle Preload для предварительной загрузки асинхронных маршрутов

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

  • ng-lazyload-image - Ленивая подргузка изображений на Agular
  • ng-image-lazy-load - Лоадер для ленивой загрузки изображений

Лоадеры

  • gulp-inline-ng-template - Gulp-плагин для встраивания HTML и CSS в @Component-декоратор.
  • angular-template-loader - Объединяет все html и css в единое целое при компиляции компонентов
  • angular-router-loader - Webpack лоадер, который позволяет загружать модули на основе строки с помощью маршрутизатора

Примеры приложений

Генераторы


Инструменты документации

  • Storybook: "Cреда разработки, которую вы полюбите"
  • Compodoc: Отличный инструмент для создания документации вашего приложения
  • AngularDoc: Веб-сайт, отображающий "Архитектуру и визуализацию Angular-приложения"
  • NgModule-Viz: Визуализация связей между NgModules и зависимостями в Angular

TodoMVC


Расширения для IDE's


TypeScript

TypeScript позволяет вам писать код на JavaScript так, как вы этого хотите.

TypeScript является типизированным надмножеством JavaScript, который компилируется в JavaScript.

TypeScript (основные ресурсы)

Основные источники


Dart

Dart — язык программирования, созданный Google. Dart позиционируется в качестве замены/альтернативы JavaScript. Dart - это масштабируемый язык программирования с открытым исходным кодом, с качественными библиотеками и рантаймом, для создания веб-приложений, серверов и мобильных приложений.

Основные источники


Babel

Babel – предназначен для транспиляции современного JS кода в код работающий на предыдущем стандарте, к примеру ES5.

Babel (основные ресурсы)

Angular Online Playground

Основные источники

Babel плагины


ES5

ECMAScript включает в себя структурированные, динамические, функциональные и прототипные фичи

Основные источники

angular-es5-starter-kit Пример Angular приложения на ES5


Ionic

Ionic - это прекрасный SDK с открытым исходным кодом для разработки гибридных мобильных приложений.

Ionic (основные ресурсы)


Meteor

Meteor — веб-платформа на языке JavaScript, предназначенная для разработки Web-приложений реального времени.

Meteor (основные ресурсы)

Основные источники


NativeScript

Создайвайте действительно нативные iOS, Android приложения на JS (TS) + CSS. NativeScript - кроссплатформенный фреймворк с открытым исходным кодом.

NativeScript (основные ресурсы)

Основные источники


React Native

React Native — это фреймворк для создания нативно отображаемых iOS- и Android-приложений.

React Native (основные ресурсы)


Haxe

Haxe — это высокоуровневый мультиплатформенный язык программирования с открытым исходным кодом, а также компилятор, с помощью которого можно создавать приложения и генерировать исходный код для разных платформ, сохраняя единую кодовую базу. Haxe включает в себя функциональность, поддерживаемую на всех платформах, например: числовые типы данных, строки, массивы, а также поддержку некоторых файловых форматов (xml, zip). Haxe также включает в себя поддержку платформо-специфических API для Adobe Flash, C++, PHP и других языков. Код, написанный на языке Haxe, может быть транслирован в код ActionScript 3, JavaScript, Java, C#, C++, Python, Lua, PHP, Apache CGI, а также в приложение Node.js

Основные источники


Scala

Scala — мультипарадигмальный язык программирования, спроектированный кратким и типобезопасным для простого и быстрого создания компонентного программного обеспечения, сочетающий возможности функционального и объектно-ориентированного программирования. Язык программирования Scala является «симбиозом» Java и C#.

Основные источники

  • play-angular - серверный рендеринг Angular на Scala

C#

C# — объектно-ориентированный язык программирования. Является языком разработки приложений для платформы Microsoft .NET Framework.


Java

Java — сильно типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle). Приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, с помощью виртуальной Java-машины

Основные источники


Kotlin

Kotlin — статически типизированный язык программирования, работающий поверх JVM и разрабатываемый компанией JetBrains. Компилируется также в JavaScript и на другие платформы через инфраструктуру LLVM.


Bit

Представьте, что все ваши компоненты доступны вам в облаке, и все это доступно для вашей команды и синхронизировано во всех ваших проектах. Это и есть Bit.


NgRx


Security

About

Список ресурсов по Angular на русском

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published