Pergunta

Eu não consigo encontrar muita informação sobre o Yii é AssetManager para a gestão da JS e CSS.A minha pergunta aqui é: qual é o ponto de usar o AssetManager?Eu não tenho certeza de qual o valor que ele acrescenta à minha processo de desenvolvimento, na verdade, parece que complica o meu código...toda vez que eu mudar a minha scripts ou código css, eu tenho que ir e eliminar os meus bens pasta para se certificar de que eu tenha as versões mais recentes.

Parece que é muito mais simples apenas para colocar todos os arquivos de Javascript em /webroot/js/ e basta usar as tags para carregar os arquivos, em vez de passar pelo trabalho de AssetManager.Além disso, o Yii é registerCoreScript função sempre coloca tags de script dentro da tag de cabeçalho, em vez de colocá-los na parte inferior do código, perto da marca de fechamento do corpo, como recomendado pelo YSlow.

Eu acho que deve haver uma lacuna na minha compreensão do Yii é AssetManager.Alguém tem alguma idéia de por que usar o AssetManager é melhor do que codificar as marcas de script dentro do código PHP?Eu estou um pouco confuso...

Obrigado!

Foi útil?

Solução

Tenho certeza de que alguém pode responder melhor do que eu, mas basicamente é para que seu fonte Os arquivos JS e CSS podem permanecer na sua pasta protegida.

Isso é um pouco mais seguro para uma coisa, mas o principal benefício para mim é que Você pode comprimir e minimizar e processar seus ativos com o sistema de publicação de ativos, e facilita a hospede seu JS e CSS em um CDN já que é separado da sua base de código.

Além disso, aqui está um Resposta oficial de Qiang (O cara que escreveu Yii) sobre isso.

Outras dicas

O principal benefício do Yii de ativos do gestor é que ele permite que você para estrutura de seus componentes em uma forma auto-suficiente.

Um conto de um widget

Considere um componente que é um widget de INTERFACE do usuário.Vamos supor que a distribuição inclui um par de ativos junto com o componente de implementação, por exemplo, esses arquivos:

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

Pense em como você gostaria de incorporar este widget em sua aplicação, se o gestor de ativos não existe.Passos típicos podem incluir:

  1. Cópia SuperWidget.php em algum lugar dentro da protected/ diretório
  2. Cópia superwidget.js para o seu js/ diretório
  3. Cópia superwidget.css para o seu css/ diretório
  4. Cópia image_for_css.png para o seu images/ diretório ou, talvez, também no interior de css/ para ajudar a reduzir o caminho relativo dependências

Em seguida, em tempo de execução SuperWidget emitiriam tags apropriadas para incluir o CSS e JavaScript; para fazer isso, ele precisa saber exatamente onde você tem colocado esses ativos.Em outras palavras: algumas escolhas em relação a instalação pode ser feita arbitrariamente, mas, em seguida, eles são, em pedra, a menos que você vá e editar o código fonte.

É o widget reutilizáveis?

Se este widget foram altamente personalizado e destinado a ser uma parte inseparável do seu aplicativo, em seguida, esta abordagem funciona bem e não haveria muito precisa ter um gestor de ativos.Mas e se, de forma bastante útil de componente que você deseja distribuir?

Problemas começam a surgir.

Primeiro de tudo, o esquema de implantação de examinamos requer que os usuários do widget para copiar arquivos diferentes em pastas diferentes, o que complica o procedimento de instalação e aumentando a chance de erro.

Mas o maior problema é que o esquema de implantação poderia entrar em conflito com o de qualquer outro componente desenvolvido de forma independente de seu.E se alguém decidiu ter um superwidget.js arquivo muito?

Se as instruções de instalação para estes dois componentes conflito, então, obviamente, um deles não pode ser instalado como se pretende e, em seguida, você recurso para mudar alguns detalhes e hackear o código-fonte do componente para acomodar estas alterações.Se mais tarde você atualizar para uma versão mais recente do componente que você vai ser forçado a cuidadosamente em conta o seu personalizações, fazer um "copiar/overwrite" atualização impossível.

Tudo isso é muito bonito, e apesar de ser improvável que isso aconteça na prática, ele certamente não se sente bem.

Gestor de ativos, torná-lo tão

Aqui é onde o gestor de ativos vem.Vamos supor que você decida estrutura de seu componente como este:

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

Você pode copiar diretamente esta em algum lugar dentro do seu protected/ diretório não importa o que os outros componentes que você tenha instalado;a pior coisa que pode acontecer aqui é que você teria que mudar o nome superwidget/ outra coisa, se houvesse um conflito.

Utilizando o gestor de ativos, SuperWidget.php publica toda a superwidget/assets/ diretório, com a cópia terminando em e. assets/1337c0de/ onde assets/ a sua aplicação é da base de ativos caminho e 1337c0de/ é um aleatório hash criado pelo Yii e garantido para não entrar em conflito com qualquer outra publicada de activos.

Isso significa que os recursos para SuperWidget não pode, possivelmente, entrar em conflito com os de qualquer outro componente de, fazendo SuperWidget realmente reutilizáveis.E uma vez que a estrutura de diretórios dentro 1337c0de/ vai ser o mesmo como na sua distribuição, CSS pode referir-se a imagens usando o caminho relativo ../images/ sem a necessidade de consultar o valor do aleatória de hash (o que é só sei que após a publicação).

O que o gestor de ativos não

  • Não é uma maneira de aumentar a segurança.O componente de origem estaria em algum lugar dentro de protected/ de qualquer maneira (nada de melhoria de lá), e os bens devem ser acessível através da web, não importa onde eles acabam sendo copiados (nenhuma segurança para eles, não importa o que).
  • Não é um "pega-tudo" solução para o processamento de seus ativos (por exemplo,reduzir CSS).Embora seja possível instalar uma custom gestor de ativos que faz isso, não se esqueça de que os activos incluídos com componentes reutilizáveis vai uma pequena minoria entre todos os de sua "base" da aplicação de bens;se você deseja minimização através da placa, você 'll tem que processar tudo o mais e que o gestor de ativos não irá ajudá-lo lá.

TL;DR

O gestor de ativos permite que você faça componentes que são facilmente distribuível e pode ser incluído nas aplicações, sem o medo de criar conflitos com outros componentes.

Outra vantagem que eu gosto no gerente de ativos é que ele permite atualizar seus arquivos de ativos sem precisar dizer aos usuários para limpar o cache.

http://www.yiiframework.com/wiki/311/ASSETMANAGER CLEARING-BROWSER-CACHEN-ON-SITEUPDATE/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top