\Numenor\HtmlControleJavascript

Classe de controle para inclusão de arquivos Javascript em páginas HTML.

Arquivos JS podem ser concatenados, minificados e gzipados para melhorar o desempenho da página onde são carregados. Também é possível controlar a inclusão de arquivos de script originados em servidores externos (CDNs), que não são pré-processados da mesma maneira que os scripts armazenados localmente no servidor.

Summary

Methods
Properties
Constants
__construct()
setComportamentoPadrao()
gerarCodigoInclusao()
adicionarJs()
setMinificadorJs()
No public properties found
COMPORTAMENTO_PADRAO_DEV
COMPORTAMENTO_PADRAO_HOMOLOG
COMPORTAMENTO_PADRAO_PROD
gerarListaConcatCompact()
gerarListaConcat()
gerarListaCompact()
gerarListaNormal()
gerarNome()
gerarListaRemoto()
minificar()
$arrayWrapper
$stringWrapper
$diretorioOutput
$urlBase
$comportamentoPadrao
$minificadorJs
$listaJs
$listaArquivosIncluir
N/A
No private methods found
No private properties found
N/A

Constants

COMPORTAMENTO_PADRAO_DEV

COMPORTAMENTO_PADRAO_DEV

Define que o comportamento padrão da inclusão de assets será de ambiente de desenvolvimento.

COMPORTAMENTO_PADRAO_HOMOLOG

COMPORTAMENTO_PADRAO_HOMOLOG

Define que o comportamento padrão da inclusão de assets será de ambiente de homologação.

COMPORTAMENTO_PADRAO_PROD

COMPORTAMENTO_PADRAO_PROD

Define que o comportamento padrão da inclusão de assets será de ambiente de produção.

Properties

$arrayWrapper

$arrayWrapper : \Numenor\Php\ArrayWrapper;

Instância do objeto de encapsulamento das operações de array.

Type

\Numenor\Php\ArrayWrapper;

$stringWrapper

$stringWrapper : \Numenor\Php\StringWrapper;

Instância do objeto de encapsulamento das operações de string.

Type

\Numenor\Php\StringWrapper;

$diretorioOutput

$diretorioOutput : string

Diretório onde os arquivos processados (minificados, concatenados, gzipados, etc.) serão salvos.

Este diretório DEVE ter o acesso público liberado (normalmente, algo como [DIR_ROOT]/public/assets/[TIPO]/), ou os arquivos não funcionarão ao serem incluídos como assets na página.

Type

string

$urlBase

$urlBase : string

URL base de inclusão dos assets.

Este valor será utilizado para gerar os snippets de inclusão dos assets (tags [script], [link], [img], etc.), e normalmente reflete o diretório de output dos assets processados.

Type

string

$comportamentoPadrao

$comportamentoPadrao : string

Comportamento padrão do controlador de assets.

Por padrão, os arquivos de assets processados pelo controlador são tratados conforme suas configurações (minificados e concatenados em um só arquivo, minificados separadamente, concatenados sem minificação, ou adicionados sem nenhum processamento adicional). Esta configuração permite que este comportamento padrão seja sobrescrito de forma a facilitar o controle dos arquivos em determinados ambientes da aplicação:

  • Ambiente de desenvolvimento: nesse tipo de ambiente, todos os arquivos são adicionados como se tivessem sido configurados sem processamento adicional, de modo a facilitar o debug desses arquivos.
  • Ambiente de homologação: neste tipo de ambiente, os arquivos são processados conforme suas configurações, porém o sistema sempre gera novamente e sobrescreve os arquivos concatenados/minificados. Dessa maneira, não é necessário limpar os arquivos gerados a cada atualização. A penalidade de desempenho incorrida normalmente não é problema para ambientes de homologação.
  • Padrão/Ambiente de produção: neste tipo de ambiente, os arquivos são processados de acordo com suas configurações e é feita a verificação da existência dos arquivos resultantes antes de efetuar o processamento. Caso um ou mais assets sejam alterados, é necessário apagar os arquivos resultantes manualmente para que eles sejam regenerados.

Type

string

$minificadorJs

$minificadorJs : \MatthiasMullie\Minify\JS

Componente de minificação dos assets Javascript.

Type

\MatthiasMullie\Minify\JS

$listaJs

$listaJs : array<mixed,\Numenor\Html\Javascript>

Lista de arquivos Javascript adicionados para processamento na página.

Type

array<mixed,\Numenor\Html\Javascript>

