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 부터는 암시 적 종속성 주입 을 끌 수 있으므로 이름 바꾸기와 관련된 잠재적 인 문제를 한 번에 해결하는 것이 정말 유용합니다 (최소화 전).
strictDi
config 속성을 사용하여 암시 적 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 파일을 축소하십시오. 그 후 클로저 컴파일러를 사용하여 최적화 할 수 있습니다.
심판 :
여기에$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
'developer tip' 카테고리의 다른 글
onclick 값에서 'javascript'대신 다른 단어를 사용할 때 브라우저에서 오류가 발생하지 않는 이유는 무엇입니까? (0) | 2020.08.19 |
---|---|
/ usr / libexec / java_home에서 반환 된 Mac OS의 기본 Java VM을 어떻게 변경할 수 있습니까? (0) | 2020.08.19 |
ImportError : DLL로드 실패 : % 1은 (는) 유효한 Win32 응용 프로그램이 아닙니다. (0) | 2020.08.19 |
Visual Studio "찾기"결과 "검색 할 파일이 없습니다. 중지 된 진행률 찾기"가 표시됩니다. (0) | 2020.08.19 |
공장, 공급자 및 서비스의 차이점은 무엇입니까? (0) | 2020.08.19 |