Clientseitige JavaScript-Bibliothek für eine offlinefähige Single-Page-Anwendung?

Ich suche nach einer JavaScript- oder CoffeeScript- Bibliothek oder einem Framework, das:

  • Generiert die Seiten für eine Single-Page-Anwendung (SPA) – das heißt, es handelt sich nicht nur um eine Reihe kunstvoller Markups für servergeneriertes HTML.
  • Bewältigt Zeiten, in denen die Anwendung den Server nicht sehen kann, indem geänderte Daten im lokalen Speicher gehalten, die Serveranforderungen zwischengespeichert und gesendet werden, wenn der Server verfügbar wird.
  • Hat ein Programmierparadigma, das mit mindestens einem der folgenden konsistent ist: jQuery, CoffeeScript, JavaScript (oder sogar PHP, Ruby, Python, C#, aber das ist wahrscheinlich viel weniger wahrscheinlich. Ich denke, Google Web Toolkit kann das tun, wonach ich suche, aber ich bin kein Java-Programmierer und habe nicht die Absicht, einer zu werden).
  • Funktioniert gut auf Windows Phone 8 und den aktuellen Firefox- und Chrome-Browsern.

Beachten Sie, dass dies nur eine Frage zum Frontend ist: der Clientseite im Browser. Das Back-End auf dem Server ist außerhalb des Gültigkeitsbereichs.

Wissen Sie, wie JavaScript ein DOM- Objekt erstellen kann? Und dass eine Webseite nur ein Bündel von DOM-Objekten ist. Und wie auf jeder gegebenen Webseite, die der Benutzer sieht, einige der DOM-Objekte durch JavaScript auf dem Client und einige auf dem Server erstellt und dem Client bereitgestellt werden könnten. Viele SPAs haben fast alle DOM-Objekte in JavaScript auf dem Client erstellt. Darum geht es mir.

Ich könnte es in Vanilla-JavaScript tun: Aber das gilt per Definition für alles, was ein JavaScript-Framework oder eine JavaScript-Bibliothek tut. Ich suche eine Bibliothek, die die Dinge einfacher macht.


Kontext

Ich war früher Entwickler der kostenlosen , freien Open-Source -Anwendung gtd -php . Es ist jetzt auf GitHub , vorerst als Abandonware. Ich benutze die Anwendung immer noch täglich. Die Benutzererfahrung ist nicht so komfortabel, aber die Funktionalität ist genau das, was ich brauche, um meine Aufgaben im „Getting Things Done“-Stil zu verwalten. Ich hatte im Hinterkopf, dass ich, wenn ich wieder etwas darin entwickeln würde, das Frontend radikal überarbeiten und alles im Client-Browser generieren und Daten mit dem Server über JSON austauschen möchte . Daher diese Frage.

Ich nehme nicht an, dass etwas wie PhantomJS für Sie funktionieren würde? Ich bin mir nicht 100% sicher, ob dies Ihren Anforderungen entspricht, daher werde ich noch keine Antwort posten.
@EnergyNumbers - Suchen Sie wirklich nach einem Static Site Generator? Wie Jekyll ? Ich habe nur Schwierigkeiten zu verstehen, was Sie wirklich wollen. Wie wollen Sie Seiten "generieren"? Sie müssen ihm etwas geben, damit es funktioniert, was wahrscheinlich ein kunstvolles Markup sein wird.
@EnergyNumbers, also würde das wirklich jedes SPA-Framework tun ... Sie müssen es nur codieren, um das zu tun. Es gibt keine andere Möglichkeit, das JavaScript zu generieren, das DOM-Objekte erstellt, als es selbst zu programmieren. Sie können Angular verwenden, um DOM-Objekte aus einem seiner Controller oder einem anderen Framework wie Ember, Backbone oder Knockout zu erstellen. Andererseits könnten Sie, wie es sich anhört, wahrscheinlich alles in Plain Old Vanilla JS erledigen.

Antworten (1)

AngularJS ist ein beliebtes Framework, das in letzter Zeit sehr an Popularität gewonnen hat. Es ist ein MVC-Framework, das wirklich helfen kann, ein Projekt zu organisieren. Mit den Videos auf Egghead.io können Sie viel darüber lernen

So erfüllt es Ihre Anforderungen:

  • Generieren Sie Seiten für eine SPA

    • Mit dem richtigen Markup kann es viele Inhalte für Sie generieren. Wenn Sie beispielsweise eine Liste von Elementen basierend auf dem Inhalt eines JavaScript-Objekts erstellen möchten. Sie könnten a verwenden <div ng-repeat="listItem in list"></div>und es würde ein Element für jedes Element in Ihrer Liste erstellen. Wenn sich das unterstützende JavaScript-Objekt (das Modell) ändert, wird das DOM automatisch für Sie aktualisiert.
  • Bewältigt Zeiten, in denen der Server nicht verbunden ist

    • Es gibt viele Möglichkeiten, dies zu tun, aber Angular stellt ein $httpObjekt bereit, das zur Kommunikation mit Servern verwendet werden kann. Das $http- Objekt hat Optionen zum Zwischenspeichern von Anfragen. Die Standardeinstellung ist ziemlich robust, aber wenn Sie nicht der Meinung sind, dass sie Ihren Anforderungen entspricht $cacheFactory, können Sie Ihre eigene anpassen. Es gibt auch andere Projekte wie Angular-Data , die viele Dinge für Sie erledigen, wenn Sie Ihre eigenen nicht anpassen möchten.
  • Verfügt über ein ähnliches Programmierparadigma wie jQuery, CoffeeScript, JavaScript usw.

    • Alles ist in JavaScript geschrieben (mit Ausnahme von HTML-Vorlagen) oder, wenn Sie es vorziehen, kann es mit CoffeeScript geschrieben werden. Eine leichtgewichtige Version von jQuery namens jqLite ist enthalten und hat genau die gleiche Programmiersyntax.
  • Funktioniert gut auf Windows Phone 8 und den aktuellen Firefox- und Chrome-Browsern.

    • Angular basiert auf dem modernen Web. Es ist für aktuelle Browser konzipiert und berücksichtigt auch zukünftige Browser.

Es gibt ein paar Dinge, die man über Angular wissen sollte. Angular hat eine blühende Community, die immer bereit ist zu helfen, also stellen Sie sicher, dass Sie Fragen stellen. Manchmal kann die Dokumentation etwas entmutigend sein; Das Team und die Community arbeiten jedoch hart daran, es zu verbessern. Das Projekt ist sehr aktiv mit neuen Releases etwa alle 1-2 Wochen, daher können sich manchmal Funktionen ändern, aber mein Rat ist, ein Release auszuwählen und dabei zu bleiben, bis Sie den Wert eines Wechsels sehen.