Für den clientseitigen Code machen Sie das Richtige. babelify
es und versenden es an den Kunden.
Für den serverseitigen Code würde ich nur einen regulären Build mit babel-cli durchführen
Nach http://babeljs.io/docs/setup/#babel_register , babel-register
ist für den produktiven Einsatz nicht gemeint - Der erfordern Haken in erster Linie für einfache Fälle empfohlen.
für Babel 6+
Ab Babel 6 sind standardmäßig keine Transformationen enthalten. Beginnen wir also mit der Installation von babel-cli
und babel-preset-es2015
.
$ npm install --save-dev babel-cli babel-preset-es2015
Fügen Sie Ihrer .babelrc
Datei eine Transformation hinzu - dies ist das erste Modul, das wir oben heruntergeladen haben. Sehen Sie sich die vollständige Liste der Voreinstellungen an, um festzustellen , welche für Sie am besten geeignet sind.
{
"presets": ["es2015"]
}
Fügen Sie build
Ihrem Skript ein Skript hinzu package.json
. Unten finden Sie src
Ihre Eingabedateien und build
die transformierten Ausgabedateien
"scripts": {
"build": "babel src -d build"
}
Dann baue es!
$ npm run build
Führen Sie dann Ihren Code aus. Zu diesem Zeitpunkt möchten Sie die Dateien in Ihrem build
Verzeichnis ausführen
$ npm start
Verwenden Sie für Babel <= 5 einfach den erforderlichen Haken.
require("babel/register");
Alle nachfolgenden Dateien, die der Knoten mit den Erweiterungen .es6 , .es , .jsx und .js benötigt , werden von Babel transformiert. Die Polyfüllung wird ebenfalls automatisch benötigt.
Sie können Ihre Quelldateien in ES6 behalten und dennoch mit ausführen node server.js
Ihren Kommentaren zufolge scheinen Sie ein wenig Probleme zu haben. Achten Sie besonders auf den gelb hervorgehobenen Teil oben. Ihre erste Datei kann nur ES5 sein, das vom Knoten selbst ausgeführt wird. Alle nachfolgenden Anforderungen werden von Babel ...
So könnte ein typisches Setup aussehen
server.js
// only ES5 is allowed in this file
require("babel/register");
// other babel configuration, if necessary
// load your app
var app = require("./app.js");
app.js.
// this file will be loaded through babel
// you can now use ES6 here and in every other include
mach es an!
$ node server.js
require("babel/register");
ich meine server.js eingefügt habe und beim Ausführennode server.js
bekomme ich den Fehler:Unexpected reserved word: import ...
also schien es nicht zu funktionierenIch habe gerade einen Blog-Beitrag zu diesem Thema geschrieben
Die CLI-Dokumentation von Babeljs warnt vor Folgendem:
Dies ist ein Beispiel dafür, wie Sie die npm-Skripte so einrichten können, dass Ihre App mit node anstelle von babel-node ausgeführt wird.
Weitere Details finden Sie im Blogbeitrag
quelle
Es ist wichtig, die Vor- und Nachteile der Verwendung von Babel-Node in der Produktion abzuwägen.
babel-node
erhöht die Startkosten für Standardhardware zwischen einer halben und einer Sekunde. Wenn Ihre App jedoch ein Server mit langer Laufzeit ist, spielen diese Startkosten keine große Rolle.Andererseits,
src
/lib
unddist
Verzeichnisseimport
aus lokalen Dateien stammen, werden Sie aussrc/myutils
oder aus importierenlib/myutils
? Die Verwendungbabel-node
beseitigt dieses Problem.Ich benutze Babel nur für die Modulunterstützung. Jetzt hat V8 gerade die Unterstützung für Module am 10. Januar 2017 veröffentlicht. Hoffentlich wird die Unterstützung von Modulen in Node in ein paar Monaten unter einem Flag angezeigt, was meinen Grund für die Verwendung von Babel moot darstellt.
quelle
@ cuadramans Antwort ist genauer als @naomik.
Um Ihre Frage kurz zu beantworten: Nein,
babel-node
sollte nicht explizit von Ihnen aufgerufen werden.babel-node
ist eine private Bibliothek, die von konsumiert wirdbabel-cli
.Das offizielle Tutorial enthält alles, was Sie benötigen, um auf dem Knoten (nicht auf der Browserseite!) In Betrieb zu gehen: https://github.com/babel/example-node-server . LIES ES! Ich fand so viele irreführende Blog-Tutorials, in denen es um verschiedene Wege ging, und fand diesen Artikel am einfachsten zu befolgen.
Bonus: Entgegen der Meinung vieler Menschen kann die gesamte Transpiling-Magie lokal installiert werden (mithilfe von
npm install --save-dev babel-cli nodemon babel-preset-es2015 babel-preset-stage-2
). Sie müssen Babel oder eines seiner Hilfsmodule nicht global installieren! Ziemlich geschickt.quelle