Ajax запрос что это: Введение в AJAX и COMET

Что такое AJAX и для чего он нужен — Журнал «Код»

Когда мы делали форму обратной связи на сайте, то она работала так:

  • вы вводите сообщение и нажимаете «отправить»;
  • загружается новая страница с подтверждением отправки.

Часто это неудобно: хочется оставить посетителя на странице, а не показывать что-то новое. Чтобы сделать именно так, используют AJAX.

AJAX (программисты называют его «аякс») — это сокращение от Asynchronous Javascript and XML, а на русский это переводится как «Асинхронный JavaScript и XML». Смысл здесь — в асинхронности действий браузера и сервера. Разберём эти понятия. 

Синхронные запросы

Обычные запросы к серверу, чтобы получить и сформировать страницу, работают так:

  1. Посетитель нажимает в форме обратной связи кнопку «Отправить».
  2. Браузер видит, что по кнопке нужно отправить запрос на сервер. Он пакует запрос и отправляет. 
  3. Сервер получает запрос, обрабатывает и даёт ответ в виде новой веб-страницы.  
  4. Браузер загружает эту новую страницу с нуля. На ней уже все нужные пользователю данные, но есть ощущение «вспышки»: ты был на одной странице, потом экран побелел, и ты оказался на новой странице. 

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

Именно так работает наша форма обратной связи: вы нажимаете на кнопку и браузер, чтобы показать новые данные, начинает загружать новую страницу. Но есть и другой способ. 

Асинхронные запросы

AJAX работает иначе: вместо того чтобы синхронно загружать новые данные с новой страницей, он запрашивает у сервера недостающую информацию и добавляет её на страницу. А сама страница не перезагружается.

В нашем примере с формой AJAX будет работать так:

  1. Посетитель нажимает в форме обратной связи кнопку «Отправить».
  2. Браузер запускает скрипт, привязанный к кнопке.
  3. Этот скрипт отправляет запрос на сервер и получает в ответ новую порцию информации от сервера. Страница не перезагружается, всё происходит внутри скрипта.
  4. Скрипт смотрит, что ответил сервер, и вживляет новую информацию в старую страницу. 
  5. Страница не перезагрузилась, посетитель остался там же, где и был, только с новыми данными.

Примеры таких запросов: 

  • Получить список новых сообщений в чате, не перезагружая весь чат. 
  • Подгрузить новых товаров на витрину магазина, не перезагружая витрину.
  • Получить новые рекламные баннеры на странице, не заставляя пользователя перезагружать страницу. 
  • Получить новые сообщения на стене (Дуров, верни!), не дожидаясь, пока пользователь сам её перезагрузит. (Стена, дети, это то, как раньше называлась лента.)
  • Ютуб этим пользуется, чтобы свернуть видео в маленький плеер в углу. 
  • Яндекс — чтобы показать поисковые подсказки. 
  • Службы доставки — чтобы в режиме реального времени показывать статус заказа.
  • Бесконечные ленты в соцсетях — тоже отсюда. Когда вы доскролливаете до конца, на сервер улетает новый AJAX-запрос, и в ответ приходит новый контент.

Как устроен AJAX

Основа AJAX — объект XMLHttpRequest, который и отвечает за все запросы. Раньше его поддерживали не все браузеры, поэтому нужно было подключить отдельно библиотеку jQuery, в которой этот объект есть. Сейчас почти все браузеры научились поддерживать этот объект напрямую.

Вся магия асинхронных запросов AJAX основана на работе с DOM-объектами страницы в браузере:

  • Когда браузер получает исходный код страницы, он внутри себя строит много виртуальных элементов на основе этого кода: заголовки, картинки, абзацы, ссылки и всё остальное. 
  • К каждому элементу модели можно обратиться отдельно, чтобы поменять его свойства или содержимое. Например, через JavaScript можно поменять текст в заголовке или перекрасить фон страницы, не перезагружая страницу.
  • JavaScript делает запрос на сервер, получает ответ и дальше творит со страницей то, что нужно, в зависимости от самой программы. Отправить запрос и получить ответ ничем принципиально не отличается от чтения и записи переменных.  

