Weblosofia com CSS, Jquery, Javascript, Ajax, PHP etc.
por Alexandre Magno
Postado em Outubro 01st, 2008 por Alexandre Magno
Plugins, projetos jQuery, Jquery
A função de inserir arquivos Javascripts ou CSS sob demanda (através de um comando) deveria ser essencial no javascript. Existe alguns plugins para jQuery que faz isto como Javascript on demand, mas ainda faltava flexibilidade e a possibilidade de adicionar arquivos CSS.
Criei um plugin que insere no head do documento a tag script apontando para um script externo ou a tag link para um arquivo css. Você pode passar uma string como arquivo ou um array de arquivos para serem carregados. Ele não insere scripts duplicados, pois sempre verifica a existência do arquivo antes de inserir.
$.include(String | Array url, Function callback);
//Javascript único
$.include('file.js');
//Você pode passar uma array de arquivos
$.include(['file01.js','file02.js']);
//Você pode especificar o diretório base para todos arquivos inclusos
$.ImportBasePath = '/foo/test/';
//Você pode inserir arquivos de diferentes formatos em um único array
$.include(['file01.js','file02.css']);
//O plugin suporta callback também
$.include(['file01.js',function(){
//code be executed when script loads
});
//Ainda não amplamento testado, você pode usar callbacks para scripts gerados
$.include(['file01.css',function(){
//code be executed when css loads
});
Ideal para inserir scripts sob demanda ou executar scripts e estilos em requisições Ajax
O $.getScript é muito útil para carregar arquivos javascript, mas ele faz uma requisição ajax em que o retorno é avaliado e executado. O proposta deste plugin é criar um novo elemento no head do documento.
http://plugins.jquery.com/project/includedemand
http://code.google.com/p/jquerydevbrazil/source/browse/trunk/jquery.include.js
Ferdinando comentou:
18th Novembro, 2008 às 6:52 pm
Antes de qualquer coisa, parabéns pelo site e pela dedicação.
Você comenta, sobre Por que não usar $.getScript?
Em incursões pelo google, acabei achando soluções para resolver o problema com o $.getScript, nos quais adotei em meu projeto e percebi realmente um certo aumento na performance.
utilize antes do $.getScript as instruções
$.ajaxSetup({async: false});
$.ajaxSetup({cache: true});
$.getScript(”seu ARQUIVO JS”);
$.ajaxSetup({async: true});
$.ajaxSetup({cache: false});
Esse procedimento não deixa o script ser carregado varias vezes e acompanhando na pasta temporaria, você vê que os scripts não são carregados novamente, toda vez que você acessa o site.
Pensando em desenvolvimento de sistemas robustos onde você tem dezenas de rotinas e procedimentos, não da pra carregar toda hora as .js.
Parabéns novamente e em breve se você me permitir, estarei disponibilizando um sistema para sua avaliação, que gera formularios completos, facilitando o desenvolvimento de sistemas completos em pouco tempo, claro 100% JQUERY.
Abraços
Alexandre Magno comentou:
21st Novembro, 2008 às 10:24 am
O plugin que criei não insere várias vezes, ele verifica antes de inserir se o plugin já existe. O problema com o código que você mostrou é que você está fazendo uma requisição ajax não assíncrona e dependendo do tamanho do script o browser ficará travado até completar a requisição.
Se desejar disponibilizar estarei a disposição. Abraços e boa sorte, se precisar estou aqui como sempre…
Manuel comentou:
6th Março, 2009 às 10:16 pm
Oi Alexandre
Procurava uma forma de inserir um script através do jquery e você me ajudou, obrigado.
Cumprimentos
MM
Onde colocar a tag script? em Webpoint - Weblosofia com CSS, Jquery, Javascript, Ajax, PHP etc. comentou:
14th Março, 2009 às 3:30 pm
[…] a diferença de perfomance é considerável. Para tentar minimizar este problema, eu utilizo o carregamento de scripts sob demanda que desenvolvi para não carregar scripts desnecessários na página que muitas vezes nem use algum […]
Marcus Medeiros comentou:
16th Abril, 2009 às 3:13 pm
Quero agradecer ao Alexandre pelo site, muito bom, tiro várias dúvidas aqui. e também agradecer ao Ferdinando com o “$.getScript” acaba de salvar meu pescoço hehehe
Alexandre Magno comentou:
16th Abril, 2009 às 4:37 pm
@Marcus: Muito obrigado Marcus pelo reconhecimento. Abraços e boa sorte…
Os seguintes campos estão incorretos ou faltando