angularjs 에서 Factory, Service, Provider 간 의 차이

3115 단어 AngularJS
이 글 은 사용 되 었 습 니 다.  angularjs 에 서 는 service 를 사용 하여 contrller 간 share 대상 과 데 이 터 를 사용 합 니 다.  데모 Factory, Service, Provider 간 의 차이
 
1. Factory
factory('dataService',function(){

    return {

        golbal_sitename:"this is the shared value",

        sayHello:function(msg){

            alert(msg);

        }

    }

})

위의 코드 를 주의 깊 게 보 세 요. 저 희 는 dataService 안 을 정의 합 니 다. 뒤의 funciton 은 대상 으로 직접 돌아 갑 니 다.리 턴 대상 에서 속성 과 방법 을 정의 할 수 있 습 니 다. 위 에 golbal 을 되 돌려 주 었 습 니 다.sitename 속성 과 sayHello 방법.
쉽게 말 하면 factory 가 정의 한 function 이 돌아 오 는 대상 에 속성 과 방법 을 정의 하고 contrller 에 주입 하면 contrller 에서 이러한 속성 과 방법 을 호출 할 수 있 습 니 다.
 
2. 우 리 는 service 로 위의 코드 를 고 쳐 씁 니 다.
service('dataService',function(){

    this.golbal_sitename = "this is the shared value";

    this.sayHello = function(msg){

            alert(msg);

    };

});

위의 코드 와 factory 정의 의 차 이 를 주의 하 십시오. 여기 서 return 을 제거 하고 this 키 워드 를 추 가 했 습 니 다.다시 말 하면 factory 정의 에 있 는 function 은 대상 을 되 돌려 주 는 것 이 고 service 정의 에 있 는 funciton 은 클래스 정 의 를 되 돌려 줍 니 다.
즉, service 에서 정 의 된 dataService 는 마지막 으로 new 뒤에 정 의 된 function 을 통 해 예화 되 었 다.
http://jsfiddle.net/kn46u0uj/1/
 
3. Provider 를 사용 하여 코드 를 다시 고치 기
Provider 가 정의 하 는 서 비 스 는. config () 함수 에 들 어 갈 수 있 습 니 다.service 를 사용 하기 전에 모듈 인 자 를 설정 해 야 할 때 Provider 를 사용 하여 service 를 정의 해 야 합 니 다.
코드 는 다음 과 같 습 니 다:
provider('dataService',function(){

    this.$get = function(){

        return {

            golbal_sitename:"this is the shared value",

            sayHello:function(msg){

                    alert(msg);

            }

        }

  };

})

http://jsfiddle.net/kn46u0uj/3/
 
위 에서 세 가지 방식 으로 정 의 된 서 비 스 는 모두 정상적으로 작 동 할 수 있 습 니 다. 유일 하 게 주의해 야 할 것 은 service 가 config 에 들 어가 설정 해 야 할 때 provider 를 사용 하여 정 의 를 내 려 야 한 다 는 것 입 니 다.

좋은 웹페이지 즐겨찾기