1

최근에 angularjs를 사용하기 시작했습니다. 하지만 모듈의 개념은 나를 혼란스럽게합니다.노드 모듈을 지정하는 것과 비슷한 방식으로 팩토리 기능으로 각도 모듈을 지정해야하는 이유는 무엇입니까?

각도 자습서 중 하나에서

는 다음과 같은 코드가있다 :

'use strict'; 

/* Services */ 

var phonecatServices = angular.module('phonecatServices', ['ngResource']); 

//this line's added by me 
phonecatServices.constant('SomeConstant', 123); 

phonecatServices.factory('Phone', ['$resource', 
    function($resource){ 
    return $resource('phones/:phoneId.json', {}, { 
     query: {method:'GET', params:{phoneId:'phones'}, isArray:true} 
    }); 
    }]); 

왜 그냥뿐만 아니라 nodejs의 것과 유사한 방식으로 모듈을 정의 할 때 AngularJS와는 상수 또는 공장 등의 도우미 기능을 필요로하지 않습니다 훨씬 깨끗하니? 나는이 접근법에 어떤 이점이 있는지 혼란 스럽다.

var $resource = require('$resource'); 

var SomeConstant = 123; 

var Phone = $resource('phones/:phoneId.json', {}, { 
     query: {method:'GET', params:{phoneId:'phones'}, isArray:true} 
    }); 
}; 

exports.SomeConstant = SomeConstant; 
exports.Phone = Phone; 
+0

각도 모듈은 실제로 AMD 모듈이 아닙니다. 모듈을 정의하기위한 내부 각도 프레임 워크 정의의 일부이지만, CommonJS 구문에서 언급 한 두 번째 모듈은 Node.js와 같이 일반적으로 서버 측에서 사용되는 모듈을 정의합니다 –

답변

0

대답은 각도의 의존성 주입을 중심으로 한 것처럼 보입니다.

angular.moduleapi으로, 모듈을 생성/등록하거나 검색하는 글로벌 방법이라고 생각하십시오. 이런 식으로 모듈을 만들어야 등록 된 모듈 이름 목록을 취하는 함수 인 $injectorbootstrapping의 시간에 찾을 수 있습니다.

나는 '도우미'기능을 고려하지 않았지만 실제로는 각도 js의 의존성 삽입을 지정하여 서비스를 생성하는 방법을 지정했다. 아니면 dependency injection guide로두고 - 우리가 '교육'서비스를 만드는 방법은 $ 인젝터 있습니다

// Provide the wiring information in a module 
angular.module('myModule', []). 

    // Teach the injector how to build a 'greeter' 
    // Notice that greeter itself is dependent on '$window' 
    factory('greeter', function($window) { 
    // This is a factory function, and is responsible for 
    // creating the 'greet' service. 
    return { 
     greet: function(text) { 
     $window.alert(text); 
     } 
    }; 
    }); 

// New injector is created from the module. 
// (This is usually done automatically by angular bootstrap) 
var injector = angular.injector(['myModule', 'ng']); 

// Request any dependency from the injector 
var greeter = injector.get('greeter'); 

가이드는 여기에, 인젝터를 직접 작성이 모듈에서 우리를 생각 나게하지만, 일반적으로 각도의 부트 스트 래퍼를 우리를 위해 그것을 돌보아줍니다.

그래서, 짧은에, angular.module 모듈을 해결하는 방법을 각 알려줍니다 (이 $injector를 통해 않습니다), 그리고 factory이 필요할 때 만들거나하는 방법을 각 알려줍니다. 대조적으로, 노드의 모듈은 파일과 일대일 매핑을 가지고 있으며 this way으로 해결됩니다.