Google AngularJS Framework-стоит ли рисковать?
меня попросили создать небольшое веб-приложение для одного из наших клиентов и думаю, что это может быть хорошей возможностью, чтобы опробовать различные схемы построения веб-приложений. Большинство приложений, которые мы создаем, основаны на asp.net веб-формы, и мы еще ничего не сделали в архитектуре MVC, но я хочу начать создавать веб-приложения более структурированным образом с правильными инструментами.
Я исследовал такие вещи, как asp.net MVC и подобные, которые выглядят довольно хорошо, но мне интересно, что можно сказать об использовании чего-то вроде Google AngularJS Framework.
Если возможно, я все равно хотел бы иметь возможность писать код на стороне сервера с помощью c#, и я не исследовал AngularJS достаточно, чтобы знать, возможно ли это, хотя я предполагаю, что могу использовать веб-службы.
У кого-нибудь был опыт разработки приложения с помощью AngularJS, и если да, то как это было, и можете ли вы указать мне в правильном направлении для несколько уроков?
8 ответов
мы разрабатываем порт приложения Swing fat-client в AngularJS в течение последних нескольких месяцев, и я думаю, что это стоит рекомендовать. Что касается учебных ресурсов, ознакомьтесь с официальным сайтом проекта (и обязательно прочитайте учебник) и списком рассылки (авторы очень полезны).
хорошие вещи:
- большой контролепригодность
- двусторонняя привязка данных является очень мощной функцией, и это может быть чрезвычайно полезно как только вы "получите это"
- IMO шаблоны AngularJS намного менее хрупкие, чем использование атрибутов данных или "специальных" классов CSS для маркировки элементов, которые что-то делают
- это значительно уменьшает необходимость использования плагинов jquery, потому что реализация этой функции в AngularJS очень проста (такие как деревья, вкладки, аккордеоны и т. д.)
плохое:
- кривая обучения кажется довольно крутой (у меня не было большой проблемы, но я видел, как некоторые люди борются с этим)
- проверки в AngularJS сосать на данный момент (новая реализация находится в пути)
- не все библиотеки / Плагины jquery хорошо играют с Angular, и обычно вам нужно их обернуть
- API все еще полируется, поэтому ожидайте изменений (не большая проблема с частыми выпусками и очень хорошим журналом изменений)
- производительность в порядке до нескольких тысяч Привязок на странице-большую часть времени это это не ограничение, но есть случаи, когда это может быть проблемой.
некоторые указатели (если вы когда-нибудь решите изучить AngularJS):
- некоторые люди действительно злоупотреблять виджетами. По моему опыту, гораздо лучше использовать службы HTML "partials" + и использовать виджеты только спорадически.
- прочитайте исходный код библиотеки-это лучшее место, чтобы узнать все об угловом
- нет манипуляции DOM в службах / контроллерах
- если вы используете классы css для привязки к событиям, вы делаете это неправильно
+1 @псих
AngularJS-это клиентская платформа, поэтому вы можете использовать любой язык на сервере. Он разработан, чтобы хорошо работать вместе с jQuery, с большим акцентом на тестирование...
вот некоторые ресурсы, которые вы можете найти полезными:
- учебник:http://docs.angularjs.org/#!/учебник
- API DOCS:http://docs.angularjs.org/#!/api
- Руководство Разработчика : http://docs.angularjs.org/#!/руководство
некоторые примеры приложений:
- http://cburgdorf.github.com/angular-todo-app
- http://www.fluid.ie/angular/calculate/
- http://hookercookerman.github.com/angularjs-todos/
- http://paul-hammant.github.com/StoryNavigator/navigator.html
адаптер для 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-powered приложений, проверьтеhttp://builtwith.angularjs.org
IMHO разрабатывает что-то для клиента, который они могут иметь трудности с поддержкой непрофессионально. Вы должны иметь в виду, что вашему клиенту будет сложно нанять опытных угловых профессионалов или обучить своих людей подниматься по этой "крутой кривой обучения". Кроме того, пока документация не так велика. Можете ли вы легко, через несколько минут, ответить на вопрос: "Как я могу подключить свое приложение shiny Angular к базе данных моего клиента?"Может ли ваш клиент в будущем легко захватить какой-то существующий код и адаптировать его к своим потенциальным будущим потребностям? Быть честным.
сравните простое старое надежное развитие лампы к угловому. Для "небольшого веб-приложения" я действительно считаю, что профессионал должен дать своему клиенту что-то ремонтопригодное и простое.
Это не значит, что Angular не круто и сексуально и т. д. Но у вас есть будущая ремонтопригодность вашего клиента, о которой нужно думать в дополнение к последней моде фреймворка. Тактичнее будет мой рекомендация. Сначала создайте свой собственный веб-сайт с Angular и посмотрите, что вы думаете, прежде чем даровать свои сказочные новые навыки какому-то доверчивому клиенту.
Я помню, как читал эту тему пару месяцев назад с тем же вопросом в голове, и мы решили продолжить AngularJS, и лучшее решение, которое мы приняли по этому проекту.
мы используем AngularJS + ASP.NET MVC4 REST WebAPI.
скорее всего, после такой хорошей клиентской платформы Javascript MVC вам понадобится только уровень REST API, взаимодействующий с уровнем бизнес-логики на стороне сервера, и нет MVC на стороне сервера (ASP.NET MVC / Spring / структуры почувствуйте, как старые воспоминания).
вы найдете Angular-UI хорошее дополнение (esp ng-grid)
вскоре после завершения нашего проекта мы могли бы поместить некоторые из наших директив, которые мы написали для мира с открытым исходным кодом.
Я изучал достоинства AngularJS в течение многих месяцев, чтобы использовать в качестве основной основы для продукта, который я создаю. Есть много аспектов AJS, которые делают его стоит изучить. Да есть немного кривой обучения, но стоит того, особенно если вы хотите иметь больше контроля на стороне клиента возможность.
JQuery управляет DOM во время выполнения, в то время как AJS находится в жизненном цикле рендеринга JS. Это позволяет научить DOM новым трюкам путем создания HTML-элементов и атрибутов. Это очень, очень мощно. Как то, что вы можете сделать, это ввести новые элементы поведения для любых ваших целей и потребностей. В AJS эти пользовательские HTML-атрибуты / элементы называются директивами. С возможностью создавать свои собственные директивы вы можете создавать функции, которых нет в текущем HTML, выталкивая возможности, которые будут работать во всех современных браузерах сейчас и в будущем. Из множества подходов к индуцированию нового поведения, AJS, по-видимому, является самым безопасным направлением, которое можно взять из-за того, как они решили его реализовать.
существует огромный прирост производительности над JQuery в AJS.
Мне нравится простота двусторонней привязки данных и разделение проблем в их шаблоне MVC на стороне клиента, что, как указано выше, обеспечивает отличную тестируемость. Там объект scope является клеем между представлением (HTML), моделью (вашими данными) и вашими пользовательскими контроллерами. Область предоставляет доступ к родительские атрибуты и могут быть изолированы на уровне брата, что важно для некоторых многоразовых шаблонов.
шаблоны могут создаваться и повторно использоваться в вашем приложении, которое может содержать 0 или более пользовательских директив.
Я использую такие фреймворки, как PRISM и MEF, но я нахожу, что AJS имеет большинство тех же функций, которые существуют в этих .NET-фреймворках, но в 29K footprint. Ходят слухи, что они работают на lazy-loading, который при условии обеспечит для некоторых очень интересных возможностей типа LOB.
существует ряд фреймворков пользовательского интерфейса, которые создаются для AJS, но вы можете обернуть любой сторонний контроль lib по мере необходимости, учитывая немного усилий. Трюк состоит в том, чтобы гарантировать, что когда эти элементы управления 3rd party имеют вызванные изменения, вы гарантируете, что AJS правильно уведомлен, используя их метод apply.
Если вы объединяете AJS С MS TypeScript в VS 2012, это дает возможность управлять и создавать некоторые очень впечатляющие проекты, которые будут хорошо работать для тех, кто более комфортно с проектами в VS.
есть масса других причин, чтобы посмотреть на AJS, но если вы рассматриваете такие рамки, как нокаут, я бы настоятельно рекомендовал AJS вместо этого, независимо от того, воспринимается кривая обучения. Нокаут-это библиотека, AJS-это фреймворк.
до сих пор я думаю, что угловой Google отлично. В частности, как привязка данных и инъекция зависимостей.
для других рамок js есть нокаут.Яш , позвоночника.Яш и т. д. вот некоторые сообщения: угловое.пример js в магистрали.JS и/или нокаут.js
Я понимаю, что этот пост старый, и вы не пошли с Angular, но у меня есть аналогичный фон для вас, и я нахожусь в том же месте, что и вы, когда задаете вопрос.
поэтому для будущих посетителей некоторые из "рисков" и ссылок на ресурсы, которые я нашел полезными...
- как многие уже упоминали, Angular может иметь очень крутую кривую обучения "не только я, но и коллеги, которых я считаю очень умными разработчиками, боролись с некоторыми из Основные понятия" AngularJS удивительно... и чертовски трудно!--7--> (ссылка также имеет некоторые хорошие ссылки учебника, которые вы просили), и версия 2 материал больше похоже на java, что не было бы проблемой с вашим фоном C#, на мой взгляд, директивы достаточно трудно понять без подробных аннотаций и так далее.
- угловая производительность может быть плохой в некоторых случаях, особенно при использовании ng-repeat на большом количестве элементов учитывая скорость и медлительность в AngularJS и Scaylr это!--7-->. Другие упоминали, что производительность действительно ухудшается по сравнению с ~2000 связанными элементами, но это обычно встречается с аргументами о том, что любое приложение с большим количеством элементов, вероятно, не является хорошим приложением. Имейте это в виду, если у вас есть законные случаи использования, которые вызывают много связанных объектов.
- угловой популярен С точки зрения вкладчиков, но занимает далеко позади, скажем, jQuery в терминах использование производства. Поиск угловых разработчиков может быть жестким, а преобразование jQuery или других разработчиков имеет эту "крутую кривую обучения".
- поскольку Angular молод, у вас нет гарантии, что он получит достаточную тягу для ваших новых угловых навыков, чтобы быть работоспособным, и Ваше новое приложение не быстро станет устаревшим кодом
- в v1.2 Angular не поддерживает IE7 и ниже и v1.3 упадет IE8. Для >=IE9 вам нужно следовать некоторые специальные методы кодирования.
- многие виджеты javascript, плагины и библиотеки, которые вы могли бы использовать, не могут использоваться должным образом с Angular без тяжелых модификаций, и люди часто предлагают перепишите свой компонент в Angular в любом случае.
- обновление март 2014: после 2 месяцев попытки построить нетривиальное плотно функциональное приложение на одной странице: есть много версий Angular, и это трудно сказать, что лучше или стабильнее. Это будет зависеть от того, что вы пишете с ним. Я нахожу некоторые ошибки Angular, которые исправлены путем обновления до более поздней версии, а другие исправлены путем регрессии до более ранней. Мне никогда не приходилось делать такие покупки с jQuery.
- обновление май 2014: молодые, сломанные инструменты. Батаранг велик, пока он не работает. Я не могу доверять ему, пока они не исправят это.
и, наконец, три лучших ресурсов Я нашел для изучения этого материала
- Тодд девиз окончательный руководство и
- обновление апрель 2014:эта глава книги довольно удивительно. Я еще не купил остальную часть книги, но концепция фантастическая
- A полное нетривиальное приложение, написанное в Angular (сопровождающий книга в порядке, но на самом деле не говорит о нетривиальном приложении достаточно, как они, кажется, говорят рекламируется на сайте)
Я бы сказал, Да это и проверить Джон папа hottowel реализация как способ сделать это.