AngularJS - 모듈 의존관계, 이름 충돌
2개의 서드파티 모듈이 있으며, 두 모듈 모두 같은 이름의 공장을 정의하고 있습니다.분명히, 저는 크러지에 의존하지 않고서는 모듈 이름을 지을 수 없습니다.
또한 2개의 내부 모듈이 더 있으며, 각 모듈은 2개의 서드파티 모듈 중 다른 모듈을 의존관계로 사용합니다(아래 참조).현재 모듈의 의존관계에 없는 모듈의 컴포넌트에 접근할 수 없는 것은 확실하지만, 알고 보니 잘못되어 있었습니다.
여기서도own1
에 의존하다thirdParty1
(그것은hello
로서 정의되다hello world
)가 되어가고 있습니다.hi there
(출처:thirdParty2
)을(를)다른 모듈의 쌍도 마찬가지입니다.
모듈을 "분리"하여 명시적으로 의존하는 것만 사용할 수 있도록 하는 방법이 있습니까?그렇지 않다면 언제든지 도달할 수 있다면 모듈을 장착하는 것이 무슨 의미가 있습니까(메인 앱 모듈에 의존성이 있다고 가정합니다).또한 컴포넌트 이름을 가진 모듈이 2개 있는 경우hello
어떤 것이 사용될지 어떻게 알 수 있나요?
다음은 해당 http://jsbin.com/vapuye/3/edit?html,js,output의 jsbin입니다.
angular.module('app', ['own1', 'own2']);
//third-party modules
angular.module('thirdParty1', []).factory('hello', function () {
return 'hello world';
});
angular.module('thirdParty2', []).factory('hello', function () {
return 'hi there';
});
// "own" modules
angular.module('own1', ['thirdParty1']).controller('Own1Ctrl', function(hello) {
this.greet = hello;
});
angular.module('own2', ['thirdParty2']).controller('Own2Ctrl', function(hello) {
this.greet = hello;
});
그 결과:
<body ng-app="app">
<div ng-controller="Own1Ctrl as own1">
Own1: {{ own1.greet }}
</div>
<div ng-controller="Own2Ctrl as own2">
Own2: {{ own2.greet }}
</div>
</body>
대상:
Own1: hi there
Own2: hi there
특정 모듈의 공장 출하를 명시적으로 요구할 수 있습니다(의존성 주입 없이).
var injector = angular.injector(['thirdParty1']);
var hello1 = injector.get('hello');
var injector = angular.injector(['thirdParty2']);
var hello2 = injector.get('hello');
또, 서드 파티의 공장을 독자적인 공장으로 랩 하는 경우에도 사용할 수 있습니다.
angular.module('own1', ['thirdParty1']).factory('hello1', function () {
var injector = angular.injector(['thirdParty1']);
var hello = injector.get('hello');
return hello;
});
angular.module('own2', ['thirdParty2']).factory('hello2', function () {
var injector = angular.injector(['thirdParty2']);
var hello = injector.get('hello');
return hello;
});
이를 통해hello1
그리고.hello2
다른 모든 부분에서 사용할 수 있습니다.
모듈(또는 모듈의 컴포넌트)에는 이름 간격이 내장되어 있지 않기 때문에 이를 실현하기 위한 최선의 방법은 모듈에 고유한 명명 규칙을 사용하는 것입니다.대부분의 각도용 도서관은 이렇게 하고, 그러면 당신은 갈 수 있을 것이다.
모듈은 응용 프로그램의 동작을 캡슐화할 뿐만 아니라 응용 프로그램의 테스트와 조롱에도 도움이 됩니다.
나는 각도가 같은 이름의 두 성분을 구별하는 것은 불가능하다고 생각한다(각도 2에 따라 달라지는 것 같다).같은 이름의 컴포넌트 두 개가 같은 기능을 할 수 있는데 왜 둘 다 필요한지 살펴봐야 한다고 주장할 수도 있습니다.
언급URL : https://stackoverflow.com/questions/30374934/angularjs-module-dependencies-naming-clash
'bestsource' 카테고리의 다른 글
Python에서 JSON을 아름답게 하는 방법 (0) | 2023.03.05 |
---|---|
JSON과 BSON 중 어느 쪽이 더 가볍습니까? (0) | 2023.03.05 |
npx create-react-app을 사용하여 react를 설치할 수 없습니다. (0) | 2023.03.05 |
스프링 부트 - 생성되는 연결 수 제한 (0) | 2023.03.05 |
AngularJS 및 content편집 가능한 양방향 바인딩이 예상대로 작동하지 않음 (0) | 2023.03.05 |