Возможно ли обойтись без использования фасада (песочницы)?

Хотя архитектура, которую я изложил здесь, использует фасад для обеспечения безопасности, вполне возможно достичь того же с помощью медиатора — сообщения могут обрабатываться непосредственно ядром без использования фасада. Такая упрощенная версия все равно будет обеспечивать необходимо низкий уровень связывания кода, но при выборе этого варианта, нужно понимать, насколько вам будет комфортно работать с модулями, которые взаимодействуют напрямую с ядром.

В книге говорилось о том, что модули не должны иметь любых зависимостей, касается ли это библиотек (к примеру, jQuery)?

Я специально вынес вопрос о зависимостях от других модулей сюда. Когда некоторые разработчики выбирают подобную архитектуру, этот выбор подразумевает что они будут использовать определенные абстракции от DOM-библиотек. К примеру, вы можете использовать вспомогательную утилиту, которая будет возвращать нужные вам DOM-элементы используя jQuery (или dojo). Благодаря этому, модули все еще могут удобно работать с DOM, но уже будут это делать не напрямую, жестко используя конкретную библиотеку. Существует достаточно много способов, как сделать модули независимыми, но стоит понимать, что, в обсуждаемой нами архитектуре, идеальные модули не должны иметь зависимостей.

Вы заметите, что иногда при таком подходе становится гораздо легче взять законченный модуль из одного проекта и перенести его в другой проект с небольшими дополнительными усилиями. Должен сказать, я полностью согласен с тем, что порой намного лучше, когда модули, вместо определенной части своей функциональности, просто используют другие модули. Как бы то ни было, держите в голове то, что такие модули, в некоторых случаях, могут потребовать гораздо больше усилий для переноса в другой проект.

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

Когда у меня будет немного свободного времени, я планирую написать для этой книги бесплатный шаблон проекта, но сейчас, наверное, лучший выбор — платное учебное пособие написанное Эндрю Бэджис — «Написание модульного JavaScript» (разоблачу себя: деньги от этой реферальной ссылки, как и любые другие, полученные от этой книги деньги уже инвестируются в обзор будущих материалов перед тем, как я порекомендую их другим). Пособие Эндрю включает в себя скринкаст и примеры кода. Оно охватывает большую часть идей, которые мы обсуждали в книге, но в нем, вместо названия «фасад» используется слово «песочница», как у Николаса Закаса. Так же, здесь есть обсуждение о том, что работа с DOM-библиотеками, в идеале, должна быть реализована посредством абстракции. Я говорил об этом в предыдущем вопросе. Тут Эндрю делает ставку на некоторые интересные шаблоны, обобщающие работу с селекторами DOM, таким образом, в крайнем случае, замена библиотеки может быть выполнена в несколько коротких строк. Я не говорю, что это лучший или самый правильный подход, но я поступаю именно так.

Могут ли модули взаимодействовать с ядром напрямую, если это необходимо?

Как заметил раньше Николас Закас, технически, нет никаких причин, мешающих модулям напрямую обращаться к ядру. Это скорее относится к «лучшим практикам». Если вы намерены строго следовать этой архитектуре, то вы должны также следовать ее правилам. Либо следовать правилам более простой архитектуры, которая была описана в первом вопросе.

Рекомендуем почитать:
Книги по JavaScript на ozon.ru
Книги по JavaScript на books.ru
Книги по JavaScript на my-shop.ru