Einfache Möglichkeit zur precompile-Emberjs LENKER Vorlagen mit nodejs?
Genieße ich emberjs viel und würde gerne den nächsten Schritt machen in ein paar von meiner kleinen, mobilen apps und precompile mein Ember/LENKER-Vorlagen als Teil meiner build-Prozess.
Ich würde es vorziehen, zu bleiben Weg von der Unordnung mit Ruby und würde die gerne verwenden node.js wie ich mich wohler, es zu benutzen.
Ich glaube, was ich verwenden möchten ist Ember.LENKER.precompile, aber leider bin ich nicht zum laden der kanonischen ember.js Datei in einem Knoten, der Umwelt. Beispiel für eine naive Versuch, aus der node repl:
> var e = require('./ember');
ReferenceError: window is not defined
at /Users/jeremyosborne/git/projects/ldls/client/lib/emberjs/src/ember.js:5:1
at Object.<anonymous> (/Users/jeremyosborne/git/projects/ldls/client/lib/emberjs/src/ember.js:1596:2)
--- stack trace, you get the idea ---
Ich glaube, ich habe bereits herausgefunden, wie Sie oben in meinem code, so dass Sie korrekt mit meine Ansichten, ich will einfach nur, um zu kompilieren Sie in einer Umgebung außerhalb des browser-DOM.
Statt immer den kanonischen ember.js um die Last im Knoten, gibt es einen bestimmten Satz von Dateien, die kann ich pflücken, aus der Glut-repo und kompilieren, meine Vorlagen?
BEARBEITEN
Ich habe eine kluge beheben, das funktioniert Super, wird aber ein F für Wartbarkeit. Ich packte alle Handlebars
code minus der Verweis auf die window
Objekt. Dann folgte ich mit der Ember.Handlebars.Compiler
code, ersetzen Ember.create
mit Object.create
, Export meinem Ember
Objekt, und viola Dinge funktionieren scheinbar groß in Knoten (wie in, es funktioniert und die Funktionen, die erzeugt werden Vorlagen). Aber ich betrachte dies nicht als Antwort auf meine eigene Frage aufgrund der oben genannten maintainafail, also noch offen für Antworten.
EDIT 2
Die oben entpuppt sich als total fail. Vielleicht gibt es etwas falsch in der Vorgehensweise, aber mit Ember.Handlebars.precompile
oder Ember.Handlebars.compile
funktioniert nicht. Die Vorlagen bekommen, aber wenn ich die vorkompilierte templates angebracht Glut.VORLAGEN in meinem code funktionieren Sie nicht. Ich habe nur zu sein scheinen in der Lage, Vorlagen zu arbeiten, wenn Sie explizit übergeben die geänderte Skript-tags, wie vorgeschlagen, auf die emberjs.com Website.
EDIT 3
Ich habe herausgefunden, was ich falsch machte. Meine Antwort ist unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich geschrieben habe, eine grunt-plugin namens grunt-ember-LENKER, die tut genau dies. Es ist ziemlich viel imitiert Garth ' s script, mit einem wichtigen Unterschied:
Es verwendet lib/headless-ember.js und lib/ember.js, die gehalten werden (zumindest für jetzt) von ember.js zu precompile-Standard-Vorlagen. Wenn Sie nicht möchten, verwenden Sie Grunzen, Sie können extrahieren Sie den entsprechenden code aus der precompile_handlebars Helfer in tasks/ember-handlebars.js.
Gefunden, der eine ausreichend gute Lösung zu meinem problem, die scheint einfach genug zu halten, dass ich denke, dass mein problem gelöst.
Hier, wie ich gelöst Sachen:
window.Handlebars = Handlebars;
und entfernen Sie es.Ember.create
und ändern zuObject.create
.var Ember = require('./my_ember_precompiler').Ember
.var templateString = Ember.Handlebars.precompile(str).toString()
.Handlebars.template()
und sicher verpackt-Funktion Hinzugefügt, um dieEmber.TEMPLATES
Objekt.Oben ist schmerzfrei, wenn es automatisiert in einem Skript.
Habe ich veröffentlicht eine version von ember-precompiler mit einer ähnlichen Schnittstelle zu den
handlebars
Befehlszeilen-Dienstprogramm. Können Sie es von NPM:und dann ausführen als:
Es tut im wesentlichen das, was Sie beschreiben (und, was das wesentliche-Versionen auch tun): mock aus die fehlenden Komponenten werden gebraucht, um Ember und LENKER, kompilieren Sie die templates und fügen Sie Sie zu
Ember.TEMPLATES
.Werfen Sie einen Blick auf das npm-Paket Ember-Läufer
Folgende Kernaussage enthält eine nodejs-build-Skript, das precompile-alle .LENKER-Dateien in einem bestimmten Ordner:
https://gist.github.com/1622236
Ich schrieb einen offiziellen precompiler npm-Modul für alle anderen, die vielleicht wollen, dies zu tun w/eine aktuelle version von ember.js
https://npmjs.org/package/ember-template-compiler
Es ist einfach zu installieren und zu verwenden (Beispiel unten)
npm install Glut-template-compiler
Blick auf den code für die offizielle ember-rails gem an https://github.com/emberjs/ember-rails
Es ist zwar nicht ein node.js Projekt, es zeigt Ihnen, wie Sie precompile die Vorlagen mit dem Rails 3.1+ asset pipeline, und es enthält alle notwendigen Javascript-code, müssen Sie es in Knoten, ohne zu hacken zusammen eine Lösung, die Sie müssten zu halten auf Ihrem eigenen.
Genauer anschauen vendor/assets/javascripts/ember-precompiler.js und lib/ember-rails/hjs_template.rb
Ich bin weit von einem Experten auf Knoten (offensichtlich Schienen ist mehr mein Ding).. aber ich denke, diese beiden Dateien sollten Sie in die richtige Richtung. Im Grunde, Sie gehen zu wollen, zu verketten ember-precompiler.js (das wirkt wie ein "shim" für fehlen von einem besseren Wort) mit ember.js und dann rufen Sie EmberRails.precompile-kompilieren Ihre templates.
window-Objekt sein kann, verspottet von jsdom
und jetzt können Sie alles von Ember einschließlich
Ember.Handlebars.compile