2017-11-12 4 views
1

Ich bin auf der Suche nach einigen NodeJS Framework/Pakete Empfehlungen. Kleiner Hintergrund: Ich habe PHP-Code auf Anfänger-zu-Pro-Niveau geschrieben. Hauptsächlich mit Laravel und CodeIgniter. Ich habe PHP in 2 Jahren aufgrund von Jobänderungen und Fokussierung auf andere Sachen nicht berührt.NodeJS Api Framework Empfehlungen einschließlich Graphql und ACL

Im letzten halben Jahr entdecke ich NodeJS und ich liebe es, es ist schnell und die Fähigkeit, Projekte nicht nur für das Web, sondern auch für Desktop-Anwendungen und mobile Geräte alle in der gleichen Sprache zu erstellen ist so ein Plus.

Ich arbeite zur Zeit an einem Heimautomatisierungstool für mein neues Zuhause, aber ich habe ein wenig Probleme, weil ich kein richtig einfach zu bedienendes Framework (oder Kombinationen von Paketen) finden kann, die die folgenden Funktionen haben. (Dies ist nur für die Back-End ist, für frondend ich Winkel verwenden 2,4,5 (was auch immer Version Winkel 2 hat jetzt))

Dies ist meine aktuellen Kriterien sind:

Rahmen
  • Einfache API oder einfache Möglichkeit, Modelle zu implementieren.
  • Zugriffskontrolle (ACL)
  • Graphql

habe ich versucht, Loopback Rahmen und ich mochte es wirklich. Es prüft das API-Framework und ACL meiner Liste, und da Bonus funktioniert mit fast jeder Datenbank, die Sie abbilden können, aber Graphql nicht unterstützt. Ich habe versucht, einige zusätzliche Pakete hinzuzufügen (Loopback-Graphql-Server, Loopback-Graphql und Loopback-Graphql-Checkacl), aber leider konnte ich sie nicht richtig arbeiten, Ether die ACL hat nicht richtig funktioniert oder es hat nicht funktioniert alle. (Ich verbrachte mehrere Stunden Debugging loopback-graphql-Server, um herauszufinden, warum ich eine Zugriffsverweigerung Nachricht in graphql bekam, wenn es perfekt mit dem Rest api arbeitete)

Also ich bin auf der Suche nach einem Rahmen oder einer Kombination von Paketen, wo das funktioniert ziemlich out of the box. Alle Empfehlungen wären hilfreich.

Antwort

1

können Sie SailJS folgen, die wie PHP Development Architektur und man kann es leicht

Andere Hand verwalten können Sie Ihre eigenen Rahmen machen mit Express nur müssen Sie wissen, wie Sie Javascript Entwurfsmuster Arbeit

In meinem Vorschlag, können Sie SailJS verwenden Sail JS Web Site

0

ich erinnere mich DHH Schreiben über eine „single layer of cleverness“ entschieden haben. Er wies darauf hin, dass die Datenbank zwar in der Lage sei, Entscheidungen darüber zu treffen, welche Daten akzeptabel seien und welche nicht, was im Grunde eine Logik sei, die in die Anwendungsebene gehöre und nur an diesem Ort leben sollte.

Ich denke, GraphQL ist eine Gelegenheit, diese Grenzen wieder zu durchdenken.

Welchen zusätzlichen Wert bringt Ihr db-Schema, wenn es hinter einem leistungsfähigeren GraphQL-Schema sitzt (leistungsfähiger, weil es auf jedes dahinterliegende System angewendet werden kann)? Welchen Wert hat die modellbasierte Validierung, was mit benutzerdefinierten Typen möglich ist? Welchen Wert hat die Abstraktion eines "Modells", wenn Sie das Verhalten wie die Validierung entfernen?

Es klingt wie die meisten der Anwendung wird Angular am Frontend und das Backend, das Sie sich vorstellen, als Ort, um Daten aus zu bekommen. In dieser Situation erhöht das Hinzufügen eines Frameworks die Menge an Code in Ihrem System, erhöht die Lernanforderungen und bietet (IMO) keinen eindeutigen Mehrwert, der einmal hinter GraphQL platziert wurde.

Ihr Schema Felder und Resolvern im Wesentlichen ersetzen, was gewesen Controller würde (in einer Rails-wie MVC app), eine Kombination von Typen & benutzerdefinierte Typen Validierung umgehen, werden Auth durch einen Authorization Header (erstellt am Frontend vielleicht behandelt durch Auth0) und entweder Higher Order Component or maybe some directives. Es fehlen nur einige Funktionen, die die Daten abrufen.

Die meisten meiner Datenfunktionen holen wickeln und so etwas wie dieser Export (dies ist example code taken from Arango-js):

const cursor = await db.query(aql` 
    FOR u IN _users 
    FILTER u.authData.active == ${active} 
    RETURN u.user 
`); 

Es ist nur eine Funktion, sauber, einfach & lesbar. Keine Modelle und keine ORMs erforderlich.

Was ich hier bin ist, dass GraphQL gibt die meisten (vielleicht alle?) Der Struktur, die wir verwendet, um ein Framework zur Verfügung zu stellen. Im Wesentlichen ist GraphQL das Framework. Das, einige Resolver und eine Handvoll anderer Funktionen ist wahrscheinlich alles was Sie brauchen. Es gibt Situationen, in denen ein Rahmen hinter GraphQL sinnvoll ist, aber denken Sie darüber nach, ob Ihre eine davon ist.