Qualcuno ha avuto molto successo con RequireJS ed Ember.js? Visto che a Ember piace avere la sua struttura assegnata a un oggetto globale, sto scoprendo che può davvero fare a pugni con Requirejs. Qualcosa come LAB.js funzionerà meglio con Ember?Ember.js e RequireJS
risposta
EDIT (2012-01-30): ho inviato un esempio più completo in un repo su bitbucket.
Ho usato con successo RequireJS per caricare Ember.js e l'addon datetime (github). Lo spazio dei nomi Ember rimane globale, ma tutti i dati della mia applicazione, inclusa la mia istanza di Ember.Application, sono conservati all'interno dei moduli attraverso RequireJS. Sto anche caricando i modelli manubri usando il 'testo!' collegare.
Non ho ancora avuto alcun problema, ma questa non è un'applicazione completa, più una dimostrazione del concetto. Ecco come l'ho fatto funzionare. Posso caricare la mia applicazione direttamente con Safari senza bisogno di un server. Avresti comunque bisogno di un server per caricarlo con Chrome, che non consente a JavaScript di caricare file dal filesystem.
1) Poiché Ember.js utilizza BPM/Spade, non è possibile utilizzare un clone del repository. Invece sto avvolgendo la versione compilata all'interno di un modulo:
lib/ember.js:
define(['jquery',
'plugins/order!lib/ember-0.9.3.js',
'plugins/order!lib/ember-datetime.js'],
function() {
return Ember;
});
Si noti che questo di per sé non nasconde Ember dal campo di applicazione globale. Ma sto preparando le cose in modo che se in futuro potrò nasconderlo, ogni altro modulo che dipende da questo modulo funzionerà ancora così com'è.
2) I moduli possono fare riferimento a Ember in questo modo:
app/Core.js:
define(['lib/ember'], function(Em) {
MyApp = Em.Application.create({
VERSION: "0.0.1"
});
return MyApp;
});
Qui, "Em" avrebbe potuto essere chiamato in qualche altro; non si riferisce direttamente alla variabile globale, ma proviene dal modulo definito in lib/ember.js.
3) siano accessibili da Ember, manubri devono essere registrati:
app/templates/my-template.handlebars:
MyApp v{{MyApp.VERSION}}.
app/views/my- view.js:
define(['lib/ember',
'plugins/text!app/templates/my-template.handlebars'],
function(Em, myTemplateSource) {
Em.TEMPLATES["my-template"] = Em.Handlebars.compile(myTemplateSource);
var myView = Em.View.create({
templateName: "my-template";
});
return myView;
});
4) Sto usando require-jquery.js (jQuery e RequireJS raggruppati insieme).
Quando segui il tuo approccio ottengo questo errore: Errore: Nome modulo 'ember -runtime 'non è stato ancora caricato per il contesto: _ Hai qualche idea su come risolverlo? sono fuori di idee :) –
Forse hai un servizio pubblico di repo in cui posso guardare il tuo campione? questo sarebbe utile! –
@ claude-precourt Sembra che MyApp sia dichiarata come variabile globale poiché non si utilizza la parola chiave var. Sei sicuro che funzioni anche senza utilizzare il contesto globale? –
C'è un modo migliore per includere un file manubrio che può avere più blocchi modello. Quale può essere compilato e disponibile in un solo include.
per esempio: avete il seguente file modello Manubrio:
../templates/sample.handlebars
<div><!-- just a filler html tag. Wont show up in your page -->
<script type="text/x-handlebars" data-template-name="template1">
Some Html or Template Content ...
</script>
<script type="text/x-handlebars" data-template-name="template2">
Some Html or Template Content ...
</script>
<script type="text/x-handlebars" data-template-name="template3">
Some Html or Template Content ...
</script>
</div>
../views/sampleView.js
define([
'jquery',
'lib/ember',
'plugins/text!../templates/sample.handlebars'],
function($, Em, myTemplateSource) {
// Bootstrap method accepts a context element under which all handlebars
// template blocks are defined. The filler <div> in this case.
// Compiles and assigns to the EM.TEMPLATES hash correctly.
Em.Handlebars.bootstrap($(myTemplateSource));
var myView = Em.View.create({
templateName: "template1";
});
return myView;
});
Molto elegante. L'uso di requireJS for Ember è una "migliore pratica" o più di un modo per organizzare progetti enormi? Sto davvero cercando un modo per strutturare il mio progetto, ma ho la brutta sensazione di avere un proxy che precarica tutto tutto il tempo. D'altra parte, è solo più chiaro in questo modo. – nembleton
I Ho appena caricato su GitHub un kit di avviamento per EmberJS + RequireJS, puoi verificarlo https://github.com/fernandogmar/Emberjs-RequireJS
Qualsiasi buon suggerimento sarà molto apprezzato. Divertiti!
Mimosa ha alcuni progetti di esempio con Ember e Require.js. Ecco uno al checkout: https://github.com/dbashford/mimosa-ember-emblem-templates. Le istruzioni per farlo funzionare sono nel README.
Ember CLI supporta la sintassi del modulo ES6 che traspone su AMD. Sembra che la comunità si stia avvicinando alla CLI di Ember come il modo preferito di usare Ember.
- 1. ember.js e il server
- 2. Ember.js e Google Analytics
- 3. Ember.js e arrangementContent
- 4. Ember.js e API REST
- 5. phantomjs e requirejs
- 6. AngularJS, requireJS e ngRoute
- 7. Applicazione Web con pacchetti backbone.js e requirejs, requirejs optimizer
- 8. Router, prese e animazione Ember.js
- 9. Integrazione Requirejs, d3 e nvd3
- 10. Backbone e RequireJS caricamento effettivo
- 11. Backbone/RequireJS e più modelli
- 12. Backbone Marionette e RequireJS Modules
- 13. RequireJS e JS Module Pattern
- 14. Utilizzo di Polymer e requirejs
- 15. ember.js widgets
- 16. Elenco ordinabile utilizzando Ember.js e jQuery.ui
- 17. Ember.js: HtmlBars e il comando Handlebars.compile
- 18. Differenza tra riaprire() e reopenClass() in Ember.js
- 19. Caricamento Backbone e Underscore utilizzando RequireJS
- 20. Concatenazione e modifica di RequireJS con Grunt
- 21. RequireJS Optimizer e VS 2010 Itegration
- 22. Esempio di Squire.js con Jasmine e RequireJS
- 23. Gestione binding personalizzata con Knockout e RequireJS
- 24. Ember.JS && Coffeescript
- 25. Caricamento jQuery, Underscore e backbone utilizzando RequireJS 2.0.1 e shim
- 26. Configurazione dei moduli con RequireJS quando config dipende da RequireJS
- 27. Ember.js: controllerFor x bisogno
- 28. Assistente personalizzato Ember.js + Handlebags
- 29. Ember.js componenti dinamici
- 30. Supporto del browser Ember.js?
Ho anche trovato requirejs difficile da usare con altre biblioteche e viceversa. Questo è il motivo per cui ho creato una libreria che è molto più facile da usare ed è testata con angolari. C'è un'applicazione demo in basso: gngeorgiev.github.io/Modulerr.js Puoi anche combinare tutti gli script in uno senza la dipendenza da Modulerr.js –