Ich habe ein Szenario, in dem ich Daten von der Clientseite in CSV exportieren möchte. Ich habe ein Textfeld/einen Bereich oder was auch immer wo der Benutzer Daten eingeben kann und dann wird idealerweise mit einem Klick eine lokale CSV-Datei mit diesen Daten aktualisiert.Knoten JS FS-Modul im Browser
Dies ist leicht mit NodeJS mit Serverinteraktion und seinen Kernmodulen (speziell fs
Modul) erreichbar, aber anscheinend nicht so sehr von einem Browser.
Ich fand heraus, dass bestimmte Knoten-Module (zum Beispiel underscore
), unterstützen RequireJS Methode, ein bestimmtes Modul im Browser arbeiten. Also für Strich habe ich dies:
methods.js
define(['underscore'],function(_) {
var Methods = {
doSomething: function() {
var x = _.size({one: 1, two: 2, three: 3, xuz: 3});
alert(x);
}
};
return Methods;
});
common.js
requirejs.config({
baseURL: 'node_modules',
paths: {
underscore: 'underscore/underscore',
}
});
require(['methods'], function(y){
y.doSomething();
});
index.html
<script data-main="common" src="require.js"></script>
<script>
require(['common'], function() {
require(['methods.js']);
});
</script>
Das obige funktioniert gut und wird eine Warnung anzeigen: 4.
Aber wenn ich das gleiche mit dem fs
Modul versuche, wird es nicht funktionieren. Es wird diesen Fehler zeigen:
Module name "util" has not been loaded yet for context: _. Use require([])
Soweit ich verstehen kann, ist dies, weil fs
mehrere andere Module erfordert, einer von ihnen util
zu sein.
Also fuhr ich fort, alle diese Module zur RequireJS Config hinzuzufügen. Aber immer noch kein Glück, so dass ich speziell util
Modul selbst getestet, da dies nicht andere Module zu funktionieren scheint.
Und jetzt bin ich auf diesem Fehler fest: Uncaught ReferenceError: exports is not defined
ich versuchte, diese util
Modul Modularisierung durch das gesamte Modul Quellcode in dieser Verkapselung:
define([], function() {})
Aber es hat nicht funktioniert entweder .. Ich habe auch versucht, underscore
Modell zu kopieren, aber immer noch kein Glück.
Also habe ich mich gefragt, ob jemand util
& fs
Module (oder anderen Kern NodeJS Module) innerhalb des Browsers mit Bibliotheken wie RequireJS oder Browserify verwenden, verwaltet.
Beide Antworten, die ich erhielt, sind korrekt, wie ich auch nach mehr Forschung erfahren habe. Was ich jedoch für mein spezifisches Szenario getan habe (um alles von Datenbanken fernzuhalten und möglicherweise für den Benutzer clientseitig), sind zwei NodeJS-Server, die laufen (einer zum Lesen und anderer zum Schreiben). Diese warten auf CSV-Dateiänderungen und schreiben/lesen von/in das Dateisystem über das NodeJS fs-Modul auf diese Weise. Dieser Ansatz ist nicht vollständig Client-Seite, aber Sie vermeiden DB-Interaktion und Wartung und alles ist in JS von Client zu Server-Seite. – zalow517
Nice one! Ich habe auch über http://browserify.org/ seit der Beantwortung erfahren. – FloatingRock