AngularJS proporciona servicios que son objetos singleton reutilizables. Pueden ser utilizados para compartir el código a través de los usuarios AngularJS aplicaciones. También pueden ser inyectados en directivas, filtros y controladores. En este artículo, vamos a entender la fábrica en AngularJS.
- ¿Qué es la fábrica en AngularJS?
- Diferencia entre el servicio y la fábrica
- Ejemplo de fábrica en JavaScript
¿Qué es la fábrica en AngularJS?
La fábrica es una función angular que se utiliza para devolver los valores. Un valor bajo demanda es creado por la fábrica, siempre que un servicio o controlador lo necesite. Una vez creado el valor, se reutiliza para todos los servicios y controladores.
Podemos utilizar la fábrica para crear un servicio.
Diferencia entre servicio y fábrica
- Un servicio se puede definir de la siguiente manera:
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'
});
- Una fábrica, por otro lado puede ser definida de la siguiente manera:
app.factory('FirstService', function () {
return {
sayHola: function () {
console.log('Hola');
}
}
});
factory() también es un método que toma un nombre y una función que define la fábrica. Podemos inyectarlo de la misma manera que inyectar un servicio. La mayor diferencia entre un servicio y una fábrica es que en el caso de la fábrica devolvemos un literal de objeto (en lugar de usar esto). La razón es que el servicio es una función constructora mientras que una fábrica no lo es.
- Para una mejor comprensión, echemos un vistazo a la función factory():
function factory(name, factFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factFn) : factFn
});
}
En el código dado anteriormente, toma el nombre y la función factory pasada. Devuelve un proveedor con el mismo nombre, junto con un método $get
(que es la función de fábrica) . Esto se debe a que cada vez que se pide al inyector una dependencia específica, el inyector pide al proveedor una instancia de ese servicio llamando al método $get()
.
- Al inyectar FirstService, se llaman las funciones de fábrica:
FirstServiceProvider.$get(); // return the instance of the service
- Para el código del servicio:
function service(name, constructor) {
return factory(name, );
}
Cuando llamamos a service(), factory()
es el que realmente se llama. Esto se hace pasando una función que pide al inyector que instancie un objeto por el constructor. En términos más simples, el servicio llama a una fábrica predefinida.
$injector.instantiate()
llama a la Object.create()
con la función del constructor. Por eso se utiliza en los servicios.
Ejemplo de fábrica en JavaScript
var firstModule = angular.module("firstModule", );
firstModule.factory("firstFactory", function() {
return "a value";
});
firstModule.controller("FirstController", function($scope, firstFactory) {
.
console.log(firstFactory);
});
Inyección de valores en la fábrica
Se puede inyectar un valor en la fábrica mediante el siguiente método:
var firstModule = angular.module("firstModule", );
firstModule.value("numberValue", 29);
firstModule.controller("FirstController", function($scope, numberValue) {
console.log(numberValue);
});
NOTA: Hay que tener en cuenta que se inyecta el valor producido por la función de fábrica, no la función de fábrica en sí.
Con esto, llegamos al final de este artículo de Factory en AngularJS. Espero que hayas entendido qué es exactamente una fábrica y en qué se diferencia de un servicio.
Consulta la formación en Angular de Edureka, una empresa de aprendizaje online de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. Angular es un marco de JavaScript que se utiliza para crear aplicaciones web del lado del cliente escalables, empresariales y de rendimiento. Con la adopción del marco Angular siendo alta, la gestión del rendimiento de la aplicación es impulsada por la comunidad indirectamente impulsando mejores oportunidades de trabajo. La formación de certificación de Angular tiene como objetivo cubrir todos estos nuevos conceptos en torno al desarrollo de aplicaciones empresariales.