2013-01-07 12 views
20

Vorrei includere JS da CDN in Meteor prima di includere i miei script client in modo che gli script client possano dipendere da esso.Come includere JavaScript da un CDN in meteora?

... 
<script type="text/javascript" src="https://ajax.googleapis.com/..."></script> 
... 
<script type="text/javascript" src="/client/..."></script> 
... 

ho cercato tra cui lo script tramite file * .html e tra <head> tag. Ma sembra che il contenuto dell'intestazione dei file * .html sia sempre aggiunto alla fine dell'intestazione HTML, indipendentemente da dove lo metto nella gerarchia dei file (ad esempio posizionando il file in una cartella lib o ordinandolo alfabeticamente prima dei file JS del client non aiuterà).

Qualche idea su come includere JS da un CDN prima degli script client senza dover creare un pacchetto intelligente?

+0

Forse esecuzione il codice * dopo * l'pageload potrebbe evitare che il codice per essere dipendente da un ordine specifico di librerie js caricati. – waeltken

risposta

9

Supponendo che non sia necessario caricare questi file prima dei pacchetti Meteor, creare un file JS che viene caricato prima degli altri. Meteor carica i file in ordine alfabetico, quindi deve essere il primo file caricato. A tal fine, nominandolo aaLoadCDN.js dovrebbe essere sufficiente. Caricare dinamicamente gli script CDN con l'aggiunta di un elemento script src al documento head:

var script = document.createElement('script'); 
script.setAttribute('type', 'text/javascript'); // optional 
script.setAttribute('src', 'url/to/the/cdn/script.js'); 
document.getElementsByTagName('head')[0].appendChild(script); 

Ecco alcuni pacchetti Meteor reali loading script da CDN:

+0

Ottimo, funzionerà. :-) Grazie! – jerico

+2

Un problema con la soluzione nel post del blog collegato in questa risposta è che non consente di dire quando lo script è stato eseguito. Di solito, i progetti Meteor avranno a disposizione jQuery: $ .getScript esegue il lavoro in modo più elegante. – jerico

+4

Cosa succede se ho bisogno del file javascript esterno per caricare prima i pacchetti di meteore? – user1966211

0

C'è anche un pacchetto abbandonato chiamato meteor-external-fileloader che fornisce un esempio utilizzando Stripe.js. Non è stato mantenuto da settembre 2013, quindi fai attenzione.

2

È possibile aggiungere lo script dopo il rendering del modello. Quindi il tuo script verrà caricato solo dopo che ogni altra riga è stata caricata. Ad esempio, se aggiungi direttamente un plug-in jQuery al file html del modello, otterrai l'errore "jquery not found". Ma questo approccio impedisce che:

Template.Main.onRendered(function() { 

     $('head').append('<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-formhelpers/2.3.0/js/bootstrap-formhelpers.js"></script>'); 

}); 
Problemi correlati