Взгляд в будущее JavaScript
Опубликовано: 2022-03-11Каждый рынок управляется некоторыми общими концепциями, и разработка JavaScript не является исключением.
Жизненный цикл продукта — это концепция, которую можно применить к нескольким различным средам, чтобы понять и предсказать их поведение. Это бизнес-концепция, которая помогает нам понять этапы, которые продукт проходит в течение своей жизни, объясняя влияние этих этапов на показатель его популярности — в большинстве случаев на продажи. Если мы наблюдаем модели поведения на рынке, мы можем оценить текущую стадию продукта и, следовательно, сделать некоторые прогнозы относительно его популярности.
Существует четыре этапа: введение, рост, зрелость и спад, и на приведенной выше диаграмме вы можете увидеть влияние каждого этапа на ожидаемые продажи продукта. Например, продажи смартфонов не растут так, как пять лет назад — на самом деле все наоборот, — поэтому можно с уверенностью сказать, что смартфоны вступают в стадию зрелости.
За последние несколько лет мы стали свидетелями появления множества новых технологий в JavaScript, но нам нужно было время, чтобы увидеть, как рынок их примет. Никто не хочет быть специалистом по еще одной многообещающей технологии, которая не будет принята. Однако теперь пришло время взглянуть еще раз. В этой статье я рассмотрю, насколько популярным становится JavaScript, и факторы, которые могли повлиять на эту популярность, и попытаюсь предсказать, как будет выглядеть будущее JavaScript.
Будущее возможностей языка JavaScript
С тех пор, как Европейская ассоциация производителей компьютеров (ECMA) установила ежегодный цикл выпуска ECMAScript, стандартизированной спецификации JavaScript, мы не видели много новых функций в языке — всего несколько каждый год. Это может быть одной из причин, по которой мы увидели рост популярности языков, которые компилируются в ES5, таких как TypeScript или ReasonML, которые привносят в язык функции, которые очень востребованы сообществом. Это не ново — JavaScript проходил этот процесс раньше (CoffeeScript), и, в конце концов, эти функции были объединены в сам стандарт языка, и, вероятно, это будущее, которое мы можем ожидать и для этих новых типизированных функций.
Но теперь мы начинаем видеть изменение правил игры на рынке компиляции в js с увеличением доступности WebAssembly в браузерах. Теперь мы можем использовать практически любой язык и скомпилировать его для работы в браузере почти с исходной скоростью, и, что более важно, мы начинаем видеть поддержку перспективных функций, таких как поддержка потоков, которые позволят нам воспользоваться преимуществами многозадачности. -архитектура процессора, которая представляет собой неизбежное будущее всех устройств.
Официальный набор инструментов для WebAssembly поможет вам скомпилировать C/C++, но существует множество компиляторов, предоставляемых сообществом для разных языков, таких как Rust, Python, Java и Blazor (C#).
В частности, сообщество Rust довольно активно, и мы начали видеть готовые интерфейсные фреймворки, такие как Yew и Dodrio.
Это дает множество новых возможностей для приложений на основе браузера, и вам нужно только протестировать некоторые из замечательных приложений, созданных с помощью WebAssembly, чтобы увидеть, что почти нативные приложения на основе браузера уже стали реальностью, например, Sketchup или Magnum.
Принятие типизированных языков, которые компилируются в ES5, достаточно зрело, игроки хорошо зарекомендовали себя, и они не исчезнут (или не будут объединены с ES) в ближайшем будущем, но мы увидим медленный сдвиг в пользу типизированных языков с Веб-сборка.
Интернет
Фронтенд-фреймворки
Каждый год мы наблюдаем большую борьбу на рынке интерфейсных фреймворков для Интернета, и React был неоспоримым победителем в течение последних нескольких лет — с момента появления их революционной технологии Virtual DOM мы увидели почти обязательное перенятие от своих собратьев, чтобы оставаться актуальными в бою.
Несколько лет назад мы увидели введение радикально нового подхода к разработке веб-приложений с помощью Svelte, «фреймворка компилятора», который исчезает во время компиляции, оставляя небольшой и высокоэффективный код JavaScript. Однако этой функции было недостаточно, чтобы убедить сообщество перейти на Svelte, но с недавним запуском Svelte 3.0 они представили настоящее реактивное программирование в фреймворке, и сообщество в восторге, так что, возможно, мы наблюдаем следующее большое событие впереди. -концевые рамки.
Вдохновленный оператором судьбы:
var a = 10; var b <= a + 1; a = 20; Assert.AreEqual(21, b);
Svelte привносит реактивность в JavaScript, перегружая использование операторов меток реактивностью во время компиляции, указывая коду выполняться в топологическом порядке:
var a = 10; $: b = a + 1; a = 20; Assert.AreEqual(21, b);
Это радикально новая идея, которая может помочь в различных контекстах, поэтому создатель Svelte также работает над svelte-gl, структурой компилятора, которая будет генерировать низкоуровневые инструкции WebGL непосредственно из графа трехмерной сцены, объявленного в HTMLx.
Излишне говорить, что React, Angular и Vue.js не исчезнут в одночасье, их сообщества огромны, и они будут оставаться актуальными еще несколько лет — мы даже не уверены, станет ли фактическим преемником Svelte, но мы в чем-то можно быть уверенным: рано или поздно мы будем использовать что-то другое.
WebXR и будущее иммерсивного Интернета
Виртуальная реальность последние 60 лет изо всех сил пыталась найти место в мейнстриме, но технология была еще не готова. Менее десяти лет назад, когда Джон Кармак присоединился к Oculus VR (теперь часть Facebook Technologies, LLC), начала подниматься новая волна виртуальной реальности, и с тех пор мы увидели множество новых устройств, поддерживающих различные типы виртуальной реальности и конечно, распространение VR-совместимых приложений.
Производители браузеров не хотели упускать эту возможность, поэтому они присоединились к спецификации WebVR, позволяющей создавать виртуальные миры на JavaScript с помощью WebGL и хорошо зарекомендовавших себя библиотек, таких как three.js. Тем не менее, рыночная доля пользователей с 6dof-устройствами по-прежнему была незначительной для массовых веб-развертываний, но мобильный Интернет по-прежнему мог предоставлять 3D-опыт с помощью API ориентации устройства, поэтому мы увидели множество экспериментов и множество 360-градусных видеороликов для какое-то время.
В 2017 году с введением ARKit и ARCore новые возможности были предоставлены мобильным устройствам и всевозможным приложениям с возможностями AR и MR.
Однако по-прежнему кажется немного неестественным загружать одно конкретное приложение для одного конкретного опыта AR, когда вы исследуете окружающий мир. Если бы у нас было только одно приложение для изучения разных возможностей… Звучит знакомо. В прошлом мы решили эту проблему с помощью браузера, так почему бы не попробовать еще раз?

В прошлом году Mozilla представила спецификацию WebXR Device API Spec (последний рабочий проект которой на момент написания этой статьи был сделан две недели назад), чтобы добавить в браузер возможности AR, VR и MR (то есть XR).
Несколько наиболее важных поставщиков браузеров последовали их внедрению, за одним важным исключением: мобильный Safari, поэтому, чтобы доказать свою точку зрения, Mozilla выпустила браузер с поддержкой WebXR для платформы iOS WebXR Viewer.
Теперь это важный шаг, потому что комбинация AR и VR приносит 6dof на мобильные устройства и гарнитуры на базе мобильных устройств, такие как Google Cardboard или Samsung Gear VR, как вы можете видеть в этом примере, увеличивая долю рынка 6dof устройств на большой запас и возможность широкомасштабного веб-развертывания.
В то же время ребята из Mozilla работают над новым веб-фреймворком для облегчения создания трехмерных миров и приложений под названием A-Frame, декларативным фреймворком на основе компонентов с синтаксисом HTML, основанным на three.js и WebGL. иметь в виду только одно — вернуть веселье и простоту использования в веб-программирование.
Это часть их крестового похода к иммерсивной сети, новый набор идей о том, как сеть должна выглядеть в будущем. К счастью для нас, они не одиноки, и мы будем видеть все больше и больше захватывающих впечатлений в Интернете.
Если вы хотите попробовать, загрузите WebXR Viewer и посетите этот сайт, чтобы увидеть возможности иммерсивного Интернета.
Опять же, стандартные браузерные приложения не исчезнут через год или два — они, вероятно, всегда будут у нас. Но 3D-приложения и опыт XR растут, и рынок готов и хочет их иметь.
Встроенная поддержка ES6
Почти каждая технология, изобретенная в JavaScript за последнее десятилетие, была создана для решения проблем, порожденных базовой реализацией браузеров, но сама платформа сильно повзрослела за последние несколько лет, и, как мы видим, большинство этих проблем исчезли. с Lodash, который когда-то лидировал в тестах производительности.
То же самое происходит с моделью DOM, проблемы которой когда-то послужили источником вдохновения для создания фреймворков веб-приложений. Теперь это зрелый API, который можно использовать без фреймворков для создания приложений — собственно, это и есть веб-компоненты. Они являются «каркасом» платформы для создания приложений на основе компонентов.
Другой интересной частью эволюции платформы является сам язык. Мы использовали Babel.js в течение последних нескольких лет, чтобы иметь возможность использовать новейшие функции ECMAScript, но, поскольку сам стандарт в последние несколько лет начал немного стагнировать, этого времени было достаточно, чтобы позволить поставщикам браузеров для реализации большинства своих функций, включая встроенную поддержку оператора статического импорта. Итак, теперь мы можем начать рассматривать создание приложений без Babel.js или других компиляторов, поскольку у нас (опять же) есть поддержка языковых функций в самой платформе, и поскольку Node.js использует ту же виртуальную машину V8, что и Google Chrome. , мы начали видеть более сильную поддержку ES6 в Node.js, даже с оператором статического импорта под флагом Experimental-Modules.
Это не означает, что мы перестанем видеть приложения, компилируемые на профессиональном уровне, но это означает, что начать работу с браузерным приложением будет легко и весело, как это было раньше.
Серверный JavaScript
Несмотря на то, что JavaScript начал использоваться на стороне сервера в 1995 году с Netscape Enterprise Server, только после презентации Райана Даля в 2009 году JavaScript начал серьезно рассматриваться для приложений на стороне сервера. Многое произошло за последнее десятилетие с Node.js. Он сильно развился и повзрослел, снова создав возможность для прорыва и новых технологий.
В данном случае это исходит от его собственного создателя, Райана Даля, который работал над новой перспективой защищенных серверных приложений с Deno, платформой, изначально поддерживающей новейшие языковые функции, такие как async/await, и также самый популярный язык компиляции в js TypeScript, нацеленный на лучшую производительность благодаря их реализации в Rust и использованию Tokio, но, что более важно, с новой философией безопасности, которая отличает его от большинства серверных платформ, таких как Python, Руби или Java). Вдохновленный моделью безопасности браузера, Deno позволит вам использовать ресурсы хоста только после того, как пользователь явным образом предоставит разрешения процессу, что может показаться немного утомительным в начале, но может привести к большому количеству последствий, разрешив нам запускать незащищенный код в защищенной среде, просто доверяя платформе.
Node.js по-прежнему будет существовать в будущем, но, возможно, мы начнем видеть бессерверные сервисы, такие как AWS Lambda и Azure Functions, для предоставления функциональности Deno в качестве альтернативы для обеспечения незащищенного выполнения кода на стороне сервера в их системах.
Заключение
Это захватывающее время в мире JavaScript — многие технологии достаточно созрели, чтобы оставить место для инноваций, активное сообщество никогда не переставало удивлять нас своими блестящими и невероятными идеями, и мы ожидаем множество новых альтернатив хорошо зарекомендовавшим себя инструментам. так как их зрелые стадии наступают быстро; мы не перестанем их использовать, так как многие из них действительно хороши и есть много доказательств на поле боя, но начнут появляться новые и захватывающие рынки, и вам лучше быть готовым.
Быть в курсе последних событий в мире JavaScript непросто из-за темпов разработки, но есть некоторые источники, которые действительно могут помочь. Во-первых, самый важный источник новостей, на мой взгляд, — это Echo JS, где каждый час можно получить невероятное количество нового контента. Однако, если у вас нет времени, Еженедельный информационный бюллетень JavaScript станет отличным подведением итогов недели в JS. Помимо этого, также важно следить за конференциями по всему миру, и каналы YouTube, такие как JSConf, React Conf и Google Chrome Developers, очень полезны.
И наоборот, если вам интересно увидеть конструктивную критику того, куда движется JavaScript, я рекомендую прочитать «Как разработчик JS, это то, что не дает мне спать по ночам » коллеги-разработчика JavaScript Джастена Робертсона.
Дальнейшее чтение в блоге Toptal Engineering:
- TypeScript против JavaScript: ваше руководство