$listaArquivosIncluir

$listaArquivosIncluir : array

Lista de arquivos Javascript que serão efetivamente incluídos na página.

Type

array

Methods

__construct()

__construct(\Numenor\Php\ArrayWrapper  $arrayWrapper, \Numenor\Php\StringWrapper  $stringWrapper, \Numenor\Html\string  $diretorioOutput, \Numenor\Html\string  $urlBase) 

Método construtor da classe.

Parameters

\Numenor\Php\ArrayWrapper $arrayWrapper

Instância do objeto de encapsulamento das operações de array.

\Numenor\Php\StringWrapper $stringWrapper

Instância do objeto de encapsulamento das operações de string.

\Numenor\Html\string $diretorioOutput

Diretório onde os arquivos processados serão salvos.

\Numenor\Html\string $urlBase

URL base de inclusão dos assets.

setComportamentoPadrao()

setComportamentoPadrao(string  $comportamentoPadrao) : \Numenor\Html\Controle

Método setter do comportamento padrão do controlador de assets.

Parameters

string $comportamentoPadrao

Valor do comportamento padrão do controlador.

Returns

\Numenor\Html\Controle

Instância do próprio objeto para encadeamento.

gerarCodigoInclusao()

gerarCodigoInclusao() : string

Gera o snippet do código de inclusão dos assets adicionados à página.

Returns

string —

O snippet de inclusão dos arquivos processados.

adicionarJs()

adicionarJs(\Numenor\Html\Javascript  $js) : \Numenor\Html\ControleJavascript

Adiciona um arquivo Javascript à lista de arquivos incluídos na página.

Parameters

\Numenor\Html\Javascript $js

Novo arquivo incluído na página.

Throws

\Numenor\Excecao\ExcecaoAssetDuplicado

se o asset informado já foi incluído anteriormente.

\Numenor\Excecao\ExcecaoAssetNaoExiste

se o arquivo do asset informado não existe.

Returns

\Numenor\Html\ControleJavascript

Instância do próprio objeto para encadeamento.

setMinificadorJs()

setMinificadorJs(\Numenor\Html\MatthiasMullie\Minify\JS  $minificador) : \Numenor\Html\ControleJavascript

Define o minificador utilizado pelo sistema para processar e compactar os arquivos.

Parameters

\Numenor\Html\MatthiasMullie\Minify\JS $minificador

Instância do minificador.

Returns

\Numenor\Html\ControleJavascript

Instância do próprio objeto para encadeamento.

gerarListaConcatCompact()

gerarListaConcatCompact(array  $listaAssets) : array

Gera a lista de arquivos de assets que devem ser minificados e concatenados.

Parameters

array $listaAssets

Lista de assets analisados.

Returns

array —

Lista de arquivos de assets que devem ser minificados e concatenados.

gerarListaConcat()

gerarListaConcat(array  $listaAssets) : array

Gera a lista de arquivos de assets que devem ser apenas concatenados, sem minificação.

Parameters

array $listaAssets

Lista de assets analisados.

Returns

array —

Lista de arquivos de assets que devem ser concatenados.

gerarListaCompact()

gerarListaCompact(array  $listaAssets) : array

Gera a lista de arquivos de assets que devem ser apenas minificados, sem concatenação.

Parameters

array $listaAssets

Lista de assets analisados.

Returns

array —

Lista de arquivos de assets que devem ser minificados.

gerarListaNormal()

gerarListaNormal(array  $listaAssets) : array

Gera a lista de arquivos de assets que devem ser incluídos sem nenhum processamento adicional.

Parameters

array $listaAssets

Lista de assets analisados.

Returns

array —

Lista de arquivos de assets que devem ser incluídos sem nenhum processamento adicional.

gerarNome()

gerarNome(array  $listaAssets) : string

Gera um nome único para uma lista de assets, criando um hash a partir da concatenação dos nomes individuais.

Parameters

array $listaAssets

Lista de nomes dos assets.

Returns

string —

Hash gerado a partir dos nomes dos assets listados.

gerarListaRemoto()

gerarListaRemoto(array  $listaAssets) : array

Gera a lista de arquivos de assets de inclusão remota.

Parameters

array $listaAssets

Lista de assets analisados.

Returns

array —

Lista de arquivos de assets de inclusão remota.

minificar()

minificar() 

Processa a lista de arquivos Javascript incluídos, alterando-os conforme necessário (minificação, concatenação, etc.) e gerando os snippets de inclusão dos mesmos.