모듈은 각도에서 모듈을 구성하는 중요한 방법입니다. 일련의 응집력있는 비즈니스 구성 요소 (컨트롤러, 서비스, 필터, 지침 ...)를 캡슐화하는 기능을 제공합니다. 그렇게하면 비즈니스 도메인 문제에 따라 코드를 모듈로 분리 한 다음 모듈의 종속성을 사용하여 관련 모듈 컨텐츠를 주입하여 "초점을 분리하고"높은 응집력과 낮은 커플 링 "을 더 잘 달성 할 수 있습니다. "높은 응집력과 낮은 커플 링"은 객체 지향 디자인의 원리에서 비롯됩니다. 응집력은 모듈 또는 객체의 무결성을 말합니다. 밀접하게 관련된 논리 세트는 모든 곳에 흩어져있는 것이 아니라 동일한 모듈, 객체 및 기타 코드 장치에 캡슐화되어야합니다. 커플 링은 모듈, 객체 및 기타 코드 단위 간의 의존도를 나타냅니다. 한 모듈의 수정이 다른 모듈에 영향을 미치면 두 모듈이 상호 의존적이고 단단히 결합되어 있음을 의미합니다.
동시에 모듈은 또한 우리의 각도 코드의 입구입니다. 먼저 모듈을 선언 한 다음 컨트롤러, 서비스, 필터, 디렉토리, 구성 코드 블록, 코드 블록 실행 등과 같은 각도에서 다른 구성 요소 요소를 정의 할 수 있습니다.
모듈의 정의는 다음과 같습니다. Angular.Module ( 'com.ngbook.demo', []). 모듈 함수와 관련하여 세 가지 매개 변수를 전달할 수 있으며 다음과 같습니다.
Angular.Module 방법의 경우, 우리는 일반적인 방법, 즉 Angular.Module ( 'com.ngbook.demo', [선택적 종속성]) 및 Angular.Module ( 'com.ngbook.demo')을 가지고 있습니다. 완전히 다른 방식이며, 하나는 생성 모듈을 선언하고 다른 하나는 선언 된 모듈을 얻는 것입니다. 응용 프로그램에서 모듈 선언은 한 번만이어야합니다. 모듈을 얻으려면 여러 번 가능합니다. 서로 다른 파일에서 각도 구성 요소를 분리하고, 모듈 파일에서 모듈을 선언하고, 기타 구성 요소가 모듈을 소개하는 것이 좋습니다. 포장 또는 스크립트에 도입 할 때 모듈 선언 파일을 먼저로드 한 다음 다른 구성 요소 모듈을로드해야합니다.
Angular Chinese Community Group에서 때때로 일부 학생들은 "NG : AREQ"오류에 대해 묻는 것을 들었습니다.
[ng : areq] 인수 'democtrl'은 함수가 아니며 정의되지 않았습니다!
이것은 종종 컨트롤러를 정의하거나 모듈을 여러 번 선언하는 것을 잊기 때문입니다. 모듈을 여러 번 선언하면 이전 모듈 정의 정보가 지워지므로 프로그램에 정의 된 구성 요소가 없습니다. 또한 Angular 소스 코드 (Loader.js)에서 이것을 배울 수 있습니다.
함수 setupmoduleloader (창) {... 함수는 (obj, name, factory) {return obj [name] || (obj [name] = factory ()); } var angular = 보장 (창, '각도', 개체); return indist (Angular, 'module', function () {var modules = {}; return function module (이름, 요구, configfn) {var assertNothasOwnProperty = function (name, context) {if (name === 'hasOwnProperty') {wash ngMinerr ( 'badname' ', has a {0}) }; AssertNawownProperty (remblites.hasownproperty (name] = null) {modules, name, function () {if (! reque -injectorminerr) " 로드하는 것을 잊어 버렸습니다. 모듈 등록이 " +"의존성을 두 번째 인수로 지정하는지 확인하십시오. 이름, 공급자 : Invokelater ( '$ provery', 'provider'), 공장 : Invokelater ( '$ provery', 'factory'), 서비스 : Invokelater ( '$ provery', 'service'), value : value : value ( '$ provery', 'value'), Constant ( '$ prover', 'unsimator', '$ ansameater', '$ ansameater', 'value'). 'Register') : invokelater ( '$ filterprovider', 'register'), 컨트롤러 : invokelater ( '$ controllerprovider'), invokelater ( '$ compileprovider', 'directive') configfn} return invokelater; }; }); }코드에서 Angular가 시작되면 전역 각도 객체를 설정 한 다음 Angular 객체에 모듈 API를 게시한다는 것을 이해할 수 있습니다. 모듈 API 코드와 관련하여 첫 번째 술어 진술서를 명확하게 볼 수 있습니다. 모듈 이름의 이름은 hasOwnProperty의 이름을 따서 명명 될 수 없으며, 그렇지 않으면 "BadName"의 오류 메시지가 발생됩니다. 그 후 즉시 이름 매개 변수가 전달되면 모듈이 선언되었음을 나타내는 기존 모듈 정보가 삭제되어 NULL로 설정됩니다.
ModuleInstance의 정의에서, 우리는 Angular.Module에 노출 된 API가 다음과 같은 것을 알 수 있습니다 : Invokequeue, Runblocks, 요구, 이름, 제공자, 공장, 서비스, 가치, 상수, 애니메이션, 필터, 컨트롤러, Directive, Config 및 Run. 그중에서도 Invokequeue와 Runblocks는 이름으로 합의 된 개인 속성입니다. 마음대로 사용하지 마십시오. 다른 API는 일반적으로 사용되는 각도 구성 요소 정의 방법입니다. Invokelater 코드에서 이러한 각도 구성 요소 정의의 리턴은 여전히 ModuleInstance 인스턴스이며, 이는 부드러운 API를 형성합니다. 체인 정의를 사용하여 글로벌 모듈 변수를 선언하는 대신 이러한 구성 요소를 정의하는 것이 좋습니다.
마지막으로, 세 번째 매개 변수 configfn이 전달되면 구성 정보로 구성됩니다. 각도가 구성 단계로 들어가면 인스턴스화 전에 서비스와 같은 각도 적용 또는 각도 구성 요소를 구성하기 위해 실행됩니다.
위는 각도 모듈 문 및 과부하 된 정보의 편집입니다. 우리는 향후 관련 정보를 계속 추가 할 것입니다. 이 웹 사이트를 지원 해주셔서 감사합니다!