Введение
JavaScript — это язык программирования, один из трёх основных языков, используемых для разработки веб-сайтов, наряду с HTML и CSS. В то время как HTML и CSS определяют структуру и стиль веб-сайта, JavaScript позволяет добавлять на него функциональность и поведение. Это позволяет посетителям взаимодействовать с вашим сайтом различными креативными способами.
Первый браузер
Первый популярный веб-браузер с графическим пользовательским интерфейсом, Mosaic, был выпущен в 1993 году. Доступный даже неспециалистам, этот браузер сыграл важную роль в быстром развитии ранней Всемирной паутины. Разработчики Mosaic затем основали компанию Netscape, которая в 1994 году выпустила более продвинутый браузер Netscape Navigator. Этот браузер быстро стал самым распространённым.
В эти годы становления интернета веб-страницы могли быть только статичными, не имея возможности динамически изменяться после загрузки страницы в браузер. В условиях бурно развивающейся индустрии веб-разработки возникло желание устранить это ограничение, поэтому в 1995 году компания Netscape решила добавить язык программирования в Navigator. Для достижения этой цели они использовали два пути: сотрудничество с Sun Microsystems для встраивания языка программирования Java, а также найм Брендана Айха для встраивания языка программирования Scheme.
Руководство Netscape вскоре решило, что наилучшим вариантом для Айха будет создание нового языка с синтаксисом, похожим на Java и менее похожим на Scheme или другие существующие языки программирования. Хотя новый язык и его реализация интерпретатора изначально назывались LiveScript в рамках бета-версии в сентябре 1995 года, к официальному релизу в декабре название было изменено на JavaScript.
Выбор названия JavaScript вызвал путаницу и намекал на его прямую связь с Java. В то время начался бум доткомов, и Java стала популярным новым языком, поэтому я считал название JavaScript маркетинговым ходом Netscape. Но изначально целью разработки был совершенно отдельный “язык для масс” или “язык, помогающий непрограммистам создавать динамичные и интерактивные веб-сайты”. Конечно, это изменилось с появлением автономных сред выполнения JavaScript, таких как инструмент веб-разработки LiveWire Pro от Netscape, а также Ajax, ServerJS, asm.js и node.js.
Одобрено Microsoft
В 1995 году Microsoft представила Internet Explorer, что привело к войне браузеров с Netscape. Что касается JavaScript, Microsoft провела обратную разработку интерпретатора Navigator, создав собственный интерпретатор под названием JScript.
JavaScript был впервые выпущен в 1996 году, одновременно с первоначальной поддержкой расширений CSS и HTML. Каждая из этих реализаций существенно отличалась от аналогов в Navigator. Эти различия затрудняли разработчикам обеспечение корректной работы своих сайтов в обоих браузерах, что привело к широкому использованию логотипов «Best Viewed in Netscape» и «Best Viewed in Internet Explorer» на протяжении нескольких лет.
Появление JScript
В ноябре 1996 года компания Netscape представила JavaScript в Ecma International в качестве отправной точки для стандартной спецификации, которой могли бы соответствовать все производители браузеров. Это привело к официальной публикации первой спецификации языка ECMAScript в июне 1997 года.
Процесс стандартизации продолжался несколько лет, и в июне 1998 года был выпущен ECMAScript 2, а в декабре 1999 года — ECMAScript 3. Работа над ECMAScript 4 началась в 2000 году.
Тем временем Microsoft всё больше укрепляла свои позиции на рынке браузеров. К началу 2000-х годов доля Internet Explorer на рынке достигла 95%. Это означало, что JScript стал фактическим стандартом для клиентских скриптов в Интернете.
Изначально компания Microsoft участвовала в процессе стандартизации и реализовала некоторые предложения в своём языке JScript, но в конечном итоге прекратила участие в работе над ECMA. Таким образом, разработка ECMAScript 4 была прекращена.
Рост и стандартизация
В начале 2000-х, в период доминирования Internet Explorer, разработка front-end-приложений находилась в состоянии застоя. Изменения начались в 2004 году, когда преемница Netscape, Mozilla, выпустила браузер Firefox. Firefox был хорошо принят многими и значительно отобрал долю рынка у Internet Explorer.
В 2005 году компания Mozilla присоединилась к ECMA International, и началась работа над стандартом ECMAScript for XML (E4X). Это привело к совместной работе Mozilla и Macromedia (позже приобретённой Adobe Systems) над реализацией E4X в их языке ActionScript 3, основанном на черновике ECMAScript 4. Целью было стандартизировать ActionScript 3 как новый ECMAScript 4. С этой целью Adobe Systems выпустила реализацию Tamarin как проект с открытым исходным кодом. Однако Tamarin и ActionScript 3 сильно отличались от стандартных клиентских скриптов, и без сотрудничества с Microsoft ECMAScript 4 так и не был реализован.
Тем временем в сообществе разработчиков ПО с открытым исходным кодом, не связанном с работой ECMA, происходили очень важные события. В 2005 году Джесси Джеймс Гарретт опубликовал официальный документ, в котором ввёл термин Ajax и описал набор технологий, основанных на JavaScript, для создания веб-приложений, в которых данные могли загружаться в фоновом режиме, без полной перезагрузки страницы. Это положило начало возрождению JavaScript, ведущую роль в котором сыграли библиотеки с открытым исходным кодом и сформировавшиеся вокруг них сообщества. Было создано множество новых библиотек, включая jQuery, Prototype, Dojo Toolkit и MooTools.
В 2008 году Google представила браузер Chrome с JavaScript-движком V8, который был быстрее, чем у конкурентов. Ключевым нововведением стала JIT-компиляция (JIT), поэтому другим разработчикам браузеров пришлось перестраивать свои движки для JIT.
В июле 2008 года эти разрозненные группы собрались на конференции в Осло. В начале 2009 года было достигнуто окончательное соглашение об объединении всех связанных работ и развитии языка. Результатом стал стандарт ECMAScript 5, опубликованный в декабре 2009 года.
Достижение половой зрелости
Амбициозная работа над языком продолжалась несколько лет и завершилась выпуском ECMAScript 6 в 2015 году с обширным набором формальных дополнений и исправлений.
Создание Node.js в 2009 году Райаном Далем привело к значительному росту использования JavaScript вне веб-браузеров. Node объединяет движок V8, цикл событий и API ввода/вывода, создавая самодостаточную систему выполнения JavaScript. По состоянию на 2018 год Node использовали миллионы разработчиков, а npm обладал наибольшим количеством модулей среди всех управляемых пакетов в мире.
Проект спецификации ECMAScript теперь открыто поддерживается на GitHub, а релизы выпускаются посредством регулярных ежегодных снимков. Потенциальные изменения языка рассматриваются в рамках комплексного процесса подачи предложений. Теперь, вместо номеров версий, разработчики проверяют статус будущих функций по отдельности.
Текущая экосистема JavaScript включает в себя множество библиотек и фреймворков, устоявшиеся практики программирования и широкое применение JavaScript вне веб-браузеров. Кроме того, с ростом популярности одностраничных приложений и других веб-сайтов, насыщенных JavaScript, было создано несколько транспайлеров для упрощения процесса разработки.
Торговая марка
“JavaScript” — товарный знак корпорации Oracle в США. Товарный знак был первоначально зарегистрирован компанией Sun Microsystems 6 мая 1997 года и перешёл к Oracle после приобретения Sun в 2009 году.
Использование пользовательской части веб-сайта
JavaScript — доминирующий язык клиентских скриптов в интернете, используемый 98% всех веб-сайтов (по состоянию на середину 2022 года). Скрипты встраиваются в HTML-документы или используются внутри них и взаимодействуют с DOM.
Все основные веб-браузеры имеют встроенный движок JavaScript, который выполняет код на устройстве пользователя.
Примеры сценария поведения
- Загрузка нового контента на веб-страницу без её перезагрузки через Ajax или WebSocket. Например, пользователи социальных сетей могут отправлять и получать сообщения, не покидая текущую страницу.
- Анимация веб-страниц, например, постепенное появление и исчезновение объектов, изменение их размера и перемещение.
- Играйте в браузерные игры.
- Управление потоковым воспроизведением мультимедиа.
- Создавайте всплывающие окна с рекламой или окна оповещений.
- Проверка входных значений веб-формы перед отправкой данных на веб-сервер.
- Регистрация информации о поведении пользователя и её последующая отправка на сервер. Владелец сайта может использовать эти данные для аналитики, отслеживания рекламы и персонализации.
- Перенаправить пользователя на другую страницу.
- Храните и извлекайте данные на устройстве пользователя с помощью стандартов хранения или IndexedDB.
Веб-библиотеки и фреймворки
К 2012 году более 80% веб-сайтов использовали сторонние библиотеки JavaScript или веб-фреймворки для клиентских скриптов.
Реагировать
React (также известный как React.js или ReactJS) — это бесплатная JavaScript-библиотека с открытым исходным кодом[41][42] для создания пользовательских интерфейсов на основе компонентов. Она поддерживается компанией Meta (ранее Facebook) и сообществом разработчиков и компаний.
React можно использовать для разработки одностраничных, мобильных или серверных приложений с использованием таких фреймворков, как Next.js. Поскольку React отвечает только за пользовательский интерфейс и рендеринг компонентов в DOM, приложения React часто используют библиотеки для маршрутизации и другой клиентской функциональности. Ключевое преимущество React заключается в том, что он перерисовывает только те части страницы, которые были изменены, избегая ненужной отрисовки неизменённых элементов DOM.
угловой
Angular (также известный как “Angular 2+”)[48] — это бесплатный фреймворк для одностраничных веб-приложений с открытым исходным кодом, основанный на TypeScript, разработанный командой Angular из Google и сообществом отдельных лиц и компаний. Angular — это полностью переписанный проект той же команды, которая создала AngularJS.
jQuery
В 2012 году jQuery была самой популярной фронтенд-библиотекой, используемой более чем на 75% веб-сайтов. Хотя она по-прежнему широко используется, её популярность значительно уступает более новым библиотекам и фреймворкам.
Ванильный JS
Названия фреймворков вроде “Vanilla JS” — это просто другое название для обычного JavaScript. Он был придуман для веб-сайтов, которые вообще не используют библиотеки или фреймворки, а полностью полагаются на стандартный функционал JavaScript.
Другие применения
Использование JavaScript вышло за рамки веб-браузеров. В настоящее время движки JavaScript встроены в ряд других программных систем, как для развёртывания веб-сайтов на стороне сервера, так и для приложений, не требующих использования браузера.
Первыми попытками популяризации серверного JavaScript стали Netscape Enterprise Server и Microsoft Internet Information Services, но они занимали лишь небольшие ниши. Серверное использование JavaScript стало постепенно расти в конце 2000-х годов с появлением Node.js и других подходов.
Electron, Cordova, React Native и другие фреймворки приложений использовались для создания множества приложений с поведением, реализованным на JavaScript. Среди других небраузерных приложений — поддержка Adobe Acrobat для создания скриптов документов PD и расширения GNOME Shell, написанные на JavaScript.
JavaScript недавно появился в некоторых встраиваемых системах, обычно с использованием Node.js.
Среда исполнения
JavaScript обычно использует среду выполнения (например, веб-браузер) для предоставления объектов и методов, с помощью которых скрипты могут взаимодействовать с этой средой (например, с DOM веб-страницы). Эти среды являются однопоточными. JavaScript также использует среду выполнения для включения/импорта скриптов (например, элементов <script>). HTML) را فراهم کند. این به خودی خود یک ویژگی زبان نیست، اما در اکثر پیاده سازی های جاوا اسکریپت رایج است. جاوا اسکریپت پیام های یک صف را در یک زمان پردازش می کند. جاوا اسکریپت یک تابع مرتبط با هر پیام جدید را فراخوانی می کند و یک فریم پشته تماس با آرگومان های تابع و متغیرهای محلی ایجاد می کند. پشته تماس بر اساس نیازهای تابع کوچک شده و رشد می کند. هنگامی که پشته تماس پس از تکمیل تابع خالی است، جاوا اسکریپت به پیام بعدی در صف ادامه میدهد. این حلقه رویداد نامیده می شود که به عنوان “اجرا تا تکمیل” توصیف می شود زیرا هر پیام قبل از در نظر گرفتن پیام بعدی به طور کامل پردازش می شود. با این حال، مدل همزمانی زبان، حلقه رویداد را غیر مسدودکننده توصیف میکند: ورودی/خروجی برنامه با استفاده از رویدادها و توابع پاسخ به تماس انجام میشود. این بدان معناست که، برای مثال، جاوا اسکریپت میتواند یک کلیک ماوس را در حالی که منتظر یک پرس و جو پایگاه داده برای بازگرداندن اطلاعات است، پردازش کند.
Результат
Сегодня мы можем использовать JavaScript для написания самых разных программ, включая браузерные, серверные, мобильные и настольные приложения. Мы надеемся, что эта статья помогла вам лучше понять историю самого популярного языка программирования в современном интернете.









