Fable: System.IO.Path unterstützen

Erstellt am 30. Jan. 2021  ·  3Kommentare  ·  Quelle: fable-compiler/Fable

Beschreibung

Es könnte nett sein, eine Ersatzimplementierung von System.IO.Path in Fable zu haben. Ich habe bei Fable.System.IO eine ziemlich robuste geschrieben. Vielleicht wäre eine Fusion davon in Core Fable ein Nettogut?

Ich dachte, ich hätte das schon irgendwo gefragt, aber ich kann es nicht mehr finden. Der Grund, warum es bereits eine eigene Bibliothek ist, liegt darin, dass ich dachte, @alfonsogarciacaro würde den Standpunkt einnehmen, dass es im Allgemeinen besser ist, BCL-API-Implementierungen aus Fable selbst herauszuhalten und in separaten Bibliotheken zu halten, um den Aufwand für den Betreuer von Fable selbst zu reduzieren - an diesem Punkt die Frage wird, ob dies diese Kosten wert ist oder nicht. Könnte sein, könnte nicht sein, aber ich dachte, ich bringe es zur Sprache!

Das einzige, was dies schwierig machen würde, ist die Tatsache, dass Fable.System.IO einen Plattformdetektor verwendet (derzeit Plattformerkennung von npm; aber im Prozess der Umstellung auf Shmews F#-only Fable.Extras ). Wenn Fable diesen Code also richtig absorbieren würde, müsste es entweder in ähnlicher Weise eine Art Abhängigkeit (oder Inline) von einem Plattformdetektor annehmen oder einfach das Verhalten der Umgebung auswählen, das emuliert werden soll (Windows- vs. Unix-Pfade).

FWIW, ich habe hier eine vollständige Unit-Test-Abdeckung.

Hilfreichster Kommentar

Hallo @jwosty! Dies ist eine großartige Arbeit, die Sie mit Fable.System.IO geleistet haben 👏👏👏 Ich verstehe Ihren Wunsch, dies in Fable integriert zu sehen, aber ich bin immer noch sehr vorsichtig bei dem Versuch, mehr .NET-APIs zu erstellen. Pfad ist nützlich, aber ich gehe davon aus, dass die Leute beim Hinzufügen von Unterstützung für System.IO versuchen werden, auch File zu verwenden. Javascript kann in mehreren Umgebungen ausgeführt werden: Browser, nodejs, mobil ... und der Versuch, Datei-E/A in all diesen zu unterstützen, ist zu groß (für mich). Wir haben bereits Probleme mit der binären Serialisierung, da btoa in Node :/ nicht unterstützt wird.

Außerdem hat Fable-Library keine Abhängigkeiten, also müssten wir Platform-Detect in unsere Codebasis aufnehmen. Wir haben so etwas bereits für Dezimalzahlen und Longs gemacht, aber außerdem verursacht es Probleme mit Bündelgrößen (wie in https://github.com/thoth-org/Thoth.Json/pull/96, wofür ich lange gebraucht habe erkennen) versuchen wir tatsächlich, diesen externen JS-Code zu entfernen und uns für eine vollständige F#-Fable-Bibliothek zu entscheiden.

Fable.System.IO ist fantastisch und meiner Meinung nach ist dies der richtige Weg für .NET-Entwickler, die vertraute APIs in einer JS-Umgebung verwenden möchten: eine Bibliothek, die ihrer gewohnten ähnelt, aber sofortige Hinweise gibt IDE, was unterstützt wird und welche Plattformunterschiede es gibt.

Alle 3 Kommentare

Hallo @jwosty! Dies ist eine großartige Arbeit, die Sie mit Fable.System.IO geleistet haben 👏👏👏 Ich verstehe Ihren Wunsch, dies in Fable integriert zu sehen, aber ich bin immer noch sehr vorsichtig bei dem Versuch, mehr .NET-APIs zu erstellen. Pfad ist nützlich, aber ich gehe davon aus, dass die Leute beim Hinzufügen von Unterstützung für System.IO versuchen werden, auch File zu verwenden. Javascript kann in mehreren Umgebungen ausgeführt werden: Browser, nodejs, mobil ... und der Versuch, Datei-E/A in all diesen zu unterstützen, ist zu groß (für mich). Wir haben bereits Probleme mit der binären Serialisierung, da btoa in Node :/ nicht unterstützt wird.

Außerdem hat Fable-Library keine Abhängigkeiten, also müssten wir Platform-Detect in unsere Codebasis aufnehmen. Wir haben so etwas bereits für Dezimalzahlen und Longs gemacht, aber außerdem verursacht es Probleme mit Bündelgrößen (wie in https://github.com/thoth-org/Thoth.Json/pull/96, wofür ich lange gebraucht habe erkennen) versuchen wir tatsächlich, diesen externen JS-Code zu entfernen und uns für eine vollständige F#-Fable-Bibliothek zu entscheiden.

Fable.System.IO ist fantastisch und meiner Meinung nach ist dies der richtige Weg für .NET-Entwickler, die vertraute APIs in einer JS-Umgebung verwenden möchten: eine Bibliothek, die ihrer gewohnten ähnelt, aber sofortige Hinweise gibt IDE, was unterstützt wird und welche Plattformunterschiede es gibt.

Abschließend haben wir Fable.System.IO als großartige Alternative zu dem Versuch, weitere (unvollkommene) BCL-Ersetzungen hinzuzufügen. Nochmals vielen Dank dafür @jwosty!

Sichere Sache; Diese Argumentation kann ich durchaus nachvollziehen!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen