Javascript-Frontend-Bibliothek/Framework für Webformulare, kompatibel mit Bootstrap 3 und json-schema

Ich versuche, eine JavaScript-Front-End-Webformularbibliothek (im Browser) zu finden, die die folgenden Anforderungen erfüllt:

  • Leicht genug für den Einsatz in mehrseitigen Anwendungen (im Gegensatz zu einseitigen Anwendungen)
  • Kompatibel mit Bootstrap 3, responsives Design
  • Verwenden von JSON-Schema für die Beschreibung des Datenmodells, JSON oder Erweiterungen des JSON-Schemas für die Formularbeschreibung (wie Auswahl oder Parameter für das Widget)
  • Unterstützung für Arrays und Fokus auf CRUD-Operationen, Interaktion mit dem Backend (das Backend kann seine eigenen Validierungsregeln hinzufügen). Python ist im Backend, Sieb als Validierungsbibliothek. Deform ist das, was durch eine Front-End-Bibliothek ersetzt werden soll.
  • Die Idee ist, dass Formulare nur minimal angepasst werden müssen, sobald sie im JSON-Schema ausgedrückt werden. Das heißt, bei gegebenem Schema (oder JSON-Hyperschema), Form und Daten kann man mehr oder weniger sicher sein, dass das, was gerendert wird, aussieht und sich anfühlt.
  • i18n bereit
  • Es ist besser, Open Source zu sein, Bower wird verwendet, um Komponenten zusammenzustellen

Der Zweck der Anwendung besteht darin, "Ressourcen" zu verwalten (= CRUD), die miteinander verbunden sind und möglicherweise Metadaten enthalten. Die Ressourcen sind nicht in Stein gemeißelt (eigentlich können sie aus verknüpften/semantischen Daten stammen, und das Hinzufügen einer neuen Form sollte keine vollständige objektorientierte DSL im Backend und eine weitere im Frontend erfordern), Datentypen sind üblich, einschließlich Sequenzen und Zuordnungen . Das heißt, die Anwendung ist größtenteils datengesteuert, mit Ausnahmen nur dort, wo ein deklarativer Stil nicht machbar ist.

Bisherige Kandidaten sind:

  • AngularJs - scheint die Rechnung zu erfüllen, ist aber für diese spezielle Anwendung zu groß. Angular-Schema-Form ist wahrscheinlich das, was funktionale Anforderungen erfüllt
  • Ember Js - interessant, aber nicht sicher, wie ausgereift Ember-Daten und die Unterstützung für die Anwendungsfälle sind
  • Reagieren - schnell, aber nicht sicher, wie viel Programmierung erforderlich ist, um die generische Formularfunktionalität zu erhalten. Hinzufügen Auf?
  • KnockoutJs - scheint auch viel Programmierung zu erfordern, aber vielleicht gibt es ein Add-On für die Aufgabe
  • jsonform by description erfüllt die Anforderungen, ist sich aber nicht sicher, wie gut es wirklich funktioniert
  • json-editor ist eine weitere Bibliothek für Formulare, die erweitertes json-schema verwenden und scheint ebenfalls geeignet zu sein
  • AlpacaJs hat viele Funktionen, kann tun, was erforderlich ist, scheint aber zu groß zu sein mit vielen Abhängigkeiten und auch zu strengen Anforderungen an Versionen. (vielleicht ist das eine falsche Einschätzung)

Es gibt sicher noch andere Möglichkeiten.

Was kann man von oben oder sonst empfehlen?

Vielen Dank, dass Sie Ihre Forschung geteilt haben, Alpaka ist das, wonach ich gesucht habe, und es wird immer noch gepflegt.

Antworten (1)

Für ein generisches Formular in React müssen Sie genug über JavaScript-Event-Handler und grundlegendes HTML wissen. Werfen Sie einen Blick auf diesen Leitfaden und wenn er zu entmutigend ist, dann wäre es wahrscheinlich nicht der richtige Weg für Sie:

https://reactjs.org/docs/forms.html

Wenn Sie nach der Überprüfung des obigen Codes feststellen, dass dies keine entmutigende Aufgabe für Sie ist, werden Sie froh sein zu wissen, dass React mit Bootstrap funktionieren würde, und Sie können der Anleitung hier folgen:

https://facebook.github.io/create-react-app/docs/adding-bootstrap

Danke schön. Reagieren ist jetzt natürlich ein guter Vorschlag. Aber die Frage betrifft die Bereitstellung des JSON-Schemas (plus vielleicht einige Hinweise - wie im Fall von Alpaka) und das Rendern des Formulars. Ich möchte keine konkrete Form rendern (es ist normalerweise in jedem Framework trivial), ich möchte ein in Form gegebenes (möglicherweise dynamisch generiertes) Schema rendern.