Плюсы и минусы AJAX

✅ Удобство для посетителя и быстрый интерфейс. Гораздо лучше видеть моментальное обновление данных на той же странице, чем загружать новую при каждой новой порции данных. 

✅ Меньше трафика. Если нужно показать что-то новое, браузер получает с сервера не всю страницу целиком, а только то, чего нет на исходной странице.

✅ Можно снизить нагрузку на сервер. Если сайт формирует все страницы на лету, например, с помощью PHP, то можно один раз загрузить стандартные части страницы (шапку, меню и подвал), а остальное подгружать по необходимости. Меньше данных в запросе — быстрее ответ от сервера и базы.

Нужен включённый JavaScript. Если в браузере выключить JS, то ничего не сработает — данные не придут с сервера и интерактивной страницы не получится.

Поисковые движки не видят AJAX-контент. Если содержимое страницы формируется на AJAX-запросах, то поисковые роботы не смогут его увидеть. Смысл в том, что поисковики смотрят на исходный код, а не на то, что приходит с сервера. Поисковая оптимизация таких страниц — головная боль для сеошника.

Что такое SEO

Растёт сложность проекта. Работа с такими запросами требует определённой квалификации от программиста, чтобы он мог предусмотреть разные нештатные ситуации и обработать их заранее. А ещё нужно продумать бэкенд — поведение сервера в ответ на разные запросы.

Ошибки при нестабильной связи. Если интернет работает с перебоями, то AJAX может не дождаться ответа от сервера или не сможет отправить свой запрос. В итоге логика работы страницы может нарушиться — в итоге придётся перезагружать её полностью и начинать работу с нуля.

Что дальше

Чтобы посмотреть, как AJAX работает и показывает новые данные без перезагрузки, сделаем пару небольших проектов. Заодно попрактикуемся в PHP — он будет отвечать за новые данные с сервера.

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Олег Вешкурцев

Что такое AJAX простыми словами с примерами

Данная статья написана программистами для не программистов. Объясняем простыми словами сложные для понимания технологии.

Что такое AJAX

AJAX (на англ. Asynchronous Javascript and XML или на русском сленговом “аякс”) – технология, позволяющая взаимодействовать с сервером без перезагрузки страницы. Например, получать или передавать какие-нибудь данные.

Зачем все это нужно…

Давайте немного углубимся в веб-разработку. Обещаем, все будет просто, даже ребенок поймет.

Путешествуя по интернету, Вы используете браузер. Браузер – это наш проводник в интернет.

Сайт же – это обычная куча документов (html,php файлов), которые разбросаны на сервере. А сами сервера могут стоять в самых разных точках мира. В конце концов, чтобы сайт или страницу сайта увидели, браузер должен “обратиться” к нужному серверу, тот, в свою очередь, ищет и передает нужный документ (страницу) браузеру, и только потом браузер передаст это Вам на экран. Итог – мы видим какую-то страницу сайта.

Естественно, каждое Ваше “обращение” к серверу заставляет браузер перезагружать страницу, ведь в этот момент он принимает данные и подготавливает их для передачи Вам. Само по себе “обращение” это не только загрузка страниц сайта, “обращением” может быть и отправка сообщения пользователю, нажатие на кнопку “подписаться на новости” и.т.д.

Так вот, AJAX помогает избежать постоянной перезагрузки страницы в пределах одного веб-сервера (сайта).

Что такое AJAX-запрос

Это метод языка программирования JavaScript, который передает данные на сервер без перезагрузки страницы.

Технология AJAX в действии

Любой online-чат или форма обратной связи это явный пример работы технологии AJAX. Например, в социальной сети Вконтакте есть диалог с любым пользователем, в котором общение не прерывается перезагрузкой страницы.

Хотя пример с vk.com скорее не уместен, ибо там используется немного другая технология – WebSocket. Но в как пример для лучшего понимания все равно сойдет.

