Google AngularJS Framework - стоит риска? - PullRequest
65 голосов
/ 04 октября 2011

Меня попросили создать небольшое веб-приложение для одного из наших клиентов, и я думаю, что это может быть хорошей возможностью попробовать другую среду для создания веб-приложений. Большинство приложений, которые мы создаем, основаны на веб-формах asp.net, и мы еще ничего не сделали в архитектуре MVC, но мне не терпится начать создавать веб-приложения более структурированным образом с помощью правильных инструментов.

Я исследовал такие вещи, как asp.net MVC и тому подобное, которые выглядят довольно неплохо, но мне интересно, можно ли что-то сказать об использовании чего-то вроде Google AngularJS Framework.

Если возможно, я все еще хотел бы иметь возможность писать свой код на стороне сервера, используя c #, и я недостаточно исследовал AngularJS, чтобы знать, возможно ли это вообще, хотя я предполагаю, что мог бы использовать веб-сервисы.

Кто-нибудь имел опыт разработки приложения с использованием AngularJS, и если да, как это было, и можете ли вы указать мне правильное направление для некоторых учебных пособий?

Ответы [ 8 ]

104 голосов
/ 05 октября 2011

В течение последних нескольких месяцев мы разрабатывали порт для толстого клиентского приложения Swing в AngularJS, и я думаю, что это стоит рекомендовать.Что касается учебных ресурсов, зайдите на официальный сайт проекта (и обязательно прочитайте учебник) и список рассылки (авторы очень полезны).

Хорошие вещи:

  • отличная тестируемость
  • двусторонняя привязка данных является очень мощной функцией, и она может быть чрезвычайно полезна, когда вы ее получите "
  • IMO шаблоны AngularJS гораздо менее хрупки, чемиспользование атрибутов данных или «специальных» CSS-классов для маркировки элементов, которые что-то делают
  • , значительно снижает потребность в использовании плагинов jquery, потому что реализовать эту функциональность в AngularJS очень легко (например, деревья, вкладки, аккордеоныи т.д.)

Плохие вещи:

  • кривая обучения кажется довольно крутой (у меня не было особых проблем, но я видел, как некоторые люди борютсяс ним)
  • проверки в AngularJS на данный момент отстой (готовится новая реализация)
  • не все библиотеки / плагины jquery хорошо работают с Angularи обычно вам нужно обернуть их
  • API все еще дорабатывается, так что ожидайте критических изменений (хотя это не большая проблема с частыми выпусками и очень хорошим журналом изменений)
  • производительность в порядке вплоть донесколько тысяч привязок на странице - в большинстве случаев это не ограничение, но бывают случаи, когда это может быть проблемой.

Некоторые указатели (если вы когда-нибудь решите изучать AngularJS):

  • некоторые люди действительно злоупотребляют виджетами.По моему опыту, гораздо лучше использовать HTML "partials" + сервисы и использовать только виджеты спорадически.
  • читать исходный код библиотеки - это лучшее место, чтобы узнать материал об angular
  • нет манипуляций с DOM в сервисах / контроллерах
  • если вы используете классы css для привязки к событиям, вы делаете это неправильно
26 голосов
/ 10 октября 2011

+ 1 @ psycho's answer

AngularJS - это клиентская среда, поэтому вы можете использовать любой язык на сервере.Он разработан для совместной работы с jQuery, с большим акцентом на тестирование ...

Вот некоторые ресурсы, которые могут оказаться полезными:

Некоторые примеры приложений:

Адаптердля SenchaTouch: https://github.com/tigbro/sencha-touch-angular-adapter

Адаптер для jQ Mobile: https://github.com/tigbro/jquery-mobile-angular-adapter

Не стесняйтесь задавать любые вопросы в списке рассылки !

Мы все еще находимся в бета-версии, но в Google уже есть несколько внутренних приложений, работающих на AngularJS .


ОБНОВЛЕНИЕ (26 июля 2012 г.):

Выпущена версия AngularJS v1.0.

Для некоторых общедоступных приложений на базе AngularJS ознакомьтесь с http://builtwith.angularjs.org

20 голосов
/ 30 июня 2012

ИМХО разрабатывать что-то для клиента, которое у него могут возникнуть трудности, непрофессионально. Вы должны иметь в виду, что вашему клиенту будет трудно нанять опытных профессионалов Angular или обучить своих людей, чтобы они поднимались по этой «крутой кривой обучения». Кроме того, до сих пор документация не так уж велика. Можете ли вы через несколько минут легко ответить на вопрос: «Как я могу подключить мое блестящее приложение Angular к базе данных моего клиента?» Может ли ваш клиент когда-нибудь в будущем легко получить существующий код и адаптировать его к своим будущим потребностям? Будь честным.

Сравните простую старую надежную разработку LAMP с Angular. Для «маленького веб-приложения» я действительно верю, что профессионал должен дать своему клиенту что-то удобное и простое в обслуживании.

Нельзя сказать, что Angular не крутой и сексуальный и т.д. Слегка пошли бы по моей рекомендации. Сначала создайте свой собственный сайт с Angular и узнайте, что вы думаете, прежде чем подарить свои невероятные новые навыки доверенному клиенту.

11 голосов
/ 10 февраля 2013

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

JQuery манипулирует DOM во время выполнения, тогда как AJS находится в жизненном цикле рендеринга JS.Это позволяет вам обучать DOM новым трюкам, создавая свои HTML-элементы и атрибуты.Это очень, очень сильно.То, что вы можете сделать, - это ввести новое поведение Элемента для любых ваших целей и потребностей.В AJS эти пользовательские атрибуты / элементы HTML называются директивами.Благодаря возможности создавать свои собственные директивы, вы можете создавать функциональные возможности, которых нет в текущем HTML-коде, исключая возможности, которые будут работать во всех современных браузерах сейчас и в будущем.Из многих подходов к созданию нового поведения AJS представляется наиболее безопасным направлением, которое можно выбрать из-за того, как они решили его реализовать.

