Projetos: ASP Dynamic Include


Olá pessoas ... e bots.

Assim como o último projeto que trouxe no blog, este traz um recurso para a linguagem em que é feito (Asp Clássico, VBScript no caso) que não existe nativamente e faz falta: include dinâmicos

Includes nativos do ASP

Para carregar um arquivo de código externo na página em VBScript usam-se Server Side Includes, com a seguinte sintaxe:
O ASP Clássico cria versões "compiladas" da página à parti de seu código, para evitar re-interpretar o código a cada nova execução. Cada include faz o arquivo referenciado ser incluído no código da versão compilada - de forma incondicional e independente da lógica na página. Quando a página é executada, a versão compilada tem todo o código dela e dos includes em um único lugar, como se tudo tivesse sido feito num único arquivo - e efetivamente está em um só arquivo: a versão compilada da página.

Justamente por essa natureza incondicional e a inclusão acontecer fora da execução da página, é impossível usar variáveis e outros recursos da linguagem em Server Side Includes - apenas strings fixas com caminhos de arquivos são válidas.

Includes dinâmicos

Não é preciso ser um gênio para ver o quanto os includes nativos são limitados e atrapalham um desenvolvedor - se tornando mais uma trava que um recurso.
Pensando nisso, me inspirei no funcionamento de includes do PHP para implementar o recurso de includes dinâmicos: ler e interpretar código de arquivos em tempo de execução, podendo utilizar todos os recursos oferecidos pelo ASP para decidir quais arquivos serão incluídos, quando e se serão ou não - de acordo com a lógica da sua aplicação. Segue um exemplo de uso:
Obviamente é inevitável ter que usar um Server Side Include para chamar a biblioteca (afinal programação não é mágica), mas à partir da inclusão do ASP Dynamic Include, você só irá usar includes nativos quando quiser. Se você usar um include dinâmico para incluir arquivos que tem Server Side Includes, eles serão automaticamente carregados de forma dinâmica.

Dica: obviamente o desempenho de um include dinâmico com a biblioteca é menor que um include nativo equivalente, tanto pela diferença de funcionamento já explicada anteriormente quanto por  execução dinâmica de código em VBScript ser naturalmente mais lenta. Então, quando precisar de mais desempenho e/ou não necessitar carregar arquivos em tempo de execução, dê preferência aos includes tradicionais.

Repositório

Esse projeto está disponível no meu portfólio no GitHub, numa única edição mas com alguns extras em um arquivo de código à parte.
Sendo um projeto opensource com licença LGPL 3 você pode usá-lo à vontade, seja para fins educativos, comerciais ou qualquer outro.
E se quiser fazer alguma contribuição a este desenvolvedor independente, fique à vontade. :)

Comentários