Pregunta

No se puede encontrar mucha información sobre AssetManager de Yii para la gestión de archivos CSS y JS. Mi pregunta es ¿cuál es el punto de utilizar la AssetManager? No estoy seguro de qué valor se añade a mi proceso de desarrollo, de hecho, parece que complica mi código ... cada vez que cambio de mis scripts o código CSS, tengo que entrar y borrar mis activos carpeta para asegurarse tengo las últimas versiones.

Parece que es mucho más simple que sólo hay que poner todos los archivos Javascript en / Webroot / js / y sólo tiene que utilizar las etiquetas para cargar los archivos en lugar de pasar por la molestia de AssetManager. Además, la función de registerCoreScript Yu siempre coloca etiquetas script dentro de la etiqueta de cabecera, en lugar de colocarlos en la parte inferior del código, cerca de la etiqueta del cuerpo de cierre, según lo recomendado por YSlow.

creo que debe haber un hueco en mi comprensión de AssetManager de Yii. Alguien tiene alguna idea de por qué el uso de la AssetManager es mejor que la codificación dura de las etiquetas script en el código PHP? Estoy un poco confundido ...

Gracias!

¿Fue útil?

Solución

Estoy seguro de que alguien pueda responder mejor que yo, pero básicamente es para que su fuente archivos JS y CSS puede permanecer en su carpeta protegida.

Esto es un poco más seguro para una cosa, pero el principal beneficio para mí es que se puede comprimir y Minify y procesar sus activos con el sistema de publicación de activos, y hace que sea más fácil anfitrión su JS y CSS en un CDN ya que es independiente de su base de código.

Además, aquí hay un respuesta oficial de Qiang (el tipo que escribió Yu) sobre esto.

Otros consejos

El principal beneficio de gestor de activos de Yii es que que le permite estructurar sus componentes de manera autónoma .

Historia de un widget

Considere un componente que es un widget de la interfaz de usuario. Vamos a suponer que la distribución incluye un par de activos junto con la implementación del componente, por ejemplo, estos archivos:

SuperWidget.php
superwidget.css
superwidget.js
image_for_css.png

Considere cómo se incorporará este widget en su aplicación si no existiera el gestor de activos. Los pasos típicos pueden incluir:

  1. Copiar SuperWidget.php algún lugar dentro del directorio de protected/
  2. Copiar superwidget.js a su directorio js/
  3. Copiar superwidget.css a su directorio css/
  4. Copiar image_for_css.png a su directorio images/ o quizás también css/ interior para ayudar a reducir las dependencias de ruta relativa

A continuación, en tiempo de ejecución SuperWidget emitiría etiquetas apropiadas para incluir el CSS y JavaScript; Para ello, sería necesario saber dónde se ha aplicado exactamente estos activos . En otras palabras:. algunas opciones con respecto a la instalación se puede hacer de manera arbitraria, pero luego están escritas en piedra, a menos que vaya y editar el código fuente

¿Es el widget de reutilizable?

Si este widget fueron altamente personalizado y destinado a ser una parte inseparable de su aplicación a continuación, este enfoque funciona bien y no sería mucho necesidad de contar con un gestor de activos. Pero lo que si es un componente ampliamente útil que se desea distribuir?

Los problemas comienzan a levantarse.

En primer lugar el esquema de despliegue que hemos examinado requiere que los usuarios del widget para copiar archivos diferentes en diferentes directorios, lo que complica el procedimiento de instalación y aumentar las posibilidades de error.

Pero el problema mayor es que su esquema de despliegue podría entrar en conflicto con la de cualquier otro componente desarrollado de manera independiente de los suyos. ¿Qué pasa si alguien más decidió tener un archivo superwidget.js también?

Si las instrucciones de instalación de estos dos componentes conflicto entonces, evidentemente, uno de ellos no se pueden instalar como se pretende, y después de recurrir a cambiar algunos detalles y la piratería en el código fuente del componente para dar cabida a estos cambios. Si se actualiza a una versión más reciente de ese componente que se verán obligados a tener en cuenta cuidadosamente para las personalizaciones, haciendo una "copia / sobreescritura" ascenso imposible.

Todo esto es realmente no es bonito, y si bien puede ser poco probable que suceda en la práctica, sin duda no se siente bien.

gestor de activos, lo hacen tan

Aquí es donde el gestor de activos viene en Asumamos que decida estructurar su componente de esta manera:.

superwidget/
  SuperWidget.php
  assets/
    css/
      superwidget.css
    js/
      superwidget.js
    images/
      image_for_css.png

Se puede copiar directamente esto en alguna parte dentro de su directorio protected/ no importa qué otros componentes que haya instalado; lo peor que podría suceder aquí es que usted tendría que cambiar el nombre de superwidget/ a otra cosa si había un conflicto.

Uso del gestor de activos, SuperWidget.php publica todo el superwidget/assets/ directorio, con la copia de acabar en por ejemplo, assets/1337c0de/ donde assets/ es ruta de elemento de base de la aplicación y 1337c0de/ es un hash aleatoria creado por Yu y se garantiza que no conflicto con cualquier otro activo publicados.

Esto significa que los activos para SuperWidget no puede entrar en conflicto con los de cualquier otro componente , haciendo SuperWidget verdaderamente reutilizable. Y puesto que la estructura de directorios en el interior 1337c0de/ será el mismo que en su distribución, CSS puede referirse a las imágenes utilizando el ../images/ ruta relativa, sin necesidad de hacer referencia al valor de hash aleatoria (que sólo se conoce después de la publicación).

¿Qué gestionar el activor es no

  • No es una forma de aumentar la seguridad. Su fuente de componente sería en algún lugar dentro protected/ de todos modos (por lo que no mejora allí), y los activos tienen que ser accesible desde la web, sin importar dónde terminan siendo copiado (sin seguridad para ellos no importa qué).
  • No es un cajón de sastre solución para el procesamiento de sus activos (por ejemplo, minifying CSS). Si bien es posible instalar un gestor de activos a medida que hace esto, no se olvide de que los activos incluidos con componentes reutilizables hará una pequeña minoría entre todos sus activos de "aplicación" de base; si quieres minimización a través del tablero, usted tendrá también a proceso de todo lo demás y el gestor de activos no va a ayudar allí.

TL; DR

El gestor de activos permite hacer componentes que son fácilmente distribuibles y se pueden incluir en las solicitudes sin el temor de crear conflictos con otros componentes.

Otra ventaja que me gusta de la gestión de activos, es que permite que actualice sus archivos de activos sin tener que decirle a sus usuarios a borrar la caché.

http: // www .yiiframework.com / wiki / 311 / assetmanager-facilitación del navegador-s-cache-en-sitio-actualización /

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top