Вернемся в 2009 год. Жизнь кажется прекрасной, но только до тех пор, пока вам не приходится садиться за работу. Если в ваши обязанности входит написание кода на JavaScript, то коллеги-программисты, скорее всего, смотрят на вас с легким сочувствием.
В те времена JavaScript считался «языком-калекой», созданным на коленке за 10 дней. Разные браузеры интерпретировали его как вздумается, у него не было ни стандартной библиотеки, ни модулей, ни классов. Писать на нем чистый код без использования jQuery (своеобразного «костюма химзащиты») было настоящим испытанием для психики.
Но за следующее десятилетие произошло чудо: JavaScript превратился в один из самых популярных и уважаемых языков программирования в мире. У этого триумфа много отцов, но один из самых недооцененных героев, чье имя сегодня практически забыто, — это Джереми Ашкенас (Jeremy Ashkenas).
В 2009 году Джереми работал в компании Document Cloud. Ему приходилось создавать тяжелые клиентские веб-приложения — редкость и огромная головная боль по тем временам. Имея бэкграунд в Ruby, он искренне страдал от «дикого» JavaScript. Но вместо того чтобы смириться, Джереми решил исправить язык своими силами. И сделал это в три шага.
Шаг 1. Создание стандартной библиотеки (Underscore.js)
Главной бедой JavaScript в 2009 году было отсутствие базовых инструментов для работы с данными. В то время как Firefox уже поддерживал удобные методы массивов вроде map, reduce и forEach, самый популярный браузер эпохи — Internet Explorer — о них даже не слышал.
Чтобы решить эту проблему, Джереми выпустил Underscore.js. Это была библиотека-«швейцарский нож», содержащая около 60 функций-помощников для комфортной работы с массивами и объектами.
Итог: Инструмент стал настолько популярным, что со временем большинство функций Underscore были официально интегрированы в сам стандарт JavaScript, сделав библиотеку классикой, выполнившей свою миссию.
Шаг 2. Эволюция синтаксиса (CoffeeScript)
Вместо того чтобы бесконечно расширять JavaScript библиотеками, Джереми пошел дальше и создал новый язык, который компилировался в JS. Так родился CoffeeScript.
На тот момент JavaScript пугал разработчиков своими «темными углами»:
- Не было классов, а наследование шло через запутанную работу с прототипами (
prototype). - Странные правила области видимости переменных (
var) приводили к непредсказуемому поведению кода из-за хойстинга (поднятия переменных). - Постоянная путаница между операторами равенства (
==) и тождества (===). - Необходимость писать громоздкое слово
functionна каждом шагу.
CoffeeScript убрал весь этот визуальный мусор и скрыл «плохие части» языка. Создатель Ruby on Rails Дэвид Хайнемайер Ханссон (DHH) мгновенно влюбился в проект, и в 2011 году CoffeeScript стал встроенным препроцессором в Rails 3.1. GitHub, Dropbox и десятки топовых стартапов перешли на него.
Сегодня CoffeeScript практически мертв, но именно он сформировал современный JavaScript (ES6+). Каждый раз, когда вы используете эти фичи, вы говорите «спасибо» Джереми Ашкенасу:
- Стрелочные функции (
() => {}) - Классы (
class) - Деструктуризацию объектов и массивов
- Шаблонные строки (интерполяцию строк)
- Параметры по умолчанию и оператор spread (
...)
Шаг 3. Архитектура для больших приложений (Backbone.js)
К 2010 году Джереми дал языку подобие стандартной библиотеки и красивый синтаксис. Но оставалась третья проблема: отсутствие архитектуры. Крупные проекты быстро превращались в тысячи строк «спагетти-кода», где данные, логика отображения и обработчики событий были намертво запутаны друг с другом.
В ответ на это Джереми выпускает Backbone.js — крошечную библиотеку (менее 2 000 строк кода), которая впервые принесла полноценную концепцию MVC (Model-View-Controller) на фронтенд.
| Компонент Backbone.js | За что отвечал |
| Models (Модели) | Хранение данных приложения и бизнес-логика |
| Collections (Коллекции) | Удобные группы моделей с возможностью фильтрации и сортировки |
| Views (Представления) | Логика отображения интерфейса и обработка событий |
Backbone доказал, что на JavaScript можно строить масштабные и стабильные приложения. В период с 2011 по 2014 год на нем держался весь прогрессивный веб: ранние версии Trello, Airbnb, Hulu и Pinterest.
Наследие, о котором стоит помнить
В конечном итоге Backbone уступил место Angular, Ember, а затем и React, которые развили и углубили его идеи. Но именно триада Джереми Ашкенаса — Underscore, CoffeeScript и Backbone — прорубила окно в современную веб-разработку.
Сегодня легко забыть, насколько плох был JavaScript на заре своего развития. Но современный веб, каким мы его знаем, построен на фундаменте и идеях человека, чье имя сейчас незаслуженно осталось в тени истории.