Когда Вы что-то пишите другому человеку и нажимаете отправить, то сразу видите результат своих действий без перезагрузки страницы. Это и есть технология AJAX. Браузер отправляет запрос серверу, сервер отдает нужные данные, браузер “обновляет” только часть контента на странице.

Как выглядит AJAX запрос

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

Тут все зависит от библиотеки (инструмента), с которым работает программист. Давайте мы продемонстрируем Вам технологию AJAX в действии на нашей любимой библиотеке Vue.js.

Пример технологии AJAX на Vue.js с использованием библиотеки Axios.

1. Это AJAX функция, она хранит в себе последовательность каких-то действий. В данном случае двух.

2. Первая часть функции. Это AJAX-запрос к документу (который хранит список резервных копий сайта). Мы, не перезагружая страницу, отправляем запрос серверу на получение этого документа.

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

На этом все, если остались вопросы – пишите нам в группу Вконтакте или оставляйте комментарии. Мы отвечаем на все вопросы касающиеся наших услуг или контента.

Интересно, а сайты на JavaScript нормально индексируются поисковиками? Ответ в следующей статье!

Нравится наш контент? Подпишись на группу ВКонтакте!

java — Что такое Ajax-запрос? Отличается ли он от запроса сервлета?

спросил

Изменено
2 месяца назад

Просмотрено
76 тысяч раз

может кто подскажет. Что такое Ajax-запрос? Отличается ли он от запроса сервлета?

  • Java
  • Аякс

2

Вызов Ajax — это асинхронный запрос, инициированный браузером, который не приводит непосредственно к переходу страницы. Запрос сервлета — это специфичный для Java термин (сервлеты — это спецификация Java) для обслуживания HTTP-запроса, который может получить простой запрос GET или POST (и т. д.) или запрос Ajax.

Ajax-запрос («асинхронный Javascript и XML») иногда называют XHR-запросом («XmlHttpRequest»). Это имя, которое большинство браузеров присваивает объекту, используемому для отправки Ajax-запроса, потому что, по крайней мере, изначально вызовы Ajax включали и получение XML, но теперь так же часто можно отправлять/получать JSON, обычный текст или HTML.

Хорошим примером запроса Ajax является система комментариев в Stackoverflow. Вы можете ввести комментарий в текстовое поле и нажать «Отправить». Он не отправляет всю страницу (как это делает традиционная отправка HTML-формы, которая обычно преобразуется в запрос POST, но иногда и в HTTP-запрос GET). Вместо этого браузер, вероятно, отправит запрос POST через XHR на сервер и будет уведомлен об ответе (отсюда «асинхронный»). Но сервер, как правило, не может отличить запрос Ajax от перехода на страницу, потому что оба просто сводятся к HTTP-запросам.

2

Ajax, или асинхронный JavaScript и XML, представляет собой подход к разработке веб-приложений, который использует сценарии на стороне клиента для обмена данными с веб-сервером. В результате веб-страницы динамически обновляются без полного обновления страницы, прерывающего поток взаимодействия.

С помощью Ajax вы можете создавать более богатые и динамичные пользовательские интерфейсы веб-приложений, т.е. сторона клиента.
С другой стороны, запросы сервлетов находятся на стороне сервера для обработки запросов, отправленных из пользовательского интерфейса.

Когда посетитель запрашивает страницу, сервер сразу же отправляет полный код HTML и CSS. После того, как посетитель заполнит форму и отправит ее, сервер обрабатывает информацию (объект запроса сервлета предоставляет информацию о клиентском запросе сервлету. Контейнер сервлета создает объект ServletRequest и передает его в качестве аргумента сервисному методу сервлета) и перестраивает страница. Затем он отправляет полную страницу обратно клиенту. И так далее.

При использовании AJAX страница загружается полностью только один раз, при первом запросе. Помимо кода HTML и CSS, составляющих страницу, также загружаются некоторые файлы JavaScript: движок AJAX. Все запросы данных к серверу будут отправлены в виде вызовов JavaScript этому движку. Затем механизм AJAX асинхронно запрашивает информацию с веб-сервера (объект запроса сервлета содержит измененные параметры запроса). Таким образом, запрашиваются и отправляются в браузер только небольшие биты страницы, поскольку они нужны пользователю. Затем движок отображает информацию без перезагрузки всей страницы. Это приводит к гораздо более отзывчивому интерфейсу, потому что между клиентом и сервером передается только необходимая информация, а не вся страница.

