AngularJS fornece serviços que são reutilizáveis objetos de um único botão. Eles podem ser usados para compartilhar o código entre os usuários das aplicações AngularJS. Eles também podem ser injetados em diretivas, filtros e controladores. Neste artigo, vamos entender a Fábrica em AngularJS.
- O que é Fábrica em AngularJS?
- Diferença entre Serviço e Fábrica
- Exemplo de Fábrica em JavaScript
O que é Fábrica em AngularJS?
Fábrica é uma função angular que é usada para retornar os valores. Um valor sob demanda é criado pela fábrica, sempre que um serviço ou controlador precisar dele. Uma vez criado o valor, ele é reutilizado para todos os serviços e controladores.
Podemos usar a fábrica para criar um serviço.
Diferença entre Serviço e Fábrica
- Um serviço pode ser definido da seguinte forma:
app.service('FirstService', function () {
this.sayHola = function () {
console.log('Hola');
};
});
The .service() method takes the name and the function that defines the service. We can inject it in the following way:
app.controller('AppController', function (FirstService) {
FirstService.sayHola(); // logs 'Hola'
});
- >
- Uma fábrica, por outro lado, pode ser definido da seguinte forma:
app.factory('FirstService', function () {
return {
sayHola: function () {
console.log('Hola');
}
}
});
fábrica() é também um método que leva um nome e uma função que define a fábrica. Podemos injetá-lo da mesma forma que injetar um serviço. A maior diferença entre um serviço e uma fábrica é que retornamos um objeto literal no caso da fábrica (em vez de usarmos isto). A razão é que o serviço é uma função construtora enquanto que uma fábrica não o é.
- Para uma melhor compreensão, vamos dar uma olhada na função de fábrica():
function factory(name, factFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factFn) : factFn
});
}
>No código dado acima, ele leva o nome e a função de fábrica passada. Ele retorna um provedor com o mesmo nome, juntamente com um método $get
(que é a função de fábrica) . Isto se deve ao fato de que sempre que se pede ao injetor uma dependência específica, o injetor pede ao provedor uma instância desse serviço, chamando o método $get()
.
- Na injecção do FirstService, as funções de fábrica são chamadas:
FirstServiceProvider.$get(); // return the instance of the service
- >
- Para o código do serviço:
function service(name, constructor) {
return factory(name, );
}
>
> Quando chamamos service(), factory()
é o que é realmente chamado. Isto é feito passando uma função que pede ao injector para instanciar um objecto pelo construtor. Em termos mais simples, o serviço chama uma fábrica predefinida.
$injector.instantiate()
chama o Object.create()
com a função construtor. É por isso que isto é usado em serviços.
Exemplo de Fábrica em JavaScript
var firstModule = angular.module("firstModule", );
firstModule.factory("firstFactory", function() {
return "a value";
});
firstModule.controller("FirstController", function($scope, firstFactory) {
console.log(firstFactory);
});
Injeção de valores na fábrica
Um valor pode ser injetado na fábrica pelo seguinte método:
>var firstModule = angular.module("firstModule", );
firstModule.value("numberValue", 29);
>firstModule.controller("FirstController", function($scope, numberValue) {
>console.log(numberValue);
>});
>
NOTE: Deve-se notar que o valor produzido pela função de fábrica é injetado, não a função de fábrica em si.
Com isto, chegamos ao fim desta Fábrica no artigo AngularJS. Espero que você tenha entendido o que é exatamente uma fábrica e como ela difere de um serviço.
Check out the Angular training by Edureka, uma empresa de aprendizagem on-line confiável com uma rede de mais de 250.000 alunos satisfeitos espalhados pelo mundo. Angular é um framework JavaScript que é usado para criar aplicações web escaláveis, empresariais e de desempenho do lado do cliente. Com a adoção do Angular framework sendo alta, a gestão do desempenho da aplicação é orientada indiretamente para a comunidade, gerando melhores oportunidades de trabalho. A Angular Certification Training visa cobrir todos estes novos conceitos em torno do Desenvolvimento de Aplicações Empresariais.