programing

Angular의 장점은 무엇입니까?JS Strict DI mode?

newstyles 2023. 9. 21. 20:10

Angular의 장점은 무엇입니까?JS Strict DI mode?

최근에 Angular를 접하게 되었습니다.JS Strict DI 모드.사용 목적과 이점은 무엇입니까?특히 모바일 기기에서 사용함으로써 성능이 크게 향상될 수 있을까요?

저는 코드에 적용하려고 노력하고 코드를 작성할 때 주석을 하지 않았습니다.하지만, 나는 내 코드를 최소화하고 빌드하는 동안 ng-notation해야 합니다.그런데 코드에 Strict DI 모드를 추가한 후에도 "명시적 주석 필요"라는 오류가 계속 표시되는 이유는 무엇입니까?

Strict DI Mode는 기본적으로 실행 시, 최소화를 준수하지 않는 코드 조각이 발견될 때 오류를 발생시키지만, 코드가 옳을 수 있고 논리적-동사적 오류가 없을 수도 있습니다.

문서 인용:

이 속성이 앱 요소에 있으면 인젝터가 " strict-di" 모드로 생성됩니다.이는 응용 프로그램이 종속성 주입 안내서에 설명된 대로 명시적 함수 주석을 사용하지 않는 함수를 호출하지 못하므로 최소화에 적합하지 않음을 의미하며, 유용한 디버깅 정보는 이러한 버그의 루트를 추적하는 데 도움이 됩니다.

예를 들어 이 코드는 다음과 같은 이유로 오류를 유발합니다.($scope, $http, $filter)를 사용하여 명시적으로 주입되지 않습니다.$inject또는 에 주는 것..controller(A,B)배열을 두 번째 필드로 메서드합니다.

angular.module("myApp", [])
// BadController cannot be invoked, because
// the dependencies to be injected are not
// explicitly listed.
.controller("BadController", function($scope, $http, $filter) {
  // ...
});

오른쪽 토막글:

angular.module("myApp", [])
  .controller("GoodController1", GoodController1);

GoodController1.$inject = ["$scope", "$http", "$filter"];

function GoodController1($scope, $http, $filter){}

또는:

angular.module("myApp", [])
  .controller("GoodController1", 
              ["$scope", "$http", "$filter", function ($scope, $http, $filter){
     //...
}]);

당신의 질문에 답하기 위해서는 그것을 사용함으로써 큰 성능 향상은 없습니다.이는 단지 최소화 오류 안전성만을 부여합니다.이것은 예를 들어 당신이 사용할 때 minization이 당신의 코드를 깨는 변수 이름을 바꾸기 때문입니다.$scope명시적인 주석 없이

다음과 같이 strict-di를 추가할 수도 있습니다.

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

각운석을 사용할 때 6가지 유형의 응용 프로그램.

각도 엄격한 DI는 코드 최소화 기능을 수행합니다.

코드가 최소화되면 파라미터의 이름이 짧아지고, 이로 인해 각도의 DI가 깨집니다.이 문제를 해결하기 위해 의존성을 추가하는 두 가지(아마도 지금은 더 많은) 대안적인 방법이 추가되었습니다.

ng-notate에서 사용하는 가장 일반적인 방법은 두 번째 매개 변수로 함수 대신 배열을 배치하는 것일 수 있습니다.종속성은 배열의 마지막 요소 앞에 있는 문자열이고, 문자열은 종속성 이름입니다.

controller.$inject(['$scope']);

angular.module('app', ['dependency']).controller('myCtrl', ['myFirstDep',
function(willBeInjectedHere){}])

당신의 ng-notate가 각도를 맞추기 전에 실행되지 않을 수도 있습니다. 그것은 체크입니다.주석과 함께 추글라이피를 실행하지 않는지 확인하고, 그 전에 명시적으로 실행합니다.코드가 오류를 던지는 경우 주석이 생성되지 않은 곳이 있을 수 있습니다.

좋은 방법은 사용하는 것입니다.strict-di를 호출할 는 앱 명시적인 함수 주석을 사용하지 않는 함수를 호출할 때는 앱 실행이 실패해야 합니다.이는 사용된 메소드를 선언해야 함을 의미합니다.으로.ng-strict-di앱이 종속성 주입 가이드라인으로 확인하고 있지 않으면 실행에 실패합니다.

를 할 수 .ng-strict-di:

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

개발자 가이드 참조: https://docs.angularjs.org/guide/di

언급URL : https://stackoverflow.com/questions/33494022/what-is-the-benefit-of-angularjs-strict-di-mode