Дополнительную информацию о реализации ajax можно найти по адресу http://www.ibm.com/developerworks/library/j-ajax1/

Проблема в том, что, как и многие другие термины, используемые в ИТ 1 определение либо «запроса AJAX», либо «запроса сервлета». Лучшее, что я могу придумать, это следующее:

  • AJAX — это сокращение от «Асинхронный Javascript и XML», но в наши дни термин растянут на , чтобы включить JSON или YAML, а также XML. Основная идея заключается в том, что логика, встроенная в веб-страницу (в Javascript), отправляет асинхронные HTTP-запросы обратно на «домашний» сервер для запроса дополнительной информации, а не запускает обновление всей веб-страницы.

  • AJAX-запрос — это запрос, сделанный приложением AJAX . Как правило, это HTTP-запрос, созданный (резидентным для браузера) Javascript, который использует XML для кодирования данных запроса и/или данных ответа. Стандартный способ сделать запрос AJAX в Javascript — использовать объект XmlHttpRequest, но это деталь реализации… не фундаментальная для определения AJAX.

  • Запрос сервлета — это запрос, сделанный сервлету . Теоретически это даже не обязательно должен быть HTTP-запрос, поскольку технология сервлетов (теоретически) предназначена для работы и с другими протоколами. На мой взгляд, это не особенно полезный термин.

Итак… запрос AJAX может быть запросом сервлета или нет, а запрос сервлета может быть запросом AJAX или нет.

Стоит отметить, что существует интерфейс Java под названием ServletRequest , который является частью API J2EE. Этот интерфейс представляет собой тип объекта, который используется для передачи сведений о веб-запросе в контейнер веб-приложения на основе J2EE. Поэтому, когда вы видите, что кто-то использует термин «запрос сервлета», он может на самом деле говорить о Экземпляр ServletRequest .


1 — На самом деле ничем не отличается от любого другого естественного языка. Слова и фразы приобретают значение в зависимости от того, как люди их используют, а не в зависимости от определения, которое вы можете найти в словаре. Словарное «определение», как правило, появляется спустя годы или десятилетия после того, как слово или фраза вошло в обиход, и оно дает значение, основанное на том, как слово используется (или использовалось), а не является спецификацией значения.

Ajax — это не язык программирования и не инструмент, а концепция. Ajax — это скрипт на стороне клиента, который обменивается данными с сервером/базой данных без необходимости обратной передачи или полного обновления страницы

AJAX-запрос выполняется (с использованием Javascript) от клиента, а сервлет-запрос выполняется (с использованием, я полагаю, Java) с сервера.

Советую поискать в Википедии или где-то еще.

Ajax запросы — это обращения к веб-серверу. Это зависит от вас, как вы хотите справиться с этим. Сервлет определенно является одним из способов.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Что такое Ajax и как он работает

Глоссарий

13 декабря 2022 г.

Домантас Г.

5 минут Чтение

Термин AJAX означает асинхронный JavaScript и XML. Понимание AJAX важно для веб-разработчиков, поскольку он обычно используется в популярных веб-приложениях, таких как Google Maps, Gmail, Facebook и Twitter.

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

Загрузить глоссарий для начинающих веб-мастеров

Что такое AJAX?

AJAX означает асинхронный JavaScript и XML. Это набор веб-разработок для создания более отзывчивых веб-сайтов и приложений. AJAX позволяет веб-страницам обновлять свой контент без перезагрузки страницы пользователями.

AJAX является производным от функции JavaScript, чтобы обеспечить более интерактивный опыт. JavaScript создает, добавляет и управляет динамической структурой, отслеживая, какой контент требует обновления в режиме реального времени, пока посетитель заходит на веб-сайт.

