10-я неделя в Viking Code School углубилась в Javascript. Прежде всего, основное внимание было уделено объектно-ориентированному Javascript. Это включало в себя изучение прототипного наследования, организацию моего кода с использованием объектной модели, областей видимости и замыканий, а затем шаблона модуля. Было очень много всего, что можно было усвоить за одну неделю, но к концу я уже делал несколько отличных игр на Javascript: тетрис и астероиды. Хвост той недели закончился AJAX и тем, как отправлять асинхронные запросы на серверную часть, чтобы получить информацию без полной загрузки страницы. Как только я понял синтаксис, было очень весело иметь возможность подключаться к моей базе данных, извлекать информацию и обновлять представление без необходимости обновлять страницу.
Все это ведет прямо к этой неделе. Неделя 11 в VCS продолжалась с AJAX, но с другой стороны: как Rails работает с запросами AJAX и возможностью упаковывать данные обратно в JSON или использовать встроенные функции Rails и обновлять представление напрямую с помощью Javascript. Всегда здорово изучать Railsified способ обработки определенных функций, и здесь было то же самое. Добавив remote: true в мои формы и перенастроив мои контроллеры для response_to в формате js, а затем, наконец, создав несколько шаблонов Javascript, я смог реализовать асинхронность, которую я выполнял с ручными запросами AJAX, и возвращал JSONified объекты, но теперь с запеченными -в функциях и методах Rails.
Вторая половина этой недели была в некотором роде отходом от вещей, которые мы изучали ранее, но опять же, в некотором смысле, все, чему мы учились за последние пару недель, готовило нас к этому новому рубежу: интерфейсные фреймворки. В частности, AngularJS. Я действительно понятия не имел, чего ожидать от внешнего интерфейса. Исходя из Rails, я думаю, с одной стороны, я мог представить, как фреймворк сможет структурировать код в псевдошаблоне MVC, но как все это будет происходить, я понятия не имел. Самым большим изменением для меня, по сравнению с Javascript, было бы то, насколько тесно Angular связан с представлением. Сначала было действительно здорово иметь возможность добавлять директивы прямо в теги и видеть, как магия Angular превращает тег в событие клика, или иметь возможность повторять тег с объектом в области видимости. Двусторонняя привязка тоже отличная функция в Angular, которую я никогда не мог себе представить до работы с этим фреймворком. Затем пошла отладка. Ошибки в консоли, которые не имели смысла (для меня), копаясь в коде и находя синтаксическую ошибку, которая приводила к поломке всего моего приложения. Я предполагаю, что все приходит с работой с новым фреймворком.
Конец недели завершил основы Angular. Я узнал больше о том, как область действия работает в Angular, о разнице между двухсторонней и односторонней привязкой и создавал свои собственные пользовательские директивы. Я работаю с Angular всего два дня, но уже начинаю видеть силу, стоящую за ним, и то, на что он способен. Возможность таким образом манипулировать внешним интерфейсом, видеть, что возможно, и что еще мне нужно узнать (скоро я буду создавать собственные сервисы) — все это очень интересно. У Angular определенно есть свои плюсы и минусы, и пока для меня плюсы перевешивают минусы. Посмотрим, как обстоят дела с этим прогнозом в ближайшие недели.