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
javascript
node.js
model-view-controller
meteor
sails.js
pedropeixoto
quelle
quelle
Antworten:
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 :
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
quelle
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.
quelle
npm
Paketen mit Meteor: meteorhacks.com/complete-npm-integration-for-meteor.htmlIch 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.
quelle
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) },
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.
quelle