Между тем, расширяемый язык разметки (XML) передает данные между веб-сервером и браузером. Помимо XML, для обмена данными часто используются другие форматы, такие как обычный текст и JSON.

JavaScript и расширяемый язык разметки работают вместе в рамках AJAX, обеспечивая асинхронное обновление содержимого веб-страницы. Другими словами, с помощью AJAX содержимое сайта можно обновлять без перезагрузки всей страницы.

Как работает AJAX?

AJAX включает следующие технологии:

  • XHTML и CSS – для представления информации.
  • Объектная модель документа (DOM) – для динамического отображения данных и их взаимодействия.
  • XML, HTML и XSLT — для обмена данными и манипулирования ими. Однако многие разработчики заменили XML на JSON , поскольку он произошел от JavaScript.
  • Объект XMLHttpRequest — разрешает асинхронную связь с веб-сервером.
  • JavaScript — язык программирования, связывающий все эти веб-технологии.

Общие принципы AJAX просты. Однако имеющиеся технические знания помогут вам быстрее понять рабочий процесс.

Взгляните на диаграмму и таблицу ниже, чтобы сравнить обычную модель веб-приложения с моделью AJAX.

Схема :

Сравнительная таблица :

Обычная модель Модель AJAX
Браузер отправляет HTTP-запрос на сервер. Браузер создает вызов JavaScript, который затем создает новый объект XMLHttpRequest.
Веб-сервер получает и обрабатывает запрос. Новый объект XMLHttpRequest передает данные между браузером и веб-сервером в формате XML.
Веб-сервер отправляет запрошенные данные в браузер. Объект XMLHttpRequest отправляет запрос обновленных данных страницы на веб-сервер. Впоследствии последний обрабатывает запрос и отправляет его обратно в браузер.
Браузер получает данные с сервера и перезагружает их как HTML-страницу.

Пользователи должны дождаться завершения загрузки. Поэтому обычная модель увеличивает нагрузку на сервер и требует больше времени.

Браузер использует JavaScript для обработки ответа и отображает обновленный контент непосредственно на HTML-странице без перезагрузки.

Практические примеры AJAX

Примером AJAX является функция Google Autocomplete. Эта функция предлагает варианты ключевых слов, помогая пользователям завершить свой поисковый запрос при вводе в строку поиска. Изменения происходят в режиме реального времени, но веб-страница остается прежней.

AJAX позволяет уровню обмена данными и уровня представления работать одновременно, не мешая функциям друг друга.

Этого не было в начале 90-х, когда эта новая технология еще не была представлена. Вам пришлось перезагрузить Google, чтобы новая рекомендация появилась на вашем экране.

Вот еще несколько полезных примеров использования метода AJAX в нашей повседневной жизни:

  • Системы голосования и рейтинга – как только вы нажимаете кнопку оценки или голосования, веб-сайт автоматически обновляет расчет без обновления страницы.
  • Чаты — некоторые веб-сайты реализуют встроенный чат поддержки клиентов на своей главной странице. Используя AJAX, вы можете общаться с представителем службы поддержки во время изучения веб-сайта. Веб-страницу не нужно будет перезагружать всякий раз, когда вы отправляете или получаете новое сообщение.
  • Социальные сети — многие приложения социальных сетей, такие как Twitter, используют AJAX для обновления временных шкал своих пользователей. Система будет запрашивать и получать данные с сервера, когда вы публикуете новый твит. Затем он отобразит новый твит поверх временной шкалы.

Должен ли я изучать AJAX?

Изучить AJAX относительно легко, особенно если у вас есть предварительные знания HTML, XML, JavaScript и CSS.

Для продвинутых разработчиков понимание AJAX может занять всего один или два часа, поскольку этот метод реализует навыки разработки, которыми вы уже овладели.

Если вы новичок, обычно требуется час, чтобы изучить основные принципы, и день или два, чтобы понять синтаксис XMLHttpRequest — ключ к AJAX.

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

