developer tip

Angularjs는 모범 사례 축소

copycodes 2020. 8. 19. 19:47
반응형

Angularjs는 모범 사례 축소


나는 http://www.alexrothenberg.com/2013/02/11/the-magic-behind-angularjs-dependency-injection.html을 읽고 있는데 자바 스크립트를 축소하면 angularjs 종속성 주입에 문제가 있음이 밝혀졌습니다. 대신에 궁금하다

var MyController = function($scope, $http) {
    $http.get('https://api.github.com/repos/angular/angular.js/commits')
      .success(function(commits) {
        $scope.commits = commits
      })
  }

당신은 사용해야합니다

var MyController = ['$scope', '$http', function($scope, $http) {
  $http.get('https://api.github.com/repos/angular/angular.js/commits')
    .success(function(commits) {
      $scope.commits = commits
    })
}]

대체로 두 번째 스 니펫은 이전 버전의 angularjs 용이라고 생각했지만 ....

항상 주입 방법 (두 번째 방법)을 사용해야합니까?


, 항상! 따라서 미니 퍼가 $ scope를 변수 a로, $ http를 변수 b로 변환하더라도 해당 ID는 문자열에 그대로 유지 됩니다.

AngularJS 문서 의이 페이지참조 하고 A Note on Minification으로 스크롤 하십시오 .

최신 정보

또는 빌드 프로세스에서 ng-annotate npm 패키지를 사용 하여이 자세한 정보를 피할 수 있습니다.


두 번째 변형을 사용하는 것이 더 안전하지만 ngmin 과 함께 첫 번째 변형을 안전하게 사용할 수도 있습니다 .

업데이트 :
이제 ng-annotate 가이 문제를 해결하는 새로운 기본 도구가됩니다.


만약 당신이 사용한다면

자작농

좋아할 필요가 없습니다

var MyController = ['$scope', '$http', function($scope, $http) {
  $http.get('https://api.github.com/repos/angular/angular.js/commits')
    .success(function(commits) {
      $scope.commits = commits
    })
}]

축소하는 동안 grunt는 DI 관리 방법을 고려하기 때문입니다.


예, 명시 적 종속성 주입 (두 번째 변형) 을 사용해야 합니다. 그러나 Angular 1.3.1 부터는 암시 적 종속성 주입 을 끌 수 있으므로 이름 바꾸기와 관련된 잠재적 인 문제를 한 번에 해결하는 것이 정말 유용합니다 (최소화 전).

strictDiconfig 속성을 사용하여 암시 적 DI 끄기 :

angular.bootstrap(document, ['myApp'], {
    strictDi: true
});

ng-strict-di지시문을 사용하여 암시 적 DI 끄기 :

<html ng-app="myApp" ng-strict-di>

OZ_가 말했듯이, ngmin을 사용하여 directive.js service.js와 같은 모든 각도 js 파일을 축소하십시오. 그 후 클로저 컴파일러를 사용하여 최적화 할 수 있습니다.

심판 :

angularjs 스크립트를 축소하는 방법

YO로 구축


여기에$inject 언급 된대로 사용할 수 있습니다 .

MyController.$inject = ['$scope', '$http'];

function MyController($scope, $http) {
  $http.get('https://api.github.com/repos/angular/angular.js/commits')
    .success(function(commits) {
      $scope.commits = commits
    })
}

참고 URL : https://stackoverflow.com/questions/18782324/angularjs-minify-best-practice

반응형