Краткая история JavaScript
- воскресенье, 8 июня 2025 г. в 00:00:07
В этом году JavaScript исполняется 30 лет.
За три десятилетия он прошел путь от забавного и непритязательного скриптового языка, созданного за 10 дней, до самого популярного языка программирования в мире. Ниже — ключевые моменты истории JavaScript, которые помогут понять, как он менялся и куда идет.
Релиз Netscape Navigator 1.0 стал переломным моментом в истории Интернета. Браузер быстро завоевал популярность — он был быстрее и удобнее, чем Mosaic (выпущенный годом ранее в 1993). У него был современный графический интерфейс, что выгодно отличало его от ранних текстовых браузеров. Кроме того, он поддерживал зарождающиеся веб-стандарты, такие как HTML 2.0, и в будущем… JavaScript.
Компания Netscape хотела добавить интерактивность на веб-страницы, которые в то время почти полностью состояли из HTML. Примерно в то же время Sun Microsystems представила язык Java, и Netscape лицензировала его для использования в своем браузере. Однако Java оказался слишком сложным для веб-дизайнеров.
Тогда Netscape поручила Брендану Айку создать скриптовый язык, который бы напоминал Java внешне, но при этом был объектно-ориентированным, а не основанным на классах. Так всего за 10 дней появился язык, который сегодня лежит в основе большинства веб-приложений. Название "JavaScript" было выбрано по маркетинговым соображениям — Java тогда была на пике популярности, и этим решили воспользоваться.
JavaScript был представлен как легкий в использовании язык для добавления интерактивности на HTML-страницы. В этом анонсе Netscape и Sun обозначили свое видение будущего Интернета: Java-объекты передаются на клиентскую сторону, где их можно изменять с помощью скриптов на JavaScript. Важно отметить, что инициативу поддержали 28 технологических компаний — от America Online до Toshiba Corporation.
JScript — это открытая реализация JavaScript, адаптированная под экосистему Windows. Название выбрали, чтобы обойти авторские права на слово "Java". JScript, в отличие от JavaScript от Netscape, мог обращаться к объектам ActiveX в Windows — благодаря этому разработчики могли, например, взаимодействовать с Excel прямо через Internet Explorer.
var ExcelSheet;
ExcelSheet = new ActiveXObject("Excel.Sheet");
// Делаем Excel видимым через объект Application
ExcelSheet.Application.Visible = true;
// Вставляем текст в первую ячейку листа
ExcelSheet.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
// Сохраняем файл
ExcelSheet.SaveAs("C:TEST.XLS");
// Закрываем Excel, вызвав метод Quit у объекта Application
ExcelSheet.Application.Quit();
// Освобождаем переменную-объект
ExcelSheet = "";
JavaScript представлен широкой публике — с выпуском Netscape Navigator 2.0 он оказался установлен на миллионах компьютеров. Вместе с версией 1.0 в язык была добавлена ключевая инновация, которая стала основой современной архитектуры веба — модель объектного представления документа, более известная как DOM (Document Object Model).
Чтобы устранить несовместимости между браузерами из-за разных реализаций JavaScript и JScript от Microsoft, компания Netscape передала спецификацию JavaScript в международную организацию ECMA. Цель — создать единый, независимый от производителей стандарт, который сможет использовать каждый.
Так появилась спецификация ECMA-262, а сам язык получил название ECMAScript (JavaScript использовать не могли из-за товарного знака). JavaScript и JScript стали его диалектами. Также был создан технический комитет TC39, в который вошли представители Netscape, Microsoft, Sun Microsystems и других компаний — именно этот комитет с тех пор определяет развитие ECMAScript.
После того как Microsoft начала предустанавливать Internet Explorer в Windows, популярность Netscape Navigator начала стремительно падать. В попытке спасти положение и конкурировать с Microsoft, Netscape приняла смелое решение — открыть исходный код своего браузера под названием "Mozilla" (внутреннее имя проекта, образованное от слов "Mosaic" и "killer"). Это было сделано для того, чтобы сообщество могло участвовать в создании более современного и соответствующего веб-стандартам браузера.
Уже на следующий день Джейми Завински из Netscape зарегистрировал домен mozilla.org. Так начался проект Mozilla, который позже подарил миру множество значимых технологий и продуктов: браузер Firefox, вкладки, расширения, а также язык программирования Rust.
Хотя в этой версии языка новых возможностей не появилось, спецификация была приведена в порядок, стала более последовательной и стандартизированной. Это стало прочным фундаментом для всех последующих обновлений.
В этой версии Microsoft представила XMLHttpRequest
— первый удобный способ отправлять HTTP-запросы с помощью JavaScript:
// Как отправить HTTP-запрос в IE5.
<script type="text/javascript">
function makeRequest() {
// Создаем ActiveXObject (специфично для IE5/IE6)
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
// Открываем GET-запрос (async = true)
xhr.open("GET", "https://example.com/data.txt", true);
// Определяем функцию-обработчик, которая сработает при получении ответа
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
alert("Ответ получен: " + xhr.responseText);
}
};
// Отправляем запрос
xhr.send();
}
</script>
<button onclick="makeRequest()">Отправить HTTP-запрос</button>
JSDoc, созданный по образу Javadoc для Java, предложил формальный и структурированный способ документирования JavaScript-кода. Это повысило профессиональный уровень языка, заложило основу для поддержки в IDE и позволило автоматически генерировать документацию — например, с помощью deno doc
и для модулей на jsr.io.
/**
* Складывает два числа и возвращает результат.
* @param {number} value1 Первое число
* @param {number} value2 Второе число
*/
function addNumbers(value1, value2) {
return value1 + value2;
}
do-while
, регулярными выражениями, новыми методами строк (concat
, match
, replace
, slice
, split
), обработкой исключений и другими улучшениямиECMAScript 3 стал важной вехой в развитии JavaScript — именно с этой версии язык перестал быть просто "игрушечным" скриптовым языком и превратился в серьезный инструмент программирования. Он стал базовым стандартом для программирования в браузерах на целое десятилетие и по праву считается той версией JavaScript, которая задала основу языка для веба.
Оно выглядело примерно так:
<html><head><script>
document.domain = "fudco";
parent.session.receive({
to: "session",
do: "test",
text: "Hello world"
})
</script></head></html>
JSLint, созданный Дугласом Крокфордом, стал первым крупным инструментом статического анализа кода для JavaScript. В то время язык широко использовался, но понимали его плохо, а код писали без соблюдения каких-либо правил. JSLint помог повысить качество кода. Жесткие правила, которые внедрял JSLint, легли в основу книги Крокфорда "JavaScript: сильные стороны".
Устав от медлительности и громоздкости Mozilla Application Suite, небольшая команда разработчиков создала минималистичный и упрощенный веб-браузер под названием Phoenix — символ возрождения браузера из пепла Netscape и Mozilla Suite. В то время Internet Explorer контролировал 90% рынка, а инновации практически отсутствовали. Phoenix предложил пользователям нечто новое: скорость, простой интерфейс, вкладки и блокировщик всплывающих окон. Этот проект ознаменовал возрождение ориентированных на пользователя открытых браузеров, стал основой Firefox и положил конец монополии Microsoft на рынке браузеров.
Генеральный директор Apple Стив Джобс объявляет о выходе Safari — "турбо-браузера для Mac OS X". Главное — это позволило Apple избавиться от зависимости от Microsoft, так как ранее пользователи Mac использовали Internet Explorer. Кроме того, это заложило основу для выпуска мобильного Safari на iPhone несколько лет спустя. Safari основан на WebKit — внутреннем форке движка браузера KHTML.
Запуск Gmail стал переломным моментом в веб-разработке. AJAX позволил Gmail обеспечить высокую отзывчивость и интерактивность, которые тогда были беспрецедентны для веб-сайта, положив начало новой эпохе веб-приложений — Web 2.0.
AJAX (асинхронный JavaScript и XML) — набор клиентских технологий, позволяющих веб-приложениям отправлять и получать данные с сервера асинхронно, без перезагрузки страницы. Это открыло новую эру веб-приложений и фреймворков, способных обеспечивать богатый и плавный пользовательский опыт.
<script type="text/javascript">
function createXHR() {
if (window.XMLHttpRequest) {
// Современные браузеры (Mozilla, Safari, IE7+)
return new XMLHttpRequest();
} else if (window.ActiveXObject) {
// Старые версии IE (IE5, IE6)
try {
return new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("AJAX не поддерживается вашим браузером.");
return null;
}
}
}
return null;
}
function loadData() {
var xhr = createXHR();
if (!xhr) return;
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
document.getElementById("result").innerHTML = xhr.responseText;
} else {
alert("Провал запроса: " + xhr.status);
}
}
};
xhr.open("GET", "/messages/latest", true); // Имитация запроса к серверу в стиле Gmail
xhr.send(null);
}
</script>
<button onclick="loadData()">Загрузить последнее сообщение</button>
<div id="result">Ожидание ответа...</div>
Mozilla запускает DevMo By Mozilla — проект, который позже превратился в MDN (Mozilla Developer Network). MDN предоставлял точную, независимую и основанную на стандартах документацию, став центральным ресурсом для изучения веб-технологий. Это произошло в критический момент, когда несовместимость браузеров была серьезной проблемой, а существующая документация была разрозненной, устаревшей и непоследовательной. MDN быстро стал основным источником информации для веб-разработчиков и установил новый стандарт в области технической документации.
jQuery — JavaScript-библиотека, созданная для упрощения обхода DOM-дерева, обработки событий, AJAX и других задач. Она появилась как решение многих проблем, связанных с несовместимостью между браузерами. Кроме того, jQuery предложила хорошо документированный и лаконичный API, который установил новый стандарт опыта разработки. jQuery по-прежнему остается самой популярной JavaScript-библиотекой по числу загрузок на страницах.
<script src="https://code.jquery.com/jquery-1.0.0.min.js"></script>
<script type="text/javascript">
function sendRequest() {
$.ajax({
url: "https://example.com/data",
type: 'GET',
success: function(res) {
document.getElementById("result").innerHTML = res;
},
error: function(xhr, status, error) {
alsert("Провал запроса: " + status);
}
});
}
</script>
<button onclick="sendRequest()">Получить данные</button>
<div id="result">Ожидание ответа...</div>
Отказ от использования Flash был намеренным шагом и стал предметом дискуссий. В то время около 90% интерактивного мультимедиа в интернете создавалось с его помощью. Однако Стив Джобс выступал против Flash из-за его ресурсоемкости, нестабильности и закрытой архитектуры. Для разработчиков это стало сигналом: будущее мобильного веба — не за Flash.
Компания AOL официально прекратила поддержку Netscape Navigator — некогда доминирующего браузера 90-х, который в определенный момент контролировал более 90% рынка. Это стало концом целой эпохи для одного из самых влиятельных веб-браузеров раннего интернета. Он утратил позиции в борьбе с Internet Explorer, который Microsoft предустанавливала в Windows. Это, в свою очередь, привело к знаковому антимонопольному судебному делу, оказавшему влияние на последующее регулирование в сфере технологий.
Эта книга изменила восприятие JavaScript, показав его как полноценный и серьезный язык программирования, тогда как ранее его часто высмеивали за странности в дизайне и непредсказуемое поведение.
На фоне медленных браузеров вроде Internet Explorer, Firefox и Safari, где производительности JavaScript уделялось мало внимания, Chrome был настоящим прорывом. Он с самого начала был ориентирован на скорость, благодаря новому JavaScript-движку V8.
V8 стал революцией: он компилировал JavaScript в машинный код до выполнения, использовал JIT-компиляцию (just-in-time) и эффективно управлял памятью с помощью сборщика мусора. Вскоре Google открыл исходный код V8, что позволило другим разработчикам использовать его в своих проектах — самым известным из которых стал Node.js.
JavaScript начинает выходить за пределы браузера и активно используется на сервере. Проекты становятся масштабнее, и язык нуждается в более эффективной организации исходного кода. Требуется модульность. Подробную информацию об истории CommonJS можно найти в этой статье.
Node.js — это кроссплатформенная, открытая среда выполнения JavaScript вне браузера. Благодаря Node.js разработчики получили возможность создавать веб-серверы и полнофункциональные приложения целиком на JavaScript. Сегодня Node.js используется примерно на 3,5% всех сайтов с известными серверами и остается одной из ведущих технологий для веб-разработки.
Райан Даль представил Node.js в одном из своих выступлений несколько лет спустя. Для более подробного ознакомления с проектом Node.js рекомендуем посмотреть этот документальный фильм.
Oracle укрепляет свои позиции на рынке корпоративных технологий благодаря покупке Sun Microsystems и прав на Java. В рамках сделки Oracle также получает товарный знак JavaScript, что вызывает неопределенность относительно будущего языка. Подробнее о нашей инициативе по освобождению JavaScript от прав Oracle можно узнать здесь: #FreeJavaScript.
Express.js — минималистичный, гибкий и расширяемый веб-фреймворк для Node.js, один из самых популярных в экосистеме. Он ввел модульную архитектуру посредников (middleware) с упором на создание RESTful API. Его влияние на развитие экосистемы трудно переоценить — Express вдохновил появление таких фреймворков, как Koa, Nest, Fastify и других. Несмотря на период низкой активности разработки, сегодня Express находится на версии 5 и активно поддерживается.
strict mode
, геттеры и сеттеры, новые методы массивов, поддержка JSON, метод string.trim()
и завершающие запятые в объектахECMAScript 5 стал первым значительным обновлением языка за 10 лет, добавив функции, которые сделали JavaScript более мощным, безопасным и удобным для поддержки.
CoffeeScript быстро получил популярность благодаря более чистому синтаксису (меньше шаблонного кода), стрелочным функциям (задолго до их появления в ES6), деструктуризации и другим обновлениям, повышающим качество разработки.
npm — реестр библиотек (пакетов) для Node.js и JavaScript — навсегда меняет способ распространения JavaScript-кода. Сегодня это крупнейший в мире реестр с открытым исходным кодом, насчитывающий более 3 миллионов пакетов.
До появления WebStorm текстовые редакторы предлагали лишь минимальную поддержку JavaScript. WebStorm стал первой специализированной средой разработки, которая предоставила расширенные возможности: анализ кода, обнаружение ошибок, автодополнение для JS/HTML/CSS и инструменты отладки, адаптированные под JavaScript.
С развитием JavaScript и растущим спросом на более быстрые и удобные способы создания сложных приложений, появляются два фреймворка — AngularJS и Backbone.js. Они становятся популярными по разным причинам: Angular предлагает декларативный и строго структурированный подход, тогда как Backbone — императивный и минималистичный. Этот момент также условно считается началом эпохи одностраничных приложений (SPA) и периода так называемой "смены фреймворков", когда новые JavaScript-фреймворки появлялись и устаревали с поразительной скоростью.
В 2011 году Райан Даль из Joyent и Берт Белдер (ныне сооснователь и технический директор Deno) перенесли Node.js на Windows — важнейший шаг, расширивший его использование за пределы Unix-подобных систем. Одним из результатов этой работы стала библиотека libuv, предоставляющая унифицированный интерфейс для асинхронных сетевых операций на Linux, macOS и Windows. Этот шаг не только ускорил рост популярности Node.js, но и стал поворотным моментом в открытости Microsoft, заложив основу для таких будущих инициатив, как TypeScript, Visual Studio Code и интеграция с облаком Azure.
Webpack позволил разработчикам импортировать практически что угодно на клиентскую сторону и со временем стал основой сборки для таких фреймворков, как React, Angular, Vue и других. Он заложил фундамент для появления и развития инструментов следующего поколения — Rollup, Parcel, Vite и esbuild.
В 2010 году Андерс Хейлсберг (создатель C# и Turbo Pascal) начал разработку статически типизированного надмножества JavaScript под названием TypeScript. Цель проекта — упростить написание и сопровождение масштабных JavaScript-приложений. В 2012 году Microsoft представила TypeScript широкой публике. Язык открыл дорогу к промышленной разработке в экосистеме JavaScript, повлиял на развитие самого ECMAScript и изменил подход к созданию крупных приложений.
function add(x: number, y: number): number {
return x + y;
}
Atom Shell, переименованный в Electron в 2015, значительно упростил создание кроссплатформенных десктопных приложений с использованием веб-технологий — HTML, CSS и JavaScript. Основанный на Node.js и Chromium, он предоставил разработчикам доступ к файловой системе, сетевым функциям и API операционной системы. Изначально фреймворк был создан для текстового редактора Atom от GitHub, выпущенного в публичную бету в апреле 2014 года. Среди первых известных пользователей — Slack. Electron сыграл ключевую роль в популяризации подхода, когда веб-технологии используются для создания десктопных приложений.
asm.js — строгое подмножество JavaScript, созданное для достижения почти нативной производительности в веб-приложениях. До этого JavaScript не считался пригодным для ресурсоемких задач, таких как 3D-игры или обработка видео. asm.js позволял компилировать код на C/C++ в JavaScript, что открыло путь для запуска нативных приложений прямо в браузере. Это стало значительным шагом в развитии JavaScript как полноценной среды выполнения для дорогих с точки зрения вычислений приложений и подготовило почву для появления WebAssembly.
(function Module(stdlib, foreign, heap) {
"use asm";
function add(x, y) {
x = x | 0;
y = y | 0;
return (x + y) | 0;
}
return { add: add };
})(this, {}, new ArrayBuffer(1024));
console.log(Module.add(10, 20)); // 30
MEAN — это аббревиатура, обозначающая полный стек технологий на JavaScript: MongoDB, Express.js, AngularJS и Node.js. Введение этого термина существенно повлияло на развитие современной веб-разработки.
React, созданный Джорданом Уолком, инженером Facebook (ныне Meta), — это JavaScript-библиотека для декларативного построения пользовательских интерфейсов. Впервые React был представлен в новостной ленте Facebook в 2011 году и открыт для сообщества в мае 2013 года на конференции JSConf US. Компонентный подход React заложил основу современных декларативных UI-паттернов.
Николас С. Закaс, известный разработчик JavaScript и бывший ведущий разработчик библиотеки Yahoo! User Interface Library (YUI), начал работу над ESLint — расширяемым и настраиваемым инструментом для поиска и исправления проблем в JavaScript-коде. ESLint быстро стал незаменимым для разработчиков, преодолев ограничения существующих средств статического анализа и установив новые стандарты качества и единообразия кода.
Эрик Шоффсталл выпускает Gulp.js — потоковую систему сборки для автоматизации задач веб-разработки. Gulp предложил новый подход к обработке повторяющихся задач, таких как минификация, компиляция, линтинг и тестирование, используя простой и ориентированный на код стиль. Благодаря этому он быстро завоевал популярность как мощная альтернатива более сложным с точки зрения настройки таск-раннерам, таким как Grunt, и повлиял на развитие современных инструментов сборки.
Эван Ю, бывший инженер Google, выпускает Vue.js — прогрессивный JavaScript-фреймворк для создания пользовательских интерфейсов. В отличие от других фреймворков своего времени, Vue задумывался как простой в освоении, постепенно внедряемый и высокопроизводительный инструмент. Эти качества сделали его одним из самых популярных и влиятельных фреймворков в современной экосистеме JavaScript.
Компания StrongLoop (сооснователем которой был Берт Белдер, будущий сооснователь Deno), специализирующаяся на корпоративных решениях на базе Node.js, получила права на Express.js с целью интеграции его в набор инструментов для создания API и микросервисов. Однако сообщество опасалось утраты независимости Express, что стало толчком к созданию альтернативных фреймворков, таких как Koa. В 2015 году StrongLoop была приобретена IBM, а в 2019 Express.js вошел в состав OpenJS Foundation, что обеспечило проекту прозрачное управление и устойчивое развитие. Спустя 10 лет разработки версии 4.x, Express 5 был официально выпущен в октябре 2024 года.
Изначально называвшийся 6to5, Babel.js — это компилятор JavaScript, позволяющий разработчикам писать код на современном JavaScript и преобразовывать его для совместимости со старыми браузерами и движками. Вскоре Babel стал стандартным инструментом в экосистеме: его начали использовать популярные фреймворки, такие как React, Vue и Angular, а также сборщики модулей Webpack, Rollup и Parcel.
Meteor произвел фурор в сообществе веб-разработчиков, предложив радикально простой способ создания полноценных, кроссплатформенных приложений реального времени исключительно на JavaScript. Он сыграл важную роль в формировании представлений разработчиков о том, как должны выглядеть современные реактивные и интерактивные веб-приложения. Несмотря на снижение популярности с развитием экосистемы, влияние Meteor заметно в таких технологиях, как React, Redux, Firebase, GraphQL и других.
Flow — это инструмент статической проверки типов, созданный Facebook для выявления ошибок и повышения надежности кода на этапе разработки. Он стал частью внутренней инфраструктуры компании и помогал поддерживать масштабные проекты. Однако к концу 2010-х TypeScript занял лидирующие позиции среди решений для типизации JavaScript, что привело к постепенному снижению популярности Flow.
Amazon Web Services, уже являвшийся лидером на рынке облачных технологий, анонсирует новую парадигму — бессерверные (serverless) вычисления с помощью AWS Lambda. Этот сервис позволяет запускать код в ответ на события без необходимости управлять инфраструктурой. На момент запуска поддерживался только JavaScript на базе Node.js — благодаря его событийно-ориентированной и неблокирующей архитектуре, которая идеально подходила для кратковременного выполнения функций без состояния. Появление AWS Lambda положило начало концепции Function-as-a-Service (FaaS) и запустило волну развития serverless-подходов, к которым вскоре присоединились Google и Microsoft со своими решениями.
Node.js под управлением Joyent развивался медленно и не поддерживал современные возможности JavaScript, так как использовал устаревшую версию V8. Это вызывало недовольство у разработчиков, особенно на фоне стремительного прогресса во фронтенде. В результате был создан форк io.js, который предлагал более быстрые релизы и активное развитие. Первоначальная цель состояла в том, чтобы позже объединить io.js с основной веткой Node.js.
Jamstack (сокращение от JavaScript, API и Markup) — архитектурный подход к веб-разработке, предлагающий лучшую производительность, масштабируемость и удобство для разработчиков. Это ознаменовало начало новой эры в современной веб-разработке, когда внимание стало смещаться от SPA-архитектур в сторону SSR и SSG.
Под эгидой Linux Foundation была основана Node.js Foundation для продвижения развития и внедрения Node.js путем решения проблем фрагментации проекта. В то время io.js — популярный форк Node.js, поддерживаемый группой бывших участников Node.js, стремившихся к более быстрым релизам и улучшенному управлению, — был объединен с основным проектом Node.js в июне 2015 года. Node.js Foundation получила поддержку крупных технологических компаний, таких как IBM, Microsoft, PayPal, Intel, Fidelity, Joyent и Linux Foundation.
Facebook начал разработку GraphQL в 2012 году как декларативного языка запросов для получения данных с сервера. GraphQL предложил новый подход к получению и изменению данных с меньшим количеством обращений к серверу и с поддержкой строгой типизации.
С ростом числа разработчиков, создающих приложения на React, возникла потребность в управлении состоянием. Redux, предсказуемый контейнер состояния, был выпущен для решения этой задачи. Сейчас Redux используется с множеством различных JavaScript-фреймворков.
WebAssembly был создан для решения проблем с производительностью JavaScript в браузере. Он обеспечивает высокоскоростное выполнение ресурсоемких приложений, таких как игры, видеоредакторы и другие. Также WebAssembly предоставляет переносимый и безопасный способ запуска кода, написанного на таких языках, как C/C++, в браузере.
Atom стал одним из первых высоко расширяемых десктопных редакторов, полностью построенных на веб-технологиях. Он делал акцент на глубокой кастомизации, позволяя разработчикам изменять все — от интерфейса до базового поведения — с помощью пакетов и тем. Atom не только подтвердил эффективность Atom Shell (ныне известного как Electron) как фреймворка для создания кроссплатформенных десктопных приложений, но и изменил восприятие текстовых редакторов: с простых инструментов они превратились в платформы. Atom вдохновил появление современных расширяемых инструментов на базе веб-технологий, таких как VS Code, который взял и развил многие ключевые идеи Atom.
Atom 1.0 был выпущен с этим видео-анонсом в ретро стиле от GitHub.
С выходом ES6 JavaScript получил долгожданные возможности, такие как fetch API
и встроенная система модулей ESM с командами import
и export
.
<script type="text/javascript">
function getData() {
fetch("https://api.example.com/data")
.then(response => {
if (!response.ok) {
throw new Error("Провал запроса: " + response.status);
}
return response.text(); // или response.json() для JSON API
})
.then(data => {
document.getElementById("result").textContent = data;
})
.catch(error => {
console.error("Ошибка:", error);
alert("Ошибка получения данных.");
});
}
}
<button onclick="getData()">Получить данные</button>
<div id="result">Ожидание ответа...</div>
Node.js v4.0 стал результатом многолетней работы над проектами Node.js и io.js, объединенных в единый код. Это слияние завершило период раздробленности сообщества, когда многие npm-модули были несовместимы с одной из платформ. Кроме того, был введен график долгосрочной поддержки и новая схема семантического версионирования. Успех слияния продемонстрировал силу открытого управления и сотрудничества сообщества.
Microsoft стремилась привлечь внешних разработчиков и расширить использование Chakra за пределами браузера Edge, открыв исходный код движка. Это вызвало значительный интерес со стороны сообщества, и даже была выпущена версия Node.js, работающая на Chakra. Однако движок V8 оставался доминирующим благодаря обширному сообществу и развитым инструментам. К 2021 году Microsoft объявила о прекращении активной разработки Chakra и переходе на Chromium-версию Edge, основанную на движке V8.
Этот инцидент, известный как "случай с Leftpad в npm", произошел после конфликта Азера с Kik Messenger. Удаление Leftpad вызвало сбои в тысячах проектов, использующих этот пакет в качестве зависимости, включая React и Babel, из-за чего их невозможно было собрать или установить. Это создало серьезные перебои у крупных технологических компаний, таких как Meta, Netflix и Spotify, и продемонстрировало огромные риски, связанные с уязвимостями цепочки поставок в экосистеме JavaScript. После этого npm изменил свою политику, ограничив возможность пользователей удалять свои пакеты.
Созданная на основе веб-технологий (Electron, TypeScript), VSCode сразу предложила полноценную поддержку JavaScript и TypeScript. Она быстро стала серьезным конкурентом Sublime Text, Atom и другим полноценным IDE.
Microsoft анонсировала VSCode на конференции Microsoft Build в 2015 году.
**
) и метод массива array.includes()
Angular — полное переосмысление оригинального AngularJS, созданное с нуля для устранения многих его недостатков. Среди ключевых изменений — переход от архитектуры Model-View-Controller к древовидной структуре компонентов, использование TypeScript для улучшения инструментов разработки и внедрение Ahead-of-Time компиляции для повышения производительности и безопасности. Благодаря своей структуре и строгой архитектуре Angular стал одним из ведущих решений для крупных корпоративных приложений.
Next.js стартовал как небольшой фреймворк для серверного рендеринга универсальных JavaScript-приложений на базе React, Webpack и Babel. Он упростил использование серверного рендеринга с React, открыв путь к созданию полноценных full-stack React-приложений. С помощью Next.js разработчики получили удобный инструмент для создания контентно насыщенных и SEO-оптимизированных сайтов. В конечном итоге этот фреймворк получил статус основного инструмента для разработки React-приложений промышленного уровня.
Предложение Temporal было представлено как решение множества проблем встроенного объекта Date
в JavaScript — таких как отсутствие неизменяемости, поддержки часовых поясов и перехода на летнее/зимнее время, а также непоследовательный разбор дат. В 2021 году Temporal был одобрен для включения в стандарт ECMAScript. Однако на сегодняшний день API Temporal поддерживается только в Firefox Nightly и Deno.
Prettier — это отличный форматировщик кода, который обеспечивает единый стиль оформления, разбирая код и перепечатывая его по собственным правилам. Он был создан, чтобы сократить время на код-ревью, часто затянутые из-за разногласий в стиле форматирования. В отличие от ESLint, который в основном обнаруживал проблемы, Prettier фокусировался именно на автоматическом исправлении форматирования. Он популяризировал подход "пиши как удобно, форматируй позже", что способствовало более чистому коду и упрощению взаимодействия в команде. Его влияние вышло за пределы JavaScript: Python-проекты стали использовать Black, а в Rust форматтер включили в официальный стек разработки, сделав его обязательным этапом сборки.
Object.entries()
, Object.values()
, асинхронными функциями и другими обновлениямиК 2017 году метод fetch()
получил широкую поддержку во всех современных браузерах (кроме Internet Explorer 11), и многие разработчики уже активно использовали async
/await
— как напрямую, так и через транспиляцию с помощью Babel.
<script>
async function getData() {
try {
const response = await fetch("https://api.example.com/data");
if (!response.ok) {
throw new Error("Ошибка HTTP " + response.status);
}
const data = await response.text(); // или response.json() для JSON
document.getElementById("result").textContent = data;
} catch (error) {
console.error("Порвал запроса:", error);
alert("Что-то пошло не так!");
}
}
</script>
<button onclick="getData()">Загрузить данные</button>
<pre id="result">Ожидание ответа...</pre>
Yarn был создан для решения проблем npm того времени: скорости, надежности и согласованности. Yarn представил такие новшества, как детерминированное разрешение зависимостей с помощью yarn.lock
, автоматическое кэширование пакетов, параллельную установку и многое другое.
Cloudflare Workers открыли современную эру serverless edge computing, объединив принципы бессерверных вычислений с распределением на периферии (на тот момент — около 100 дата-центров, сейчас — более 300) и быстрой, масштабируемой изоляцией. Благодаря запуску кода ближе к конечным пользователям снизилась задержка, а холодный старт стал минимальным, поскольку Workers работают на легких изолятах V8 (в отличие от контейнеров или микровиртуалок). Запуск Workers преобразовал Cloudflare из CDN-компании в полноценную платформу для веб-приложений, а также проложил путь другим платформам, таким как Netlify, Vercel и Deno Deploy, для внедрения изолированных граничных функций.
В отличие от других инструментов, таких как Selenium, которые требовали поддержки нескольких языков программирования, Puppeteer был создан специально для Node.js и предлагал современный, ориентированный на JavaScript API для управления безголовым (headless) браузером Chrome. Выпуск Puppeteer сделал Chromium фактическим стандартом для браузерной автоматизации, способствовал упадку PhantomJS и повлиял на создание таких фреймворков, как Playwright и Cypress.
TensorFlow был открыт Google в 2015 году и быстро стал основным инструментом для исследований в области машинного обучения. TensorFlow.js значительно упростил вход в ML для веб-разработчиков: теперь можно было использовать модели машинного обучения прямо в браузере, без Python. Это дало возможность создавать веб-приложения с встроенным ИИ и предсказаниями в режиме реального времени.
flatten
в flat
В 2018 году комитет TC39 предложил добавить в JavaScript новый метод flatten
для массивов — он должен был "расплющивать" вложенные массивы. Однако выяснилось, что библиотека MooTools уже использовала метод flatten
, причем его реализация была несовместима с новой. Это вызвало опасения, что новые изменения могут нарушить работу существующих проектов. В ответ на ситуацию один из членов TC39 в шутку предложил назвать метод smoosh
(плющить), что вызвало волну обсуждений и мемов в сообществе. В итоге решили остановиться на более нейтральном названии flat
.
В 2018 году Райан Даль представил новую среду выполнения JavaScript под названием "Deno" (анаграмма слова Node) в рамках популярного доклада "10 вещей, о которых я жалею в Node".
promise.finally()
и другими обновлениямиНа тот момент экосистема JavaScript с открытым исходным кодом была разделена между несколькими фондами, каждый из которых управлял разными проектами. Node.js Foundation занимался Node.js и серверной JavaScript-средой, а JavaScript Foundation (ранее jQuery Foundation) управлял клиентскими библиотеками, такими как jQuery, ESLint и Lodash. Эти фонды работали независимо, что приводило к дублированию ресурсов и раздробленной поддержке проектов JavaScript. С ростом роли Node.js как стандартной backend-платформы и развитием frontend-библиотек, объединение фондов было направлено на единое управление и поддержку всей экосистемы JavaScript.
Поскольку JavaScript начал использовать ES-модули для повторного использования кода, Node.js постепенно стал поддерживать эту концепцию. В версии 12.0.0 были введены расширение файлов .mjs
, поле type
в package.json
и новые механизмы для взаимодействия с CommonJS.
Object.fromEntries()
, String.prototype.trimStart()
и др.Node.js v13.2.0 ознаменовал официальную стабилизацию поддержки ECMAScript-модулей — важный этап в экосистеме Node.js. Это позволило разработчикам использовать стандартный синтаксис import
и export
нативно, что приблизило Node.js к современным стандартам JavaScript.
Известный сенсорный интерфейс капсулы Dragon работает на Chromium и полностью написан на JavaScript. Разработчики SpaceX объяснили на AMA, что выбор пал на Chromium благодаря его зрелости и доступности специалистов, знакомых с этой платформой.
Райан Даль представляет первую стабильную версию Deno — универсальный инструмент для разработки на современном JavaScript. Платформа выходит как единый исполняемый файл с полноценной поддержкой TypeScript, моделью разрешений по запросу и возможностью импортировать модули по HTTP.
Для тех, кто любит поностальгировать, Интернет-архив хранит коллекцию Flash-игр и анимаций.
Кто помнит эту игру?
Завершение поддержки IE11 ознаменовало конец эпохи, длившейся более двух десятилетий, в течение которых Internet Explorer был самым популярным браузером в мире. Из-за множества уязвимостей и несоответствия современным веб-стандартам, отказ от IE11 стал важным шагом к более безопасному, производительному и унифицированному веб-пространству.
await
верхнего уровня, новыми свойствами и методами классов, статическим блоком внутри классов и другими обновлениямиПоявилась новая серверная среда выполнения JavaScript (написанная на Zig), которая позиционирует себя как максимально эффективная замена Node.js.
Идея создания талисмана обсуждалась в сообществе Node.js на протяжении многих лет. В 2023 году Матео Коллина начал обсуждение этой темы в GitHub, что привело к проведению конкурса дизайна в Twitter. К февралю был выбран финальный дизайн — Rocket Turtle.
toWellFormed()
для возврата корректно сформированных Unicode-строк и другими обновлениямиКоманда Deno представила JSR — реестр JavaScript, который призван улучшить опыт установки и публикации пакетов. Он поддерживает только ECMAScript-модули, нативно понимает TypeScript, совместим с npm и обеспечивает кроссплатформенную поддержку для Deno, Bun, workerd и других инструментов.
После того как пост Райана Дала с просьбой к Oracle освободить торговую марку JavaScript привлек внимание сообщества (но не получил никакого ответа от Oracle), команда Deno опубликовала открытое письмо с намерением оспорить права Oracle, подав петицию об отмене регистрации в USPTO по причине отказа от торговой марки. Письмо собрало почти 20 000 подписей, включая известных личностей, таких как Брэндан Айк, Айзек З. Шлютер и других. Юридическая борьба продолжается, а обновления можно отслеживать в Twitter (X) или Bluesky от команды Deno.
Deno 2 — крупное обновление, сохраняющее простоту версии 1.x, но при этом обеспечивающее обратную совместимость с устаревшим JavaScript, включая Node и npm. С этим релизом Deno стал первой средой выполнения JavaScript, выпустившей коммерческую рекламу.
TypeScript, изначально реализованный на TypeScript/JavaScript, долгое время сталкивался с проблемами производительности при работе с крупными проектами. Чтобы устранить эту проблему, Андерс Хейлсберг начал экспериментировать с реализацией TypeScript на языке Go. Первые тесты показали примерно десятикратное улучшение скорости, что вдохновило команду TypeScript продолжить работу над портированием на Go под названием tsgo
. Выпуск tsgo планируется в TypeScript 7.0, когда он достигнет достаточного функционального соответствия версии на JavaScript.
Андерс Хейлсберг представляет новую реализацию TypeScript.
В условиях активного развития AI-ассистированного кодирования и появления множества инструментов для разработчиков, Microsoft продолжает поддерживать движение open source, объявив об открытии расширения GitHub Copilot Chat под лицензией MIT. В конечном итоге компания планирует сделать VS Code открытым AI-редактором. Этот шаг призван стимулировать сообщество улучшать и развивать общие AI-взаимодействия в разных редакторах, повышая качество агентского программирования во всех инструментах.
JavaScript прошел долгий путь за свои 30 лет — от простого скриптового языка до основы современной веб-разработки, которая питает все: от динамичных интерфейсов до полноценных full-stack приложений, нативных приложений и даже AI-инструментов. Его эволюция была возможна благодаря приверженности открытым стандартам, активному сообществу, постоянно растущей экосистеме и непрерывным инновациям. Отмечая три десятилетия JavaScript, мы с нетерпением смотрим вперед: к более быстрым средам выполнения, умным инструментам и вебу, который становится доступнее, мощнее и креативнее, чем когда-либо. За следующие 30 лет новых достижений и прорывов!
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