Вот четыре шага для изучения AJAX:

  1. Ознакомьтесь с JavaScript, HTML, XML и CSS — эти языки необходимы для изучения AJAX.
  2. Изучите, как используется AJAX — узнайте, как AJAX применяется к веб-приложениям и методам, используемым для их разработки. Например, изучите Google Maps, который использует AJAX для получения новых картографических данных.
  3. Исследование jQuery — многие веб-приложения, использующие AJAX, также используют jQuery. Поэтому мы рекомендуем изучить основы jQuery для написания продвинутых приложений AJAX.
  4. Создайте проект с помощью AJAX — примените свои знания и навыки в области разработки на практике.

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

    9.0013 Изучите JavaScript AJAX за 1 час от Udemy . Этот курс научит вас использовать AJAX для выполнения запросов GET и POST, создания интерактивного интерфейса и создания динамического контента. Он состоит из часового видео и стоит $14,99 .
  • JavaScript и AJAX: методы интеграции от LinkedIn Learning — в этом курсе вы изучите основные принципы AJAX и способы интеграции XML, jQuery и JSON. Этот курс стоит $ 34,99 .
  • Введение в AJAX от Udacity — этот бесплатный курс научит вас делать асинхронные запросы, используя функциональность jQuery AJAX и API пользовательских данных. Вы также сможете создать веб-приложение для отработки своих навыков.
  • AJAX Introduction by W3Schools — в этом бесплатном курсе вы узнаете об основах AJAX. Кроме того, W3Schools предлагает викторины и практические занятия в каждом разделе для проверки ваших знаний.
  • AJAX Tutorials от Tutorials Point — этот бесплатный курс научит вас основным принципам AJAX и тому, как его применять. Tutorials Point также рекомендует другие курсы, связанные с этой темой, чтобы помочь вам лучше понять AJAX.

AJAX — это универсально используемый метод и неотъемлемая часть разработки интерфейса, что делает его одним из самых востребованных навыков. По данным Glassdoor, средняя зарплата фронтенд-разработчика составляет около 102 000 долларов в год .

Разработчики с опытом менее года зарабатывают около 100 000 долларов в год . С другой стороны, старшие разработчики внешнего интерфейса могут получать среднюю зарплату более долларов США в год .

Плюсы и минусы AJAX

Прежде чем использовать AJAX, рассмотрите его плюсы и минусы:

Плюсы

  • Позволяет браузеру обновлять биты контента без перезагрузки или открытия новой страницы.
  • Уменьшает трафик сервера, позволяя веб-приложениям выполнять рендеринг без данных.
  • Использует меньшую полосу пропускания, поскольку извлекает небольшие фрагменты содержимого.
  • Позволяет браузерам совершать асинхронные вызовы веб-серверу без перезагрузки всей страницы.
  • Объект XMLHttpRequest в AJAX устанавливает независимое соединение между сервером веб-сайта и клиентским компьютером.
  • Создает адаптивные взаимодействия. Движения мыши, которые не являются щелчками пользователя, также могут вызывать события.

Минусы

  • Если ваш браузер не поддерживает или не включает JavaScript, он не будет правильно загружать веб-страницы с использованием AJAX.
  • Любой может просмотреть исходный код веб-приложения, разработанного с использованием AJAX, что делает его менее безопасным.
  • AJAX работает асинхронно. Поэтому некоторая информация о странице может не соответствовать только что загруженной.
  • Когда пользователь нажимает кнопку «Назад» в своем браузере, он может не вернуться к предыдущему состоянию страницы. Успешные запросы AJAX не сохраняются в истории браузера.
  • Отладка веб-страницы, созданной с помощью AJAX, может быть затруднена.
  • Несколько запросов к серверу потребляют больше данных.

Заключение

AJAX — это набор методов веб-разработки, которые в основном используются для асинхронной отправки и получения данных с сервера.

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

По мере того, как этот метод становится все более популярным, появляется много вакансий для веб-разработчиков со знанием AJAX. Мы составили список ресурсов, которые помогут вам изучить AJAX, включая онлайн-курсы от Udemy, Linkedin Learning, Udacity, W3Schools и TutorialsPoint.

This entry was posted in Популярное