dimonchik2013: руби более востребован как раз таки из-за фишки с написанием тестов, это сродни религии. Тесты снижают риски так что для стартапчиков и прочего это важно. Другое дело что другия языки, в том числе и php, потихоньку подтягиваются. Хотя PHP еще далеко до этого уровня, но количество адекватных разработчиков растет что не может не радовать.
shmitok: лучшее решение - все же подтянуть английский. Хорошая новость в том что это более чем возможно совместить вместе с изучением программирования. И да, большая часть знаний не привязана к языку программирования. так что в принципе было бы неплохо либо взять сначала язык с хорошей культурой разработки и потом уже плясать по ситуации.
Николай: пререндринг на сервере в основном не на SEO расчитан (для ангуляра можно просто подсовывать статику из phantomjs). Тут больше уменьшение времени ожидания для пользователя.
howehohit: а еще проще вариант - nginx, гугл выпустил модуль для nginx-а который делает это все на уровне реверс-прокси, то есть вообще ничего не надо делать.
lega: я прекрасно знаю что такое фабрика и что такое Dependency injection container (я как бы еще на php пишу и у нас это тип в любом уважающем себе фреймворке есть).
То что вы называете не нужной оберткой я называю регистрацией сервисов в контейнере. И там все с этим хорошо.
lega: ангуляр тут не причем и никакие "обертки" он не навязывает. "сервис" обертка это не обертка, это вызов конструктора, когда все зависимости передаются явно внутрь. Но поскольку JS чуть более чем убог, и только с ES2015 можно делать удобно объекты (либо со штуками типа klass.js), то люди юзали как могли что могли. Ну и да, если вам надо возвращать не объект а функцию - то фабрика - норма вариант. Если вам надо иметь возможность конфигурить фабрику - то провайдер. Но в 99% случаев хваает сервиса.
Так что все хорошо у ангуляра, но да, легко можно выстрелить себе в ногу.
Арам Арамян: точнее не так, если у нас бизнес логика отделена от фреймворка, и UI поделен на компоненты, нет прямой работы с DOM - то проблема не настолько серьезная как вам возможно кажется.
Арам Арамян: ну как бы у меня 2-х летний опыт с 1.x и чуть чуть с 2.0 40-ые альфы, и могу сказать, что если у нас логика приложения написана нормально и структура приложения адекватна - все не так уж плохо. Но конечно можно легко сделать непереносимую апу.
DarthJS: у меня у одного модуля есть add.html и у другого есть add.html, и в итоге мне надо вводить нэймспейсы. С require я просто не парюсь + у меня появляются дополнительные штуки. Например так как я использую jade у меня реквайрится таки не html строка а JS функция. так что в моем случае все вообще православно. И в эту JS функцию я могу передать атрибуты директивы, и в зависимости от оных что-то сделать.
С HTML да, тупова-то. С jade и другими препроцессорами которые могут скомпилить разметку в js - весьма удобно.
DarthJS: ну не сказать что я в восторге, но это в принципе логично и способствует модульности проекта. с templateCache слишком много гемороя. А так - удобненько. Только я вместо html jade использую. Ну и потом с ES2015 модулями и system.js можно делать так же и стандарт это не запрещает.
hjk: вот в заголовке прям есть такая аббривиатура как BEM. Если погуглить то вы найдете правила именования. Двойные подчеркивания и дефисы выбрали как недвусмысленный разделитель. Ну то есть два нижних подчеркивания разделяют блок и элемент (блок вэтом случае как пространство имен). Два дефиса - модификатор. Таким образом мы можем использовать подчеркивания и дефисы в именах блоков, элементов и модификаторов и при этом видно что к чему. Но конечно можно не загоняться так.