Wenn Sie sicher sind, dass keine anderen Datenbanken gespeichert werden sollen, können Sie auch alle anderen Daten löschen. Sie können dieser Antwort folgen Programmdaten programmgesteuert löschen
Ich habe eine Web-App, die im Knoten läuft. Alle (Client-) Javascript / CSS-Dateien sind im Moment nicht minimiert, um das Debuggen zu erleichtern.
Wenn ich in Produktion gehe, möchte ich diese Skripte verkleinern. Es wäre schön, etwas wie:
zu haben node app.js -production
Wie kann ich die verkleinerte Version meiner Skripte bereitstellen, ohne die Skript-Tags in meinen HTML-Dateien zu ändern? Es sollte etwas wie Folgendes sein: Wenn ich in Produktion bin, benutze diese 2 verkleinerten (kombinierten) Skripte, ansonsten benutze alle meine unminifizierten Skripte.
Ist das möglich? Vielleicht denke ich zu kompliziert?
Vielleicht interessiert dich Piler . Es ist ein Node.js-Modul, das alle JavaScript- (und CSS-) Dateien liefert, die Sie wie gewohnt im Debug-Modus angeben, aber im Produktionsmodus verkettet und minimiert werden.
Als besonderes Feature können Sie CSS-Updates über Socket.io in Echtzeit in Ihrem Browser erzwingen (in PLER "CSS Live Update" genannt), was ganz toll ist: -).
Der Trick besteht darin, dass Sie innerhalb Ihrer Vorlage nur Platzhalter für die Elemente script
und link
haben, und Piler rendert diese Elemente zur Laufzeit - als einzelne Elemente im Debug-Modus und als dynamisch generiertes einzelnes Element im Produktionsmodus .
Auf diese Weise können Sie verkettete und verkleinerte Versionen Ihrer Assets manuell oder mithilfe eines Build-Tools erstellen. Es ist nur zur Laufzeit vorhanden, aber Sie haben beim Entwickeln und Debuggen immer die getrennten Vollversionen.
Sie könnten zwei separate Speicherorte für Ihre statischen Dateien verwenden
Hier ist ein Expresscode:
%Vor%und Startknoten mit
%Vor%Wenn Sie außerdem nicht alle Ihre Dateien duplizieren möchten, können Sie die Tatsache ausnutzen, dass der Express-Static-Router bei der ersten Datei stoppt, und stattdessen Folgendes tun:
%Vor%Wenn Sie den gleichen Namen für minimized oder nicht verwenden, wird dies jedoch zu Problemen mit dem Browser-Caching führen.
Ich möchte meine endgültige Lösung mit euch teilen.
Ich benutze JSHTML für Express ( Linkbeschreibung hier eingeben )
In meiner Hauptdatei verwende ich eine spezielle Route:
%Vor%Wie Sie sehen können, bekomme ich meine Assets von config.getResourceBundle. Dies ist eine einfache Funktion:
%Vor%Und schließlich ist hier ein Beispiel für eine Asset-Dateisammlung:
%Vor%Ich habe 2 Ordner. Entwickler / Hersteller Grunt kopiert die minimierten Dateien in prod / .. und löscht die Dateien von dev / ... Und wenn die Variable NODE_ENV auf production gesetzt ist, werde ich die verkleinerten Versionen meiner Skripte / css versenden. Ich denke, das ist die eleganteste Lösung im Moment.
Ein weiteres Node.js-Modul, das relevant sein könnte, ist connect-cachify .
Es scheint nicht die tatsächliche Minimierung für Sie zu tun, aber es ermöglicht Ihnen, die verkleinerte Version in der Produktion oder alle ursprünglichen Skripte in der Entwicklung zu bedienen, ohne die Vorlagen zu ändern (dank cachify_js
und cachify_css
).
Scheint, es ist nicht so funktionsreich wie Piler, aber wahrscheinlich ein bisschen einfacher und sollte alle in der Frage erwähnten Anforderungen erfüllen.
Tags und Links javascript css node.js minify production
Wenn Sie sicher sind, dass keine anderen Datenbanken gespeichert werden sollen, können Sie auch alle anderen Daten löschen. Sie können dieser Antwort folgen Programmdaten programmgesteuert löschen
Ich möchte die gesamte Datenbank löschen, wenn ein Benutzer die Schaltfläche zum Abmelden drückt und neue Daten lädt, wenn sich ein anderer Benutzer anmeldet. Ich habe viele Lösungen wie
ausprobiert %Vor%Auch
%Vor%Aber keiner der Code funktioniert. Vielen Dank im Voraus.
Wenn Sie %code% aufrufen , müssen Sie sicherstellen, dass alle Realm-Instanzen geschlossen sind, andernfalls wird eine Ausnahme ausgelöst, ohne etwas zu löschen. Durch Aufruf dieser Methode werden alle Realm-Dateien gelöscht, was bedeutet, dass alle Objekte & amp; Schemata sind weg. Das Abfangen aller Ausnahmen ist eine schlechte Vorgehensweise für allgemeine Fälle.
Sie können auch %code% aufrufen in einem Transaktionsblock. Dies erfordert nicht, dass alle Realm-Instanzen geschlossen sind. Es wird nur alle Objekte im Realm löschen, ohne die Schemas zu löschen. Und wieder, fangen Sie nicht alle Ausnahmen ein.