Паттерны для масштабируемых JavaScript-приложений ч.1

Перевод статьи Эдди Османи "Patterns For Large-Scale JavaScript Application Architecture"

В этой статье мы обсудим набор паттернов, который поможет вам в создании больших масштабируемых JavaScript-приложений. Материал статьи основан на моем одноименном докладе, впервые прочитанном на конференции «LondonJS», и вдохновленном предшествующей ему работой Николаса Закаса.

Вы можете скачать эту статью в форматах: epub, mobi, fb2 и pdf.

Оглавление

Введение

Кто я и почему я решил об этом написать?

Меня зовут Эдди Османи. Сейчас я работаю JavaScript и UI-разработчиком в AOL. Я занимаюсь планированием и написанием фронтенд-архитектуры для наших пользовательских приложений нового поколения. Эти приложения весьма сложны. Они нуждаются в архитектуре, позволяющей, с одной стороны легко их масштабировать, а с другой достаточно легко использовать повторно их модули. Также я занимаюсь разработкой шаблонов, которые можно применять в разработке приложений подобного масштаба настолько качественно, насколько это вообще возможно.

Кроме того, я рассматриваю себя как евангелиста шаблонов проектирования (хотя есть много экспертов, разбирающихся в этом лучше меня). В прошлом я написал книгу «Essential JavaScript Design Patterns», а сейчас я занимаюсь написанием более подробного продолжения этой книги.

Могу ли я уместить эту статью в 140 символов?

Я уместил эту статью в один твит, на случай, если у вас совсем мало времени:

Меньше связанности: используйте паттерны «модуль», «фасад» и «медиатор». Модули общаются через медиатор, а фасад обеспечивает безопасность.

Что представляет собой «большое» JavaScript-приложение?

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

Ради эксперимента я предложил нескольким среднестатистическим разработчикам дать собственное определение этому термину. Один из разработчиков сказал, что речь идет о «JavaScript-приложениях, состоящих из более чем 100 000 строк кода», когда другой определил что большое приложение «содержит больше чем 1 МБ JavaScript». Я расстроил храбрецов — оба этих варианта далеки от истины. Количество кода не всегда коррелирует со сложностью приложения. 100 000 строк легко могут оказаться самым ничем не примечательным простым кодом.

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

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

Я думаю, что последняя часть определения — самая важная.

Авторизация