Utilizzando RequireJS con AngularJS ha un senso, ma solo se si capisce come ciascuno di essi lavori relativi Dependency Injection, come anche se entrambi inietta dipendenze, iniettano cose molto diverse.
AngularJS dispone di un proprio sistema di dipendenze che consente di inserire moduli AngularJS in un modulo appena creato per riutilizzare le implementazioni. Diciamo che è stato creato un modulo di "prima" che implementa un filtro AngularJS "salutare":
angular
.module('first', [])
.filter('greet', function() {
return function(name) {
return 'Hello, ' + name + '!';
}
});
E ora diciamo che si desidera utilizzare il filtro "salutare" in un altro modulo chiamato "secondo" che implementa un "arrivederci "filtro. Si può fare che iniettando il modulo "prima" al modulo di "secondo":
angular
.module('second', ['first'])
.filter('goodbye', function() {
return function(name) {
return 'Good bye, ' + name + '!';
}
});
Il fatto è che per fare questo lavoro correttamente senza RequireJS, è necessario assicurarsi che il modulo "primi" AngularJS viene caricato sulla pagina prima di creare il "secondo" modulo AngularJS. Documentazione di quotazione:
A seconda del modulo, è necessario caricare il modulo richiesto prima che venga caricato il modulo richiesto.
In questo senso, qui è dove RequireJS può aiutare come RequireJS fornisce un modo pulito per iniettare script per la pagina di aiutare ad organizzare le dipendenze di script tra loro.
Tornando alle "prime" e "secondo" moduli AngularJS, ecco come si può farlo utilizzando RequireJS che separano i moduli su diversi file per sfruttare lo script dipendenze di carico:
// firstModule.js file
define(['angular'], function(angular) {
angular
.module('first', [])
.filter('greet', function() {
return function(name) {
return 'Hello, ' + name + '!';
}
});
});
// secondModule.js file
define(['angular', 'firstModule'], function(angular) {
angular
.module('second', ['first'])
.filter('goodbye', function() {
return function(name) {
return 'Good bye, ' + name + '!';
}
});
});
È possiamo vedere che dipendiamo dal file "firstModule" da iniettare prima che possa essere eseguito il contenuto del callback RequireJS che necessita del "primo" modulo AngularJS da caricare per creare il "secondo" modulo AngularJS.
Nota a margine: Iniezione "angolare" sul file "secondModule" come dipendenza "firstModule" ed è necessario al fine di utilizzare AngularJS all'interno della funzione di callback RequireJS e devono essere configurato sul RequireJS config per mappare "angolare" per il codice della biblioteca. È possibile che AngularJS sia caricato nella pagina anche in modo tradizionale (tag script), sebbene sconfigga i vantaggi di RequireJS.
Ulteriori dettagli sull'avere il supporto RequireJS dal core AngularJS dalla versione 2.0 sul post del blog.
Sulla base della mia post sul blog "Dare un senso di RequireJS con AngularJS", ecco la link.
immagino il commento su questa questione potrebbe essere utile http://stackoverflow.com/q/12529083/1236044 – jbl
@jbl Sembra questa domanda è un po 'datato 'chiesto 21 settembre '12 alle 10: 49'. L'esempio fornito dal team di Angular qui: https://github.com/angular/angular-seed/blob/master/app/index-async.html parla della mia confusione. –
ecco un ottimo video che mostra come usare requireJS con angularJS https://www.youtube.com/watch?v=4yulGISBF8w#t=142 – gskalinskii