HTML Diff
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>