В JJuery в AJS наблюдается огромный прирост производительности.

Мне нравится простота двусторонней привязки данных и разделение проблем в их шаблоне MVC на стороне клиента, который, как указано выше, обеспечивает отличную тестируемость.Там объект объекта является связующим звеном между представлением (HTML), моделью (ваши данные) и вашими пользовательскими контроллерами.Область обеспечивает доступ к родительским атрибутам и может быть изолирована на уровне одного уровня, что важно для некоторых повторно используемых шаблонов.

Шаблоны могут создаваться и повторно использоваться в вашем приложении, которые могут содержать 0 или более пользовательских директив.

Я использовал фреймворки, такие как PRISM и MEF, но обнаружил, что AJS обладает большинством тех же функций, которые существуют в этих .NET-фреймворках, но занимает 29 тыс. Футов.Ходят слухи, что они работают над отложенной загрузкой, которая, если она будет предоставлена, обеспечит некоторые очень интересные возможности типа LOB.

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

Если вы объединяете AJS с MS TypeScript в VS 2012, это дает возможность управлять и создавать некоторые очень впечатляющие проекты, которые будут хорошо работать для тех, кому более комфортно работать с проектами в VS.

Существует множество других причин, чтобы взглянуть на AJS, но если вы рассматриваете такие фреймворки, как KnockOut, я бы настоятельно рекомендовал вместо этого AJS, независимо от того, какая у него кривая обучения.Knockout - это библиотека, AJS - это фреймворк.

11 голосов
/ 21 января 2013

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

Мы используем AngularJS + ASP.NET MVC4 REST WebAPI.

Наиболее вероятно, что после такой красивой клиентской инфраструктуры Javascript MVC вам понадобится только уровень API REST, взаимодействующий с уровнем бизнес-логики на стороне сервера, и никакой MVC на стороне сервера (ASP.NET MVC / Spring / Structs будет выглядеть как старый воспоминания).

Вы найдете хорошее дополнение к Angular-UI (esp ng-grid)

Вскоре после того, как наш проект завершится, мы могли бы поместить некоторые из наших директив, которые мы написали для мира с открытым исходным кодом.

8 голосов
/ 25 апреля 2012

Пока что я думаю, что Google Angular великолепен. Особенно как привязка данных и внедрение зависимостей.

Для других js-фреймворков существуют knockout.js, backbone.js и т. Д. вот несколько постов: angular.js пример в backbone.js и / или knockout.js

7 голосов
/ 12 марта 2014

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

Так что для будущих посетителей некоторые "риски" и ссылки на ресурсы, которые я нашел полезными ...

  • Как уже упоминалось, Angular может иметьочень крутая кривая обучения «Не только я, но и коллеги, которых я считаю очень умными разработчиками, боролись с некоторыми основными понятиями» AngularJS удивителен ... и чертовски труден (ссылка также имеетнекоторые хорошие учебные ссылки, о которых вы просили), а версия 2 больше похожа на java , что не было бы проблемой для вашего C # фона, на мой взгляд, директивы достаточно сложны для понимания безподробные аннотации и т. д.
  • В некоторых случаях угловая производительность может быть плохой, особенно при использовании ng-repeat на большом количестве элементов Учитывая скорость и медленность в AngularJS и Scaylrопыт .Другие упоминали, что производительность действительно ухудшает более 2000 связанных элементов, но обычно это встречается с аргументами о том, что любое приложение с таким большим количеством элементов, вероятно, не является хорошим приложением.Имейте это в виду, хотя, если у вас есть законные варианты использования, которые требуют много связанных объектов.
  • Angular популярен с точки зрения участников , но занимает место далеко позади, скажем, jQuery с точки зрения использование продукции .Найти разработчиков Angular может быть непросто, и jQuery или другие разработчики, занимающиеся конвертированием, имеют дело с «крутой кривой обучения».
  • Поскольку Angular молод, у вас нет гарантии, что он наберет достаточную силу для того, чтобы ваши новые навыки Angular могли быть использованы, а ваше новое приложение не стало бы быстро унаследованным кодом
  • В v1.2 Angular не поддерживает IE7 и ниже, и v1.3 пропустит IE8 .Для> = IE9 вам необходимо следовать некоторым специальным методам кодирования .
  • Многие виджеты, плагины и библиотеки javascript, которые вы могли бы использовать, не могут быть правильно использованы с Angular безсерьезная модификация, и люди часто предлагают переписать ваш компонент в Angular в любом случае .
  • ОБНОВЛЕНИЕ Март 2014: после 2 месяцев попыток создать нетривиальное плотно функциональное одностраничное приложение:много версий Angular, и сложно сказать, какая из них самая лучшая или самая стабильная.Это будет зависеть от того, что вы кодируете с ним.Я нахожу некоторые ошибки Angular, которые исправляются путем обновления до более поздней версии, а другие исправляются путем возврата к более ранней.Мне никогда не приходилось ходить по магазинам версий с помощью jQuery.
  • ОБНОВЛЕНИЕ Май 2014: Молодые, сломанные инструменты.Батаранг хорош, пока он не работает .Я не могу доверять этому, пока они не исправят это.

И, наконец, три лучших ресурса, которые я нашел для изучения этого материала

0 голосов
/ 27 декабря 2013

Я бы сказал "да" на это и проверил бы горячую поддержку Джона Папы как способ сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...