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

Должны ли мы использовать jQuery с AngularJS?

Наш сайт в настоящее время использует библиотеку jQuery и получает трафик около 1 миллиона ежемесячно. Мы хотим включить подход, ориентированный на API, поэтому решили перейти на Javascript MVC и выбрали для него angularJS.

Теперь мой вопрос: должен ли я использовать jQuery в верхней части Angular, чтобы мне пришлось переписать минимальный код манипуляции DOM, или я должен переписать все в Angular способом? Мы используем плагины jQuery, такие как plupload, jQuery UI. и т.д. на веб-сайте. Пожалуйста, предложите лучший способ миграции (также важно время загрузки страницы).

Уже прошел "Мышление в AngularJS" если у меня есть фон jQuery?, но не получив четкого ответа

4b9b3361

Ответ 1

Хорошо, что AngularJS вам необходимо рассмотреть перед выполнением миграции.

  • Он обеспечивает двухстороннюю привязку, сохраняя только переменную в области.
  • Другое дело, что нам нужно написать код по сравнению с JQuery.
  • Реализация модульным способом (путем создания angular.module)
  • Сдвиньте большую часть кода с Javascript на HTML, который выглядит более чистым.
  • Шаблоны Singleton предназначены для хранения данных и обмена ими между несколькими контроллерами или службами.
  • Он построен в меньшей версии jQuery, которая известна как JQlite, которая имеет большинство базовых функций, но вы хотите использовать JQuery в AngularJS, тогда она будет легко доступна, просто вам нужно добавить в нее ссылку jQuery, после чего Функциональность JQLite преобразуется в JQuery.

Вам не следует использовать jQuery в верхней части AngularJS, потому что цикл digestAndularJS не запускается, если мы выполняем любую манипуляцию с помощью DOM-манипуляций или манипуляций с помощью wm-wwww wwww wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwmwmwmwmjwjwjjjjjjjnjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj

Когда вы переносите компонент jQuery в AngularJS, вам нужно следовать ниже.

  • Вам нужно сначала найти сайт angular-ui-bootstrap, потому что они покрыли большую часть компонента пользовательского интерфейса, который уже преобразован в angular.
  • Я уверен, что вы не найдете каждую версию плагина angular, при этом вы должны перенести этот плагин на директиву. Это даст вам контроллер над элементом DOM, где когда-либо была установлена ​​директива. Пример здесь для директивы Datepicker)
  • Не пытайтесь связать событие из внешнего контекста angular, который создаст цикл дайджеста, что приведет к влиянию на привязку обновления в пользовательском интерфейсе.
  • Убедитесь, что при создании любого ajax-вызова, который должен использовать $http вместо использования $.ajax
  • Есть много мест, которые вы можете найти в jquery-коде, который будет заменен директивой ng-class, например, если вы делаете только добавление и удаление класса или показываете какой-либо элемент на основе любого условия, поэтому такой код jquery можно заменить с помощью директивы ng-class
  • Найдите места, где вы удаляете только DOM или добавляете DOM, которые могут быть легко заменены директивой ng-if, или только показать скрытие элемента можно с помощью ng-show/ng-hide
  • Также найдите такую ​​часть в пользовательском интерфейсе, в котором вы создаете ту же самую DOM, что и для цикла, который может быть преобразован в angular native директиву ng-repeat
  • Если у вас есть случай, когда вы хотите показать и скрыть несколько элементов, чтобы часть кода была реализована с помощью директивы ng-switch

Ответ 2

Используйте Angular для создания контроллеров и клиентов API, тогда как время позволяет перемещать как можно больше DOM-манипуляций и, возможно, директиву Angular. Затем подождите, пока Angular 2 будет выпущен, и повторите все заново.

Ответ 3

Вот хороший способ приблизиться к нему. Если вы хотите смешать jQuery с Angular.. писать директивы в AngularJS и в разделе ссылок этих директив вы можете включить jQuery для манипуляций с DOM.

Имейте в виду, что AngularJS использует jQuery lite, поэтому многое из того, что делает jQuery, уже встроено в Angular.

Например, вы можете использовать jQuery lite в angular как в любом месте приложения angular:

angular.element('.class').append('<p>foo</p>');

и внутри функции директивной ссылки,

angular.module('TestModule')
.directive('jqueryTestDirective', ['$timeout', function($timeout) {
    return {
      restrict: 'E',
      link : function (scope, element) {
        $timeout(function(){  
           element.append('<p>foo</p>');
        });
      }
}]);

<jquery-test-directive></jquery-test-directive>