Sails.js vs Meteor - Was sind die Vorteile von beiden? [geschlossen]


81

Ich habe viel über Nodejs und seine Frameworks gelesen und kürzlich mein erstes vollständiges Javascript-Frontend (mit Angularjs) fertiggestellt.

Ich habe beschlossen, dass mein nächstes Lieblingsprojekt ein Nodejs-Abenteuer sein wird, bei dem eines dieser beiden Frameworks verwendet wird:

Ich habe über beide gelesen, kann aber ihre Unterschiede immer noch nicht richtig erfassen und warum sollte ich mich dafür entscheiden, einen über den anderen zu verwenden. Setzen Sie also bitte Ihren besten Verkäuferhut auf, wählen Sie einen Rahmen aus und verkaufen Sie ihn mir.

Einige Funktionen, die ich für mein Haustierprojekt benötige, sind:

  • Live-Partituren
  • Reddit-ähnliche Threads, Echtzeit
  • Wikipedia-ähnliche Seitenausgabe
  • Benutzer / Rollen

1
Überprüfen Sie diesen Link: vschart.com/compare/meteor-web-framework/vs/sails-js . Es kann dir helfen !!
Tuchi35

Antworten:


136

Ich kann nicht für Meteor sprechen, aber ich kann helfen, ein wenig Hintergrundwissen über Segel zu liefern, weil ich es erstellt habe.

tldr; Segel sind kein Allheilmittel für alle Probleme des Webs - aber ich glaube, Node.js ist es. Das Ziel von Sails ist es, einen praktischen Rahmen für die Entwicklung vollständiger, skalierbarer, start- und unternehmensfreundlicher Anwendungen bereitzustellen, die auf node.js basieren. Ich habe Balderdash mit der Frage "Können wir Node.js für alles verwenden?" Gestartet . Segel ist die Antwort.


Aus unseren neuen Dokumenten :

Sails ist natürlich ein Webframework. Aber mach einen Schritt zurück. Was bedeutet das? Wenn wir uns auf das "Web" beziehen, meinen wir manchmal das "Front-End-Web". Wir denken an Konzepte wie Webstandards oder HTML 5 oder CSS 3; und Frameworks wie Backbone oder Angular oder jQuery. Sails ist nicht "diese Art" eines Webframeworks. Sails funktioniert hervorragend mit Angular und Backbone, aber Sie würden niemals Sails anstelle dieser Bibliotheken verwenden.

Andererseits meinen wir manchmal, wenn wir über "Web-Frameworks" sprechen, das "Back-End-Web". Dies ruft Konzepte wie REST, HTTP oder WebSockets hervor. und basiert auf Technologien wie Java, Ruby oder Node.js. Ein "Back-End-Web" -Framework hilft Ihnen dabei, APIs zu erstellen, mit Datenbanken zu interagieren, HTML-Dateien bereitzustellen und Hunderttausende von Benutzern gleichzeitig zu verwalten. Sails ist "diese Art" von Web-Framework.

Vor ein paar Jahren habe ich mich verpflichtet, Node.js für alles zu verwenden - es war Liebe auf den ersten Blick . Ich habe Sails auf Express und Socket.io gebaut weil sie die etabliertesten Node-Module für ihre jeweiligen Anwendungsfälle waren (und immer noch sind). Der Code zur Bearbeitung von Anfragen in Sails ist Express-kompatibel, mit dem zusätzlichen Vorteil der impliziten Unterstützung für Socket.io.

Sails ist so konzipiert, dass es mit jeder Strategie kompatibel ist, die Sie zum Erstellen Ihrer Front-End (s) in Angular, Backbone, iOS / ObjC, Android / Java oder einfach nur zum Anbieten einer Roh-API zur Verwendung durch einen anderen Webdienst oder Ihren haben Entwicklergemeinschaft. Wenn Sie am Ende Ihren Ansatz ändern (z. B. von Backbone zu Angular wechseln) oder ein neues Front-End vollständig erstellen (z. B. eine native Windows Phone-App erstellen), funktioniert Ihre Sails-App weiterhin. Wie Sie vielleicht bereits wissen, nennen einige Leute diesen Ansatz eine serviceorientierte Architektur oder SOA ( Joe McCann hat ein großartiges Deck zu diesem Thema.)

In diesem Sinne behält Sails andere bekannte Konventionen zum Erstellen von Webservern bei - eine Standard-MVC-Struktur, die Möglichkeit, saubere APIs zu erstellen, und Kernmodule, die offen, konfigurierbar, erweiterbar und sogar austauschbar sind. Dies bedeutet, dass Sails so niedrig wie nötig an die Bedürfnisse der Benutzer angepasst werden kann.

Im Jahr 2013 verzeichnete das Framework einen enormen Anstieg der Popularität und unser Beratungsgeschäft wuchs. Der Rest der Hauptbetreuer und ich haben unseren Fokus darauf erweitert, die Backend-Entwicklung so schnell und unkompliziert wie möglich zu gestalten. Verwandte Aspekte von Sails wie Hooks (Plugins), Tests und Dokumente haben im letzten Jahr dank der Bemühungen unseres Kernteams und der (ständig wachsenden) Sails-Community insgesamt einen langen Weg zurückgelegt. Es gibt viele Roadmap-Elemente, an denen wir noch arbeiten, aber ich glaube, Sails ist die beste Option für eine stabile, wartbare MVC-Entwicklung auf Node. Der Rest des Teams und ich sind der kontinuierlichen Wartung und Funktionsentwicklung verpflichtet. Da wir es für alle unsere Kundenprojekte verwenden, geht es nirgendwo hin.

Ich bin Hals über Kopf entschlossen, Sails zum besten Webframework zu machen, aber niemals auf Kosten von Node.js. Das Kernteam und ich widmen uns unermüdlich der Verbesserung des Node-Ökosystems. Das bedeutet, NPM zu nutzen, vorhandene Node-Technologien und Best Practices zu nutzen usw. Nicht nur, weil es sinnvoller ist, sondern weil wir Node.js Entwickler sind. Die Motivation für all unsere Bemühungen ist es, Node zugänglicher zu machen, nicht zu ersetzen. Wenn ich also in einem seltsamen Paralleluniversum die Faust-Wahl hätte, ob ich Sails in eine andere Sprache konvertieren oder Sails komplett fallen lassen möchte, aber trotzdem Node verwenden kann, würde ich mich für Letzteres entscheiden.


Zusätzliche Ressourcen:

FAQ | Segel 101 | Original Screencast | Beitragshandbuch | Paketüberfluss

Google Group | Roadmap | IRC: #sailsjs auf Freenode | Build-Status


2


@ AaronShafovaloff danke für die Köpfe hoch
mikermcneil

30

Ich habe einige Projekte mit Meteor erstellt und noch nicht mit Sails gearbeitet. Meine Meinung wird also sicherlich voreingenommen sein, hoffentlich ist es trotzdem hilfreich.

Aufbau des Frontends

Meteor bietet ein eigenes Front-End-Framework namens Blaze, das in der kommenden Version 0.8 enthalten sein wird. Meteor kümmert sich darum, Daten aus Ihren Sammlungen an Ihre Ansichten zu binden. Aus diesem Grund müssen Sie sich keine Sorgen machen, dass Ihre Ansichten aktualisiert werden sollen, sie tun es einfach.

Auf der anderen Seite bietet Sails nur ein Backend-Framework und Sie müssen Ihr eigenes Front-End-Framework mitbringen.

Im Gegensatz zu den meisten Node.js-Frameworks ist Meteor synchron

Meteor läuft in einer Schleife und wenn Sie Node.js-Pakete verwenden möchten, müssen Sie einige zusätzliche Arbeiten ausführen , um sicherzustellen, dass sie in Meteor ordnungsgemäß funktionieren.

Sails scheint ein unkompliziertes MVC Node.js-Framework zu sein, daher sollte es nicht allzu überraschend sein, wenn Sie es sich ansehen.

Sie sollten MongoDB mit Meteor verwenden

Ja, Sie können andere Datenbanken mit Meteor verwenden, aber sie haben nicht annähernd die gleiche Unterstützung wie MongoDB. Während es bei Sails so aussieht, als hätten sie ORMs für einige Datenbanken.

Performance

Für großtechnische Anwendungen funktioniert Meteor möglicherweise nicht gut . Es wird viel Arbeit geleistet, um dieses Problem anzugehen, und bis Ende 2014 können wir damit rechnen, dass es Skalierungslösungen für Meteor geben wird.

Stabilität

Meteor ist noch sehr frisch und hat 1.0 noch nicht erreicht. Sie sollten damit rechnen, dass in den nächsten Versionen einige Änderungen vorgenommen werden, die die Abwärtskompatibilität beeinträchtigen. Wenn Sie so schnell wie möglich damit beginnen, sollten Sie den Zweig 0.8-rc0 verwenden. Davon abgesehen sind einige der Funktionen in der Pipeline wirklich großartig und machen eine 1.0-Version sehr verlockend.

Abschließende Gedanken?

Ich mag Meteor wegen seiner Eigenheiten. Sie müssen die Meteor-Methode lernen, aber sobald Sie damit beginnen, haben Sie das Gefühl, die Kool-Hilfe getrunken zu haben. Aufgrund der Art und Weise, wie Daten an Ansichten gebunden sind, sind die Linien zwischen Server und Client nicht weit entfernt. Meteor stellt einen Paradigmenwechsel in der Anwendungsarchitektur dar. Wenn Sie es noch nicht ausprobiert haben, würde ich es empfehlen.

PS Überprüfen Sie die Roadmap , um ein Gefühl dafür zu bekommen, was auf Sie zukommt.


5
Ich würde vorschlagen, die Anweisung "Meteor ist synchron" zu ändern, da sie denjenigen, die mit den Fasern von nodejs nicht vertraut sind, den falschen Eindruck vermitteln kann. Meteor läuft auf Node.js, sodass Sie weiterhin die ereignisgesteuerten, nicht blockierenden Vorteile erhalten. Meteor integriert Knotenfasern transparent, sodass serverseitiger Code in ein lineares Ausführungsmodell geschrieben werden kann, anstatt die Dinge in herkömmliche Rückrufe aufzuteilen. Dies ist wahrscheinlich die beste Referenz in Bezug auf die Verwendung von npmPaketen mit Meteor: meteorhacks.com/complete-npm-integration-for-meteor.html
am

Danke Alanning, ich werde dein Feedback in diese Antwort einfließen lassen!
MSaforrian

8
Vielleicht ist eine wichtige Sache, dass Segel.js nur für das Backend ist, während Meteor ein ganzes Front-End-Javascript-Framework bietet, um einfach mit dem Backend zu arbeiten.
Michael

Danke, dass du das angesprochen hast, @Michael. Sails.js und Meteor konkurrieren nicht wirklich - Sails.js ist ein Backend-Framework für Node.js, das Sie anstelle von Django, Rails, Express usw. verwenden können, während Meteor eine neue Art des Denkens ist Erstellen Sie reaktive Apps von oben nach unten - was ich übrigens wirklich cool finde :)
Mikermcneil

Möchten Sie Ihren Kommentar aktualisieren, da seit Ihrer Überprüfung mehr als 4 Jahre vergangen sind? Ich hätte sicherlich gerne eine Meinung in Bezug auf den neuen Spielwechsel Meteor 1.7 ..
Shyam

19

Ich kann nur eine Meinung zu Segeln abgeben. Ich bin ein äußerst erfahrener Javascript-Entwickler und baue seit den 90er Jahren eingebettete Set-Top-Box-Anwendungen, die auf Javascript basieren.

Dinge, die wirklich gut funktionierten - Der Einstieg war großartig und ich fühlte mich von den veröffentlichten Materialien sehr unterstützt - Die Lernkurve war sehr kurz und es gibt eine gesunde Gemeinschaft hinter Segeln - Nach dem ersten Lernen ist es sehr einfach, schnell kreativ zu sein

Dinge, die verbessert werden könnten - Komplexe Datenstrukturen sind schwierig zu implementieren - Die Integration von Passport.j war schmerzhaft, da es keine sauberen Referenzmaterialien gibt

Empfehlungen - Ponzi Coder hat ein großartiges Tutorial und es hat mir wirklich geholfen, https://www.youtube.com/user/ponzicoder in Gang zu bringen - Wenn Sie komplexere Datenherausforderungen versuchen, ist es hilfreich, mehr über Express und Wasserlinie zu wissen

Insgesamt würde ich Segel empfehlen.


1
Hallo Simon, kannst du bitte mitteilen, wie du es geschafft hast, den Pass in die Segel zu integrieren? Ich stecke im selben Problem. Haben Sie irgendwo einen Blog geschrieben oder Referenzmaterial?
Mitermayer Reis

2
Hallo Mitermayer, sorry, aber mein Blog ist vor langer Zeit vernachlässigt worden. Die Sache, die Pass für mich zum Funktionieren brachte, war die Erkenntnis, dass es in Ordnung zu sein schien, wenn ich zwei Dinge tat. 1 die Standardfeldnamen überall (E-Mail und Passwort) 2 passport.use('local-login', new LocalStrategy({ usernameField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not) },
Übergeben Sie

1
Wow Danke. Ich habe seit Tagen Probleme mit der lokalen Strategie. Dies verdient seinen eigenen Stapelüberlauf nach
light24bulbs

1
Passport.js Integration benötigt in der Tat mehr Dokumentationsmaterial, konnte es nicht genug betonen. Speziell für den REST-API-Anwendungsfall, in dem kein Server-Rendering stattfindet (z. B. für eckige JS-Clients), werden Facebook- / Google-Login und lokale Authentifizierung kombiniert.
Alon Amir

1
Upvote Passport.js ist schwer zu integrieren und schlecht dokumentiert
Pimbrouwers

9

Ich benutze derzeit Meteor und habe Sails.js nicht benutzt.

Es war außerordentlich angenehm, mit Meteor zu arbeiten, und ich denke, es wäre eine ausgezeichnete Wahl für Echtzeit-Web-Apps. In Bezug auf Benutzer / Rollen können Sie das integrierte Kontenpaket überprüfen und Atmosphere nach von der Community bereitgestellten Rollen / Berechtigungspaketen durchsuchen .

Letztendlich würde ich empfehlen, ein kleines Projekt mit beiden Technologien auszuprobieren und zu sehen, welches Ihnen besser gefällt.


Wissen Sie, ob Sail.js auf der Clientseite eine Variation der Latenzkompensation aufweist, die der Latenzkompensation von Meteor auf Modellebene ähnelt?
Imslavko

Sie wissen nichts über Sail.js, aber Sie können es wahrscheinlich selbst über die sharejs.org-Bibliothek einbinden . Zumindest scheint das das Ziel der Bibliothek zu sein.
Alanning

1
@alanning - nein, sharejs führt keine Latenzkompensation durch. Sharejs führt betriebliche Transformationen durch. Die Latenzkompensation erfolgt, wenn Meteor ein Update für das lokale Minimongo vornimmt und davon ausgeht, dass das Remote-Update erfolgreich ist, sodass der Benutzer fortfahren kann.
Gomad

1
@gomad Sie haben Recht, dass sharejs keine sofort einsatzbereite Latenzkompensation bietet. Ich habe nicht gesagt, dass es so ist. Vielmehr sagte ich: "Sie können es wahrscheinlich selbst mit sharejs.org einbinden." LC basiert auf OT.
Alanning

Nur eine zusätzliche Anmerkung. Ich denke, Meteor ist sehr angenehm zu bedienen. Es gibt eine gewisse Lernkurve, aber ansonsten ähnelt das Framework sehr der Beschreibung von Schienen für Ruby. Mein einziger aktueller Kritikpunkt ist zu diesem Zeitpunkt, es hängt immer noch von Knoten 0.10.40 ab, ob Sie sich selbst hosten möchten. Da Meteor eine ziemlich große Basis hat, glaube ich, dass das Aufholspiel mit Knoten für Meteor etwas unfair ist.
Jimmy MG Lim
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.