Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

unidades:03_servicios:07_service [2014/07/29 17:04]
admin [Service vs value]
unidades:03_servicios:07_service [2014/08/29 21:48] (actual)
admin
Línea 34: Línea 34:
 </​sxh>​ </​sxh>​
  
-  * Línea 3: Aqui hemos definido la función JavaScript con el constructor de nuestra clase llamada "​Rectangulo"​+  * Línea 3: Aquí hemos definido la función JavaScript con el constructor de nuestra clase llamada "​Rectangulo"​.
   * Línea 20: Llamamos al método ''​service''​ y le pasamos como segundo parámetro la función con el constructor de la clase "​Rectangulo"​.   * Línea 20: Llamamos al método ''​service''​ y le pasamos como segundo parámetro la función con el constructor de la clase "​Rectangulo"​.
  
Línea 74: Línea 74:
 </​sxh> ​ </​sxh> ​
  
-Y ahora nos queda inyectar el ''​value''​ "​tamanyoInicialRectangulo"​ en el constructor de "​Rectangulo"​ y AngularJS por suerte ya tiene esa funcionalidad programada ((A mi me recuerda a Spring que también permite inyectar dependencias en los constructores)).+Y ahora nos queda inyectar el ''​value''​ "​tamanyoInicialRectangulo"​ en el constructor de "​Rectangulo"​ y AngularJS por suerte ya tiene esa funcionalidad programada ((A mí me recuerda a Spring que también permite inyectar dependencias en los constructores)).
 <sxh js> <sxh js>
 app.service("​cuadrado",​['​tamanyoInicialRectangulo',​Cuadrado]);​ app.service("​cuadrado",​['​tamanyoInicialRectangulo',​Cuadrado]);​
Línea 117: Línea 117:
 Hay que hacer notar que el nombre del ''​value''​ que se inyecta se llama "​tamanyoInicialRectangulo"​ mientras que el parámetro del constructor se llama "​tamanyoInicial"​. Es decir que tienen nombres distintos. No hay problema en ello ya que una vez inyectado el valor da igual el nombre del parámetro del constructor. Hay que hacer notar que el nombre del ''​value''​ que se inyecta se llama "​tamanyoInicialRectangulo"​ mientras que el parámetro del constructor se llama "​tamanyoInicial"​. Es decir que tienen nombres distintos. No hay problema en ello ya que una vez inyectado el valor da igual el nombre del parámetro del constructor.
  
-Si no hubiéramos usado el array si que se deberían de haber llamado igual , por lo que éste es un motivo ​mas para usar siempre el array.+Si no hubiéramos usado el array sí que se deberían de haber llamado igual , por lo que éste es un motivo ​más para usar siempre el array.
 </​note>​ </​note>​
  
 ===== Service vs value ===== ===== Service vs value =====
-Ahora, ​¿que hemos ganado usando un ''​service''​ en vez de un ''​value''​ cuando el valor es una objeto de una clase? Si no necesitamos inyección de dependencias en el constructor la verdad es que no hemos ganado mucho.+Ahora, ​¿qué ​hemos ganado usando un ''​service''​ en vez de un ''​value''​ cuando el valor es una objeto de una clase? Si no necesitamos inyección de dependencias en el constructor la verdad es que no hemos ganado mucho.
  
 El ejemplo inicial se podría haber hecho como un ''​value''​ de la siguiente forma: El ejemplo inicial se podría haber hecho como un ''​value''​ de la siguiente forma:
Línea 156: Línea 156:
   * Línea 18: Le pasamos directamente el objeto de la clase en vez de que internamente sea AngularJS el que cree el objeto.   * Línea 18: Le pasamos directamente el objeto de la clase en vez de que internamente sea AngularJS el que cree el objeto.
  
-Realmente no hay mucha diferencia ya que como veremos mas adelante tanto los [[unidades:​03_servicios:​06_value|value]] como los [[unidades:​03_servicios:​07_service|service]] como los [[unidades:​03_servicios:​08_factory|factory]] son solamente //azucar sintáctico//​ respecto a los [[unidades:​03_servicios:​09_provider|provider]]. Es decir , internamente para AngularJS son únicamente un [[unidades:​03_servicios:​09_provider|provider]] pero al ser los [[unidades:​03_servicios:​09_provider|provider]] un poco complejos de programar se han creado estas funciones para simplificar su uso. +Realmente no hay mucha diferencia ya que como veremos mas adelantetanto los [[unidades:​03_servicios:​06_value|value]] como los [[unidades:​03_servicios:​07_service|service]] como los [[unidades:​03_servicios:​08_factory|factory]] son solamente //azucar sintáctico//​ respecto a los [[unidades:​03_servicios:​09_provider|provider]]. Es decir , internamente para AngularJS son únicamente un [[unidades:​03_servicios:​09_provider|provider]] pero al ser los [[unidades:​03_servicios:​09_provider|provider]] un poco complejos de programar se han creado estas funciones para simplificar su uso. 
  
-Pero aun así, yo veo una ventaja de un ''​service''​ sobre un ''​value''​ cuando es un objeto de una clase. Si un servicio nunca se va a usar , AngularJS no lo inicializará por lo tanto usando un ''​service''​ nos podríamos ahorrar el gasto de crear la instancia si no llegara a usarse o al menos retrasarlo hasta que se use, mientras que con un ''​value''​ siempre se crearía. ​+Pero aun así, yo veo una ventaja de un ''​service''​ sobre un ''​value''​ cuando es un objeto de una clase. Si un servicio nunca se va a usar , AngularJS no lo inicializará por lo tanto usando un ''​service''​nos podríamos ahorrar el gasto de crear la instancia si no llegara a usarse o al menos retrasarlo hasta que se use, mientras que con un ''​value''​ siempre se crearía. ​
  
 Esto que puede parecer poca cosa, podría implicar gran gasto de recursos en grandes aplicaciones en las que hay gran cantidad de servicios y también debemos añadir todos los servicios que crean las librerías de terceros que usemos. Esto que puede parecer poca cosa, podría implicar gran gasto de recursos en grandes aplicaciones en las que hay gran cantidad de servicios y también debemos añadir todos los servicios que crean las librerías de terceros que usemos.
Línea 164: Línea 164:
 <note tip> <note tip>
 Es preferible usar un ''​service''​ en vez de un ''​value''​ cuando es una instancia de una clase ya que: Es preferible usar un ''​service''​ en vez de un ''​value''​ cuando es una instancia de una clase ya que:
-  * Nos podemos ​ahorrarnos ​la creación de la instancia o al menos retrasarla hasta que sea necesaria.+  * Nos podemos ​ahorrar ​la creación de la instancia o al menos retrasarla hasta que sea necesaria
   * Permite inyectar dependencias en el constructor   * Permite inyectar dependencias en el constructor
 </​note>​ </​note>​
unidades/03_servicios/07_service.txt · Última modificación: 2014/08/29 21:48 por admin
Ir hasta arriba
CC Attribution-Share Alike 3.0 Unported
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0