programing

서비스 방법을 만들 때 module.service와 module.factory의 차이점은 무엇입니까?

bestprogram 2023. 10. 29. 19:55

서비스 방법을 만들 때 module.service와 module.factory의 차이점은 무엇입니까?

무엇이 가장 좋은 방법이고 무엇을 사용해야 하는지 모르겠습니다.

아래 두 가지 방법의 차이점은 무엇입니까?

module.service(..);

그리고.

module.factory(..);

Pawel Kozlowski의 훌륭한 구글 그룹 게시물이 있습니다.

https://groups.google.com/forum/ #!msg/angular/hVrkvaHGOfc/idEaEectreMYJ

Powel에서 인용:

provide, provider, provide.공장과 provide 달러.서비스는 모두 객체 인스턴스를 생성하기 위한 Blueprint/명령이라는 점에서 어느 정도 동일합니다(이러한 인스턴스는 공동작업자에게 주입될 준비가 됨).

$provide.provider는 청사진을 등록하는 가장 대중적인 방법으로 복잡한 작성 기능과 구성 옵션을 가질 수 있습니다.

달러 provide.factory는 $ provide.provider를 단순화한 버전으로, 구성 옵션을 지원할 필요는 없지만 보다 정교한 작성 로직을 원하는 경우입니다.

달러 provide.service는 전체 생성 로직이 생성자 함수를 호출하는 것으로 요약되는 경우를 위한 것입니다.

따라서 구성 로직의 복잡성에 따라 $provider.provider, $provider 중 하나를 선택합니다.공장과 provide 달러.서비스 하지만 결국 당신이 얻게 될 것은 새로운 사례입니다.

다음은 (스레드에서) 시연할 동반 피들입니다. http://jsfiddle.net/pkozlowski_opensource/PxdSP/14/

그리고 코드는:

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

//service style, probably the simplest one
myApp.service('helloWorldFromService', function() {
    this.sayHello = function() {
        return "Hello, World!"
    };
});

//factory style, more involved but more sophisticated
myApp.factory('helloWorldFromFactory', function() {
    return {
        sayHello: function() {
            return "Hello, World!"
        }
    };
});

//provider style, full blown, configurable version     
myApp.provider('helloWorld', function() {

    this.name = 'Default';

    this.$get = function() {
        var name = this.name;
        return {
            sayHello: function() {
                return "Hello, " + name + "!"
            }
        }
    };

    this.setName = function(name) {
        this.name = name;
    };
});

//hey, we can configure a provider!            
myApp.config(function(helloWorldProvider){
    helloWorldProvider.setName('World');
});


function MyCtrl($scope, helloWorld, helloWorldFromFactory, helloWorldFromService) {

    $scope.hellos = [
        helloWorld.sayHello(),
        helloWorldFromFactory.sayHello(),
        helloWorldFromService.sayHello()];
}

다음 서비스를 고려해 봅니다.

angular.module("myModule", [])
.service("thingCountingService", function() {
    var thingCount = 0;
    this.countThing = function() { thingCount++; }
    this.getNumThings = function() { return thingCount; }
});

다양한 컨트롤러, 뷰 등이 모두 하나의 일반적인 사물 카운트에 기여하고자 하는 앱이 있다면 위의 서비스는 효과가 있습니다.

하지만 각 앱이 자신만의 집계를 유지하기를 원한다면 어떻게 해야 할까요?

이 경우, 싱글톤 서비스는 모든 서비스를 추적할 수 있기 때문에 작동하지 않습니다.그러나 공장에서는 새 카운터를 시작할 때마다 새 서비스를 생성할 수 있습니다.

angular.module("myModule", [])
.factory("thingCountingServiceFactory", function() {
    var thingCount = 0;
    this.countThing = function() { thingCount++; }
    this.getNumThings = function() { return thingCount; }
});

위의 공장으로 당신은 전화를 할 수 있습니다.new thingCountingServiceFactory()언제든지 새것을 사세요.thingCountingService로 설정.0

언급URL : https://stackoverflow.com/questions/16565105/when-creating-service-method-whats-the-difference-between-module-service-and-mo