Подтвердить что ты не робот

Google AngularJS Framework - стоит риск?

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

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

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

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

4b9b3361

Ответ 1

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

Хороший материал:

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

Плохой материал:

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

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

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

Ответ 2

+1 @psycho 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

Ответ 3

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

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

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

Ответ 4

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

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

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

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

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

Ответ 5

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

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

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

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

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

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

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

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

Есть много других причин, чтобы взглянуть на AJS, но если вы рассматриваете инфраструктуру, такую ​​как KnockOut, я бы настоятельно рекомендовал AJS, независимо от того, что она воспринимала кривую обучения. Нокаутом является библиотека, AJS является основой.

Ответ 6

До сих пор я думаю, что Google Angular замечательный. В частности, как инъекция данных и зависимость.

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

Ответ 7

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

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

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

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

Ответ 8

Я бы сказал "да" этому и посмотрел "John Papa hottowel" как способ сделать это.