0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>Angular - один из самых популярных фреймворков для разработки приложений на JavaScript и TypeScript. Расскажем о его особенностях, преимуществах и недостатках.</strong></p>
1
<p><strong>Angular - один из самых популярных фреймворков для разработки приложений на JavaScript и TypeScript. Расскажем о его особенностях, преимуществах и недостатках.</strong></p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Что такое Angular и SPA (single-page application)</a></li>
3
<ul><li><a>Что такое Angular и SPA (single-page application)</a></li>
4
<li><a>Преимущества Angular</a></li>
4
<li><a>Преимущества Angular</a></li>
5
<li><a>Недостатки Angular</a></li>
5
<li><a>Недостатки Angular</a></li>
6
<li><a>Как начать работать с Angular</a></li>
6
<li><a>Как начать работать с Angular</a></li>
7
</ul><h2>Что такое Angular и SPA (single-page application)</h2>
7
</ul><h2>Что такое Angular и SPA (single-page application)</h2>
8
<p>Современная веб-разработка во многом построена на фреймворках - своеобразных каркасах для приложений, а также библиотеках - участках кода с готовыми решениями. Их активно используют в том числе и для создания фронтенда - интерфейса сайтов.</p>
8
<p>Современная веб-разработка во многом построена на фреймворках - своеобразных каркасах для приложений, а также библиотеках - участках кода с готовыми решениями. Их активно используют в том числе и для создания фронтенда - интерфейса сайтов.</p>
9
<p>В вакансиях фронтендеров среди прочих требований обычно указывают стек технологий, в которые входят библиотеки и фреймворки. По статистике портала Stack Overflow, Angular входит в пятерку самых популярных.</p>
9
<p>В вакансиях фронтендеров среди прочих требований обычно указывают стек технологий, в которые входят библиотеки и фреймворки. По статистике портала Stack Overflow, Angular входит в пятерку самых популярных.</p>
10
<p>Это фреймворк от компании Google, предназначенный для создания сайтов, работающих по принципу SPA.</p>
10
<p>Это фреймворк от компании Google, предназначенный для создания сайтов, работающих по принципу SPA.</p>
11
<h3>Как SPA-фреймворки изменили разработку</h3>
11
<h3>Как SPA-фреймворки изменили разработку</h3>
12
<p>SPA - аббревиатура от английского “single-page application”, что переводится как “приложения в формате одной страницы”. JavaScript, на котором написан их интерфейс, позволяет странице обновляться динамически, без отправки повторного запроса на сервер.</p>
12
<p>SPA - аббревиатура от английского “single-page application”, что переводится как “приложения в формате одной страницы”. JavaScript, на котором написан их интерфейс, позволяет странице обновляться динамически, без отправки повторного запроса на сервер.</p>
13
<p>Так было не всегда.</p>
13
<p>Так было не всегда.</p>
14
<p>В нулевых сайты работали по другому принципу. Когда пользователь заходил на страницу, браузер отправлял запрос на сервер, а тот отображал нужные данные.</p>
14
<p>В нулевых сайты работали по другому принципу. Когда пользователь заходил на страницу, браузер отправлял запрос на сервер, а тот отображал нужные данные.</p>
15
<p>Когда посетитель сайта нажимал на кнопку или переходил по ссылке, этот процесс повторялся.</p>
15
<p>Когда посетитель сайта нажимал на кнопку или переходил по ссылке, этот процесс повторялся.</p>
16
<p>Современные приложение, работающие по принципу single-page application, действуют иначе. Когда пользователь находится на сайте, сервер подгружает информацию в фоновом режиме.</p>
16
<p>Современные приложение, работающие по принципу single-page application, действуют иначе. Когда пользователь находится на сайте, сервер подгружает информацию в фоновом режиме.</p>
17
<p>За счет этого посетитель получает новые данные без обновления страницы. Например, если мы откроем почту в браузере, нам не нужно будет перезагружать страницу, чтобы увидеть новое письмо. Оно появится там автоматически.</p>
17
<p>За счет этого посетитель получает новые данные без обновления страницы. Например, если мы откроем почту в браузере, нам не нужно будет перезагружать страницу, чтобы увидеть новое письмо. Оно появится там автоматически.</p>
18
<p>Если вы, находясь на этой странице, откроете диалоговое окно и напишите в поддержку, не придется нажимать F5, чтобы увидеть ответ.</p>
18
<p>Если вы, находясь на этой странице, откроете диалоговое окно и напишите в поддержку, не придется нажимать F5, чтобы увидеть ответ.</p>
19
<p>Технология SPA стала настоящим прорывом. Она обеспечила:</p>
19
<p>Технология SPA стала настоящим прорывом. Она обеспечила:</p>
20
<ul><li>Создание красочных интерактивных сайтов. Такие ресурсы имеют отзывчивый интерфейс, который взаимодействует с пользователем через всплывающие окна, анимацию и мгновенные сообщения;</li>
20
<ul><li>Создание красочных интерактивных сайтов. Такие ресурсы имеют отзывчивый интерфейс, который взаимодействует с пользователем через всплывающие окна, анимацию и мгновенные сообщения;</li>
21
<li>Быструю загрузку. Сайты с SPA позволяют пользователям найти нужную информацию без ожидания обновления страниц;</li>
21
<li>Быструю загрузку. Сайты с SPA позволяют пользователям найти нужную информацию без ожидания обновления страниц;</li>
22
<li>Усложнение разработки. Запросы, которые раньше отправляли на сторону сервера, теперь обрабатывает фронтенд сайта. А значит, он стал тяжелее, сложнее и требует больших знаний от разработчика.</li>
22
<li>Усложнение разработки. Запросы, которые раньше отправляли на сторону сервера, теперь обрабатывает фронтенд сайта. А значит, он стал тяжелее, сложнее и требует больших знаний от разработчика.</li>
23
</ul><h3>Что такое Angular</h3>
23
</ul><h3>Что такое Angular</h3>
24
<p>Angular - один из самых востребованных фреймворков для создания SPA-приложений.</p>
24
<p>Angular - один из самых востребованных фреймворков для создания SPA-приложений.</p>
25
<p>Этот продукт распространяют бесплатно, а его исходный код хранят в открытом виде на<a>GitHub</a>. У Angular был предшественник - AngularJS, разработанный в 2009 году.</p>
25
<p>Этот продукт распространяют бесплатно, а его исходный код хранят в открытом виде на<a>GitHub</a>. У Angular был предшественник - AngularJS, разработанный в 2009 году.</p>
26
<p>Несмотря на общие корни, у них нет обратной совместимости. У Angular принципиальная другая архитектура и он написан на TypeScript, а не на JavaScript. Хотя его используют для разработки на обоих языках.</p>
26
<p>Несмотря на общие корни, у них нет обратной совместимости. У Angular принципиальная другая архитектура и он написан на TypeScript, а не на JavaScript. Хотя его используют для разработки на обоих языках.</p>
27
<p>А теперь расскажем об основных частях этого фреймворка.</p>
27
<p>А теперь расскажем об основных частях этого фреймворка.</p>
28
<ul><li>Компоненты</li>
28
<ul><li>Компоненты</li>
29
</ul><p>Основной сущностью в приложениях, написанных на Angular, считают компоненты. Они имеют свой жизненный цикл - работу по нескольким заданным сценариям.</p>
29
</ul><p>Основной сущностью в приложениях, написанных на Angular, считают компоненты. Они имеют свой жизненный цикл - работу по нескольким заданным сценариям.</p>
30
<p>Компонентом в Angular может быть какой-то элемент, выполняющий действие. Например, кнопка или шапка сайта.</p>
30
<p>Компонентом в Angular может быть какой-то элемент, выполняющий действие. Например, кнопка или шапка сайта.</p>
31
<p>Angular позволяет собирать приложение из компонентов, как из кирпичей. Каждый компонент хранят в отдельном файле, к которому можно подключить свои CSS-стили или шаблон структуры в HTML.</p>
31
<p>Angular позволяет собирать приложение из компонентов, как из кирпичей. Каждый компонент хранят в отдельном файле, к которому можно подключить свои CSS-стили или шаблон структуры в HTML.</p>
32
<p>Так разработчики получают самостоятельные блоки интерфейса, прописывая их внешний вид и поведение.</p>
32
<p>Так разработчики получают самостоятельные блоки интерфейса, прописывая их внешний вид и поведение.</p>
33
<ul><li>Модули</li>
33
<ul><li>Модули</li>
34
</ul><p>Эти сущности отвечают за управление компонентами. Модуль может контролировать как все приложение, так и отдельные его части. Обычно есть главный и несколько второстепенных модулей под конкретные задачи. А еще они связывают приложение с браузером или запускают анимацию.</p>
34
</ul><p>Эти сущности отвечают за управление компонентами. Модуль может контролировать как все приложение, так и отдельные его части. Обычно есть главный и несколько второстепенных модулей под конкретные задачи. А еще они связывают приложение с браузером или запускают анимацию.</p>
35
<p>Также модулем будет отдельный код для навигации в приложении или точка входа на сайт.</p>
35
<p>Также модулем будет отдельный код для навигации в приложении или точка входа на сайт.</p>
36
<ul><li>Сервисы</li>
36
<ul><li>Сервисы</li>
37
</ul><p>Их функция - заменять компоненты в более сложных задачах. Сервисы подключают к приложению в виде обычного класса. Они хранят глобальные состояния приложения или играют роль поставщиков данных.</p>
37
</ul><p>Их функция - заменять компоненты в более сложных задачах. Сервисы подключают к приложению в виде обычного класса. Они хранят глобальные состояния приложения или играют роль поставщиков данных.</p>
38
<ul><li>Директивы</li>
38
<ul><li>Директивы</li>
39
</ul><p>Это те же компоненты, но с расширенным функционалом. Директивы используют, когда нужно применить компонент с одной и той же логикой к нескольким частям приложения.</p>
39
</ul><p>Это те же компоненты, но с расширенным функционалом. Директивы используют, когда нужно применить компонент с одной и той же логикой к нескольким частям приложения.</p>
40
<p>Например, с помощью директива можно поменять язык или валюту на всем сайте.</p>
40
<p>Например, с помощью директива можно поменять язык или валюту на всем сайте.</p>
41
<ul><li>Формы</li>
41
<ul><li>Формы</li>
42
</ul><p>Это любая часть приложения, в которую можно ввести какие-либо пользовательские данные. На современных сайтах можно встретить форму регистрации и авторизации, форму оформления заказа или обратной связи.</p>
42
</ul><p>Это любая часть приложения, в которую можно ввести какие-либо пользовательские данные. На современных сайтах можно встретить форму регистрации и авторизации, форму оформления заказа или обратной связи.</p>
43
<p>В Angular есть готовые шаблоны для создания таких блоков. Разработчику не нужно писать их самостоятельно, можно выбрать подходящий и подключить к модулю.</p>
43
<p>В Angular есть готовые шаблоны для создания таких блоков. Разработчику не нужно писать их самостоятельно, можно выбрать подходящий и подключить к модулю.</p>
44
<h2>Преимущества Angular</h2>
44
<h2>Преимущества Angular</h2>
45
<p>Поскольку Angular является одним из самых распространенных фреймворков для создания фронтенда сайтов, это делает его особенно интересным для многих начинающих разработчиков.</p>
45
<p>Поскольку Angular является одним из самых распространенных фреймворков для создания фронтенда сайтов, это делает его особенно интересным для многих начинающих разработчиков.</p>
46
<p>По данным "<a>Хабр.Карьеры</a>" Angular входит в топ-3 навыков, которые работодатели ожидают от разработчиков на JavaScript.</p>
46
<p>По данным "<a>Хабр.Карьеры</a>" Angular входит в топ-3 навыков, которые работодатели ожидают от разработчиков на JavaScript.</p>
47
<p>Средние зарплаты программистов со знанием Angular:</p>
47
<p>Средние зарплаты программистов со знанием Angular:</p>
48
<ul><li>75 000 - для джунов.</li>
48
<ul><li>75 000 - для джунов.</li>
49
<li>171 000 - для мидлов.</li>
49
<li>171 000 - для мидлов.</li>
50
<li>292 000 - для сеньоров.</li>
50
<li>292 000 - для сеньоров.</li>
51
<li>312 000 - для тимлидов.</li>
51
<li>312 000 - для тимлидов.</li>
52
</ul><p>А теперь поговорим о сильных сторонах Angular.</p>
52
</ul><p>А теперь поговорим о сильных сторонах Angular.</p>
53
<ul><li>Модульность</li>
53
<ul><li>Модульность</li>
54
</ul><p>Angular позволяет собирать приложения на основе отдельных компонентов. Каждый из них отвечает за собственный функционал. Это позволяет быстрее и качественнее разрабатывать новые продукты.</p>
54
</ul><p>Angular позволяет собирать приложения на основе отдельных компонентов. Каждый из них отвечает за собственный функционал. Это позволяет быстрее и качественнее разрабатывать новые продукты.</p>
55
<p>Отдельные компоненты легко писать и тестировать изолированно. Это дает возможность внедрять новые элементы, не боясь, что они затронут работу других частей приложения.</p>
55
<p>Отдельные компоненты легко писать и тестировать изолированно. Это дает возможность внедрять новые элементы, не боясь, что они затронут работу других частей приложения.</p>
56
<p>Также код компонентов можно вторично использовать для других частей проекта. Такая архитектура повышает читаемость и позволяет легче вводить в курс дела новых разработчиков.</p>
56
<p>Также код компонентов можно вторично использовать для других частей проекта. Такая архитектура повышает читаемость и позволяет легче вводить в курс дела новых разработчиков.</p>
57
<p>Справедливости ради, компонентную архитектуру использует не только Angular, но и большинство его аналогов.</p>
57
<p>Справедливости ради, компонентную архитектуру использует не только Angular, но и большинство его аналогов.</p>
58
<ul><li>Архитектура MVC</li>
58
<ul><li>Архитектура MVC</li>
59
</ul><p>Angular использует архитектуру "модель-представление-контроллер". В ней модель получает данные от контроллера, представление - данные от модели, и отправляет пользователю, а контроллер - обрабатывает пользовательские действия, проверяет информацию и передает их модели.</p>
59
</ul><p>Angular использует архитектуру "модель-представление-контроллер". В ней модель получает данные от контроллера, представление - данные от модели, и отправляет пользователю, а контроллер - обрабатывает пользовательские действия, проверяет информацию и передает их модели.</p>
60
<p>Это позволяет эффективно разделять логические части приложения. Например, на Angular легко поменять внешний вид, не затрагивая способ обработки данных.</p>
60
<p>Это позволяет эффективно разделять логические части приложения. Например, на Angular легко поменять внешний вид, не затрагивая способ обработки данных.</p>
61
<ul><li>Обилие инструментов разработки</li>
61
<ul><li>Обилие инструментов разработки</li>
62
</ul><p>В Angular программиста ждет большой набор инструментов и библиотек, которые с избытком покрывают потребности самых сложных современных веб-приложений.</p>
62
</ul><p>В Angular программиста ждет большой набор инструментов и библиотек, которые с избытком покрывают потребности самых сложных современных веб-приложений.</p>
63
<p>За счет этого разработчик может не заниматься поиском дополнительных решений или библиотек, а писать код только в рамках инфраструктуры Angular.</p>
63
<p>За счет этого разработчик может не заниматься поиском дополнительных решений или библиотек, а писать код только в рамках инфраструктуры Angular.</p>
64
<p>С помощью этого фреймворка можно создавать различные компоненты приложений, привязывать их друг к другу, настраивать передачу данных, создавать анимированные интерфейсы, работать с формами, HTTP-запросами и т.д.</p>
64
<p>С помощью этого фреймворка можно создавать различные компоненты приложений, привязывать их друг к другу, настраивать передачу данных, создавать анимированные интерфейсы, работать с формами, HTTP-запросами и т.д.</p>
65
<ul><li>Масштабируемость</li>
65
<ul><li>Масштабируемость</li>
66
</ul><p>Компонентная архитектура в сочетании с сильной типизацией от TypeScript помогает этому фреймворку обеспечивать хорошую масштабируемость. Проекты, написанные на нем, легко поддерживать, видоизменять и развивать.</p>
66
</ul><p>Компонентная архитектура в сочетании с сильной типизацией от TypeScript помогает этому фреймворку обеспечивать хорошую масштабируемость. Проекты, написанные на нем, легко поддерживать, видоизменять и развивать.</p>
67
<p>Именно поэтому многие разработчики выбирают Angular, даже если на первой стадии проекта его функционал кажется избыточным. В будущем, когда приложение будет расти, его станет проще дорабатывать.</p>
67
<p>Именно поэтому многие разработчики выбирают Angular, даже если на первой стадии проекта его функционал кажется избыточным. В будущем, когда приложение будет расти, его станет проще дорабатывать.</p>
68
<ul><li>Поддержка</li>
68
<ul><li>Поддержка</li>
69
</ul><p>Angular разработал Google, и эта компания до сих пор поддерживает его, регулярно презентуя новые версии. Это обеспечивает надежность и стабильную работу.</p>
69
</ul><p>Angular разработал Google, и эта компания до сих пор поддерживает его, регулярно презентуя новые версии. Это обеспечивает надежность и стабильную работу.</p>
70
<p>За счет постоянных обновлений, фреймворк активно развивается, привлекает новые проекты и новых разработчиков в свое комьюнити.</p>
70
<p>За счет постоянных обновлений, фреймворк активно развивается, привлекает новые проекты и новых разработчиков в свое комьюнити.</p>
71
<p>Это создает эффект снежного кома: стабильная поддержка от Google делает Angular надежным решением, поэтому все больше компаний используют его и все больше разработчиков изучает. Это пополняет комьюнити экспертами, которые тоже оказывают информационную поддержку менее опытным коллегам.</p>
71
<p>Это создает эффект снежного кома: стабильная поддержка от Google делает Angular надежным решением, поэтому все больше компаний используют его и все больше разработчиков изучает. Это пополняет комьюнити экспертами, которые тоже оказывают информационную поддержку менее опытным коллегам.</p>
72
<p>Сейчас этот фреймворк хорошо<a>задокументирован</a>и имеет подробный style guide - руководство по разработке.</p>
72
<p>Сейчас этот фреймворк хорошо<a>задокументирован</a>и имеет подробный style guide - руководство по разработке.</p>
73
<h2>Недостатки Angular</h2>
73
<h2>Недостатки Angular</h2>
74
<p>Но даже у лучших решений есть свои минусы и этот фреймворк не стал исключением.</p>
74
<p>Но даже у лучших решений есть свои минусы и этот фреймворк не стал исключением.</p>
75
<ul><li>Сложная структура</li>
75
<ul><li>Сложная структура</li>
76
</ul><p>В отличие от ближайших конкурентов - React и Vue.js, у Angular есть много дополнительных структур кроме компонентов. Это делает его более сложным в изучении.</p>
76
</ul><p>В отличие от ближайших конкурентов - React и Vue.js, у Angular есть много дополнительных структур кроме компонентов. Это делает его более сложным в изучении.</p>
77
<p>Фирменная черта Angular - огромное количество готовых решений и дополнительных возможностей. В них бывает сложно разобраться даже опытным разработчикам.</p>
77
<p>Фирменная черта Angular - огромное количество готовых решений и дополнительных возможностей. В них бывает сложно разобраться даже опытным разработчикам.</p>
78
<p>Есть мнение, что для небольших проектов, которые не планируют развитие, он слишком перегруженный и сложный. Но нужно учитывать, что обилие готовых решений придает Angular гибкость и масштабируемость.</p>
78
<p>Есть мнение, что для небольших проектов, которые не планируют развитие, он слишком перегруженный и сложный. Но нужно учитывать, что обилие готовых решений придает Angular гибкость и масштабируемость.</p>
79
<ul><li>TypeScript</li>
79
<ul><li>TypeScript</li>
80
</ul><p>Angular написан на TypeScript - это расширенная версия языка JavaScript, предполагающая строгую типизацию и автоматическую проверку свойств. Он позволяет избавиться от многих проблем, характерных для JS.</p>
80
</ul><p>Angular написан на TypeScript - это расширенная версия языка JavaScript, предполагающая строгую типизацию и автоматическую проверку свойств. Он позволяет избавиться от многих проблем, характерных для JS.</p>
81
<p>Работать с Angular можно и на чистом JavaScript, но для изучения многих материалов также может потребоваться TypeScript. Это ставит дополнительный барьер для начинающих. Однако он вполне преодолимый, поскольку TypeScript - не другой язык программирования, а расширение JS.</p>
81
<p>Работать с Angular можно и на чистом JavaScript, но для изучения многих материалов также может потребоваться TypeScript. Это ставит дополнительный барьер для начинающих. Однако он вполне преодолимый, поскольку TypeScript - не другой язык программирования, а расширение JS.</p>
82
<h2>Как начать работать с Angular</h2>
82
<h2>Как начать работать с Angular</h2>
83
<p>Angular изучают как один из фреймворков для фронтенда. То есть приступать к нему нужно уже имея представление об основах программирования.</p>
83
<p>Angular изучают как один из фреймворков для фронтенда. То есть приступать к нему нужно уже имея представление об основах программирования.</p>
84
<p>Что нужно знать, прежде чем учить этот фреймворк:</p>
84
<p>Что нужно знать, прежде чем учить этот фреймворк:</p>
85
<ul><li>JavaScript и основы TypeScript - нужно уметь писать код и владеть базовыми знаниями в программировании;</li>
85
<ul><li>JavaScript и основы TypeScript - нужно уметь писать код и владеть базовыми знаниями в программировании;</li>
86
<li>HTML и CSS - язык разметки и каскадные таблицы стилей. Нужно знать основы верстки веб-страниц;</li>
86
<li>HTML и CSS - язык разметки и каскадные таблицы стилей. Нужно знать основы верстки веб-страниц;</li>
87
<li>Git и GitHub - системы контроля версий используют для хранения кода и совместной работы, необходимо уметь применять эти базовые инструменты разработчика;</li>
87
<li>Git и GitHub - системы контроля версий используют для хранения кода и совместной работы, необходимо уметь применять эти базовые инструменты разработчика;</li>
88
<li>Основы веб-разработки - нужно понимать, как работает протокол HTTP и DOM API, из чего состоит архитектура фронтенда.</li>
88
<li>Основы веб-разработки - нужно понимать, как работает протокол HTTP и DOM API, из чего состоит архитектура фронтенда.</li>
89
</ul><p>Для начала работы с этим фреймворком потребуется установить<a>nodejs</a>. Затем рекомендуют скачать и поставить<a>Angular CLI</a>- консольный интерфейс этого фреймворка.</p>
89
</ul><p>Для начала работы с этим фреймворком потребуется установить<a>nodejs</a>. Затем рекомендуют скачать и поставить<a>Angular CLI</a>- консольный интерфейс этого фреймворка.</p>