Unterschied zwischen MEAN.js und MEAN.io

335

Ich wollte den MEAN JavaScript Stack verwenden, habe jedoch festgestellt, dass es zwei verschiedene Stacks mit eigener Website und Installationsmethoden gibt: mean.js und mean.io. Also stellte ich mir die Frage: "Welches benutze ich?".

Um diese Frage zu beantworten, frage ich die Community, ob Sie erklären könnten, was die Unterschiede zwischen diesen beiden sind. Und wenn möglich Vor- und Nachteile? Weil sie mir sehr ähnlich sehen.

CMPSoares
quelle
5
Die Wahl zwischen MEAN.io und MEAN.js kann jetzt ein strittiger Punkt sein, da Meteor 1.0 veröffentlicht hat und sofort viel mehr bietet .
Dan Dascalescu

Antworten:

374

Sie sind im Wesentlichen gleich ... Beide verwenden Swig zum Templieren, beide verwenden Karma und Mokka für Tests, Passintegration, Nodemon usw.

Warum so ähnlich? Mean.js ist eine Abzweigung von Mean.io und beide Initiativen wurden von demselben Mann gestartet ... Mean.io steht jetzt unter dem Dach der Firma Linnovate und sieht so aus, als hätte der Mann (Amos Haviv) seine Zusammenarbeit mit dieser Firma beendet und startete Mean.js. Sie können mehr über die Gründe lesen Sie hier .

Nun ... die wichtigsten (oder kleinen) Unterschiede, die Sie jetzt sehen können, sind:


GERÜST- UND KESSELPLATTENERZEUGUNG

Mean.io verwendet ein benutzerdefiniertes CLI-Tool namens 'mean'.
Mean.js verwendet Yeoman-Generatoren


MODULARITÄT

Mean.io verwendet eine eigenständigere Modularität der Knotenpakete mit Client- und Serverdateien innerhalb der Module.
Mean.js verwendet Module nur im Front-End (für Winkel) und verbindet sie mit Express. Obwohl sie auch an vertikalen Modulen arbeiteten ...


SYSTEM BAUEN

Mean.io ist kürzlich zu gulp
übergegangen. Mean.js verwendet Grunzen


EINSATZ

Beide haben Docker-Dateien in ihren jeweiligen Repos, und Mean.io kann mit einem Klick in Google Compute Engine installiert werden , während Mean.js auch mit einem Klick in Digital Ocean bereitgestellt werden kann .


DOKUMENTATION

Mean.io hat ok Dokumente
Mean.js hat super Dokumente


GEMEINSCHAFT

Mean.io hat eine größere Community, da es sich um die ursprüngliche Boilerplate handelte.
Mean.js hat weniger Dynamik, aber ein stetiges Wachstum


Auf persönlicher Ebene mag ich mehr die Philosophie und Offenheit von MeanJS und mehr den Traktions- und Modul- / Paketansatz von MeanIO. Beide sind nett und Sie werden sie wahrscheinlich nicht mehr modifizieren, sodass Sie nichts falsch machen können, wenn Sie das eine oder das andere auswählen. Nehmen Sie sie einfach als Ausgangspunkt und als Lernübung.


ALTERNATIVE "BEDEUTET" -LÖSUNGEN

MEAN ist eine generische Methode (von Valeri Karpov geprägt ), um ein Boilerplate / Framework zu beschreiben, das "Mongo + Express + Angular + Node" als Basis des Stapels verwendet. Mit diesem Stack finden Sie Frameworks, die andere Bezeichnungen verwenden. Einige davon eignen sich hervorragend für RAD (Rapid Application Development) und das Erstellen von SPAs. Z.B:

Sie haben auch Hackathon Starter . Es hat kein A von MEAN (es ist 'MEN'), aber es rockt ..

Habe Spaß!

joseldn
quelle
5
Hey danke für die Antwort! Hackathon-Starter sieht toll aus! Es sieht mehr nach dem aus, wonach ich suche. Es ist auch meistens JS und hat die Authentifizierungen bereits implementiert und das war, was ich dachte, wäre der schwierigste Teil ... Alle dachten, ich habe immer noch das Gefühl, dass ich nicht alle meine Optionen kenne ...: - / Auch es kam später, Hat der Hackathon-Starter einen Gerüst- und Boilerplate-Generator? Trotzdem vielen Dank für Ihre großartige Antwort!
CMPSoares
7
Bitte. Ja, was ich auch an Hackathon-Starter mag, ist die vollständige Kontoverwaltung und der Workflow (vergessenes Passwort, Bestätigungs-E-Mail usw.) und die Integration in sendgrid, paypal usw. Dinge, die MEAN.js und MEAN.io beide fehlen. Es ist ein cooler Starter für bestimmte Projekte.
Joseldn
1
Es ist sicherlich ein guter Ausgangspunkt für Projekte, wenn Sie keinen Winkel benötigen. Sorgen Sie sich nicht um die anderen Teile der Plattform. Höchstwahrscheinlich finden Sie Plug & Play-Knotenpakete, die genau das tun. Dh : gist.github.com/facultymatt/6370903 für Rollen
joseldn
1
Eine gute Situation wäre, es mit SOAs zu verwenden, bei denen Sie eine REST-API verwenden. Wenn Sie einen engen Zeitplan haben, lassen Sie den Winkel fallen. Die Lernkurve ist ziemlich steil ... Es ist ein "nice to have" für das Frontend, aber keine kritische Komponente. Sie können es jederzeit parallel lernen und in Ihrem nächsten Projekt verwenden oder später an dieses anschließen.
Joseldn
2
Hallo Leute! Ich habe etwas gefunden, das vom Hackathon-Starter abgeleitet ist, aber auch sehr schön: Skeleton ! ;-)
CMPSoares
66

Erstens ist MEAN eine Abkürzung für M ongoDB, E xpress, A ngular und N ode.js.

Es identifiziert generisch die kombinierte Verwendung dieser Technologien in einem "Stapel". Es gibt nicht so etwas wie „ The MEAN Rahmen“.

Lior Kesos von Linnovate nutzte diese Verwirrung. Er kaufte die Domain MEAN.io und gab einen Code unter https://github.com/linnovate/mean ein

Zum Glück erhielten sie viel Werbung und es gibt immer mehr Artikel und Videos über MEAN. Wenn Sie Google "Mean Framework" verwenden, ist mean.io der erste in der Liste.

Leider scheint der Code unter https://github.com/linnovate/mean schlecht entwickelt zu sein .

Im Februar bin ich selbst in die Falle gegangen. Die Seite mean.io hatte ein eingängiges Design und das Github-Repo hatte mehr als 1000 Sterne. Die Idee, die Qualität in Frage zu stellen, ging mir nicht einmal durch den Kopf. Ich fing an, damit zu experimentieren, aber es dauerte nicht lange, bis ich auf Dinge stieß, die nicht funktionierten, und auf rätselhafte Codeteile.

Die Commit-Geschichte war auch ziemlich besorgniserregend. Sie haben den Code und die Verzeichnisstruktur mehrmals überarbeitet, und das Zusammenführen der neuen Änderungen ist zu zeitaufwändig.

Das Schöne an mean.io und mean.js Code ist, dass sie mit Bootstrap-Integration geliefert werden. Sie werden auch mit Facebook-, Github-, Linkedin usw.-Authentifizierung über PassportJs und einem Beispiel für ein Modell (Artikel) im Backend von MongoDB geliefert, das mit dem Frontend-Modell mit AngularJS synchronisiert wird.

Laut Linnovates Website:

Linnovate ist das führende Open Source-Unternehmen in Israel mit dem erfahrensten Team des Landes, das sich der Entwicklung von High-End-Open Source-Lösungen widmet. Linnovate ist das einzige Unternehmen in Israel, das Unternehmen AZ-Services für den Aufbau und die Wartung ihres nächsten Webprojekts anbietet.

Auf der Website sieht es so aus, als ob ihre Kernkompetenz Drupal (ein PHP-Content-Management-System) ist und sie erst seit kurzem Node.js und AngularJS verwenden.

In letzter Zeit las ich den Mean.js Blog und die Dinge wurden klarer. Mein Verständnis ist, dass der Hauptentwickler von Javascript (Amos Haviv) Linnovate verlassen hat, um an Mean.js zu arbeiten, und das MEAN.io-Projekt mit Leuten verlassen hat, die unerfahrene Node.js-Entwickler sind, die das Verständnis verlangsamen, wie die Dinge funktionieren sollen.

In Zukunft mögen sich die Dinge ändern, aber ich würde es vorerst vermeiden, mean.io zu verwenden. Wenn Sie nach einem Boilerplate für einen Schnellstart suchen, scheint Mean.js eine bessere Option als mean.io zu sein.

Chris Cinelli
quelle
5
Hallo Chris, Linnovate arbeitet seit über 3 Jahren mit node.js / mongo. Wir akzeptieren Pull-Anfragen und Ideen, wenn Sie der Meinung sind, dass etwas schlecht aufgebaut ist und Sie eine konstruktive Idee haben, wie Sie es verbessern können. Ich vermute, dass Sie die Verschiebung erlebt haben, die wir im Kernprojekt zur Unterstützung der Abhängigkeitsinjektion, der Paketunterstützung und des mittleren Cli vorgenommen haben. Wir haben das Projekt von einer Boilerplate auf ein Framework verlagert und hatten einige "wachsende Schmerzen".
Lior Kesos
3
Ich lade Sie ein, das Projekt erneut zu besuchen und das neue Paketsystem zu überprüfen, mit dem Sie Ihr Projekt um mittlere Pakete erweitern können. Die Funktion wurde von der Community sehr gut angenommen und ist eines der ersten Beispiele für Full-Stack-Pakete (Bereitstellung von Funktionen auf Server- und Clientseite durch ein Paket bei gleichzeitiger Erweiterung des Kernprojekts).
Lior Kesos
7
Nach dem Vergleich der MEAN.io VS MEAN.js durch reines Wachstum. mean.js erhielt 93 Beiträge in 1 Jahr mit 700 Commits, während mean.io 3 Jahre lang 130 und überraschend niedrige 1200 Commits erhielt. (Nehmen Sie es nur mit Statistiken mit einem Körnchen Salz) Offensichtlich holt MEAN.js sehr schnell auf. Hey, ich schaue noch nicht in den Code. Aber im Grunde klingt MEAN.io wie der Apple, der seine Steve Jobs verloren hat.
Ezeewei
19

Hier finden Sie einen direkten Vergleich mehrerer Anwendungsstarter / -generatoren und anderer Technologien, einschließlich MEAN.js, MEAN.io und cleverstack. Ich füge immer wieder Alternativen hinzu, wenn ich Zeit finde, und in diesem Fall wächst auch die Liste der potenziell angebotenen Vorteile. Heute ist es bis ungefähr 1600. Wenn jemand dazu beitragen möchte, seine Genauigkeit oder Vollständigkeit zu verbessern, klicken Sie auf den nächsten Link und erstellen Sie einen Fragebogen zu etwas, das Sie kennen.

Vergleichen Sie das App-Technologie-Projekt

Aus dieser Datenbank generiert das System Berichte wie die folgenden:

Kompromissbericht zwischen MeanJS und MeanIO

Dan Cancro
quelle
4
Dies ist ein ziemlich episches Google-Dokument, das Sie zusammengestellt haben.
Honkskillet
Ich habe dem Dokument einzelne Seiten mit Kopf-an-Kopf-Vergleichen hinzugefügt. Es gibt einen Vergleich zwischen MEAN.js und MEAN.io
Dan Cancro
1
"Sie benötigen eine Erlaubnis" - es ist nicht zugänglich.
Mörre
Es ist jetzt eine Wissensgenossenschaft. Füllen Sie hier einfach einen Fragebogen über eine Technologie aus, die Sie kennen, und ich erteile
Dan Cancro
13

Das Starter-Kompromissblatt meiner Vergleichstabelle enthält umfassende Einzelvergleiche zwischen den einzelnen Generatoren. Sie müssen also keine verzerrten Dinge mehr auswählen, um etwas über Ihren Favoriten zu sagen.

Hier ist der zwischen Generator-Angular-Fullstack und MEAN.js. Die Prozentsätze sind Werte für jeden Vorteil, basierend auf meinen persönlichen Gewichtungen, wobei ein perfekter Generator 100% wäre

Generator-Angular-Fullstack bietet 8%, was MEANJS.org nicht bietet

  • 1,9% clientseitige End-to-End-Tests
  • 0,6% Fabrik
  • 0,5% Anbieter
  • 0,4% SASS
  • 0,4% WENIGER
  • 0,4% Kompass
  • 0,4% Dekorateur
  • 0,4% Endpunkt-Subgenerator
  • 0,4% Kommentare
  • 0,3% FontAwesome
  • 0,3% Server im Debug-Modus ausführen
  • 0,3% Speichern Sie die Antworten des Generators auf eine Datei
  • 0,2% konstant
  • 0,2% Entwicklungs-Build-Skript: ...... Ersetzen Sie Deps von Drittanbietern durch CDN-Versionen
  • 0,2% Authentifizierung - Cookie
  • 0,2% Authentifizierung - JSON Web Token (JWT)
  • 0,2% serverseitige Protokollierung
  • 0,1% Entwicklungs-Build-Skript: Führen Sie Aufgaben parallel aus, um sie zu beschleunigen
  • 0,1% Entwicklungs-Build-Skript: Benennt Asset-Dateien um, um das Zwischenspeichern von Browsern zu verhindern
  • 0,1% Entwicklungs-Build-Skript: Führen Sie End-to-End-Tests aus
  • 0,1% Produktionserstellungsskript: sichere Vorminimierung
  • 0,1% Produktionserstellungsskript: Fügen Sie CSS-Herstellerpräfixe hinzu
  • 0,1% Heroku-Bereitstellungsautomatisierung
  • 0,1% Wert
  • 0,1% Jade
  • 0,1% Coffeescript
  • 0,1% Serverside authentifizierte Routenbeschränkung
  • 0,1% SASS-Version von Twitter Bootstrap
  • 0,1% Produktionserstellungsskript: Bilder komprimieren
  • 0,1% OpenShift-Bereitstellungsautomatisierung

MeanJS.org. bietet 9%, was Generator-Angular-Fullstack nicht bietet

  • 3,7% Dedizierte / durchsuchbare Benutzergruppe: Antwortzeit meist unter einem Tag
  • 0,4% Routen generieren
  • 0,4% Authentifizierung - Oauth
  • 0,4% Konfiguration
  • 0,4% i18n, Lokalisierung
  • 0,4% Anwendungsprofil eingeben
  • 0,3% FEATURE (auch bekannt als Modul, Entität, Crud-Mock)
  • 0,3% Menüsystem
  • 0,3% Optionen zum Erstellen von Unterkomponenten
  • 0,3% Test - Client-Seite
  • 0,3% Javascript-Leistungssache
  • 0,3% Produktionserstellungsskript: Erstellen Sie statische Seiten für SEO
  • 0,2% Schnellinstallation?
  • 0,2% Dedizierte / durchsuchbare Benutzergruppe
  • 0,1% Entwicklungs-Build-Skript: Laden Sie die Build-Datei bei Änderung neu
  • 0,1% Entwicklungs-Build-Skript: Kaffeedateien, die in JS kompiliert wurden
  • 0,1% Controller - Serverseite
  • 0,1% Modell - Serverseite
  • 0,1% Route - Serverseite
  • 0,1% Test - Serverseite
  • 0,1% Swig
  • 0,1% sicher vor IP-Spoofing
  • 0,1% Produktions-Build-Skript: Hässlichkeit
  • 0.0% Annäherung an Ansichten: URLs beginnen mit "#!"
  • 0.0% Ansatz für Frontend-Services und Ajax-Aufrufe: Verwendet $ resource

Hier ist die zwischen MEAN.io und MEAN.js in einem besser lesbaren Format

<table border="1" cellpadding="10"><tbody><tr><td valign="top" width="33%"><br><br><h1>MeanJS.org. provides these benefits that MEAN.io. doesn't</h1><br><br><b>Help</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, using github issues<br>&nbsp;&nbsp;&nbsp;&nbsp;* There's a book about it<br><b>File Organization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Basic sourcecode organization, module(-&gt;submodule)-&gt;side<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold directives<br><b>Code Modularization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, Only one module definition per file<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, Don’t alter a module other than where it is defined<br><b>Model</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Object-relational mapping<br>&nbsp;&nbsp;&nbsp;&nbsp;* Server-side validation, server-side example<br>&nbsp;&nbsp;&nbsp;&nbsp;* Client side validation, using Angular 1.3<br><b>View</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS views, Directives start with "data-"<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to data readiness, Use ng-init<br><b>Control</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, URLs start with '#!'<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, Use query parameters to store route state<br><b>Support for things</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, LESS<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, SASS<br><b>Syntax, language and coding</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript 5 best practices, Don't use "new"<br><b>Testing</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Testing, using Mocha<br>&nbsp;&nbsp;&nbsp;&nbsp;* End-to-end tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* End-to-end tests, using Protractor<br>&nbsp;&nbsp;&nbsp;&nbsp;* Continuous integration (CI), using Travis<br><b>Development and debugging</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Command line interface (CLI), using Yeoman<br><b>Build</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build configurations file(s)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Azure<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Digital Ocean, screencast of it<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Heroku, screencast of it<br><b>Code Generation</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Input application profile<br>&nbsp;&nbsp;&nbsp;&nbsp;* Quick install?<br>&nbsp;&nbsp;&nbsp;&nbsp;* Options for making subcomponents<br>&nbsp;&nbsp;&nbsp;&nbsp;* config generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* controller (client side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* directive generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* filter generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* route (client side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* service (client side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* test - client side<br>&nbsp;&nbsp;&nbsp;&nbsp;* view or view partial generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* controller (server side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* model (server side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* route (server side) generator<br>&nbsp;&nbsp;&nbsp;&nbsp;* test (server side) generator<br><b>Implemented Functionality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management, Forgotten Password with Resetting<br>&nbsp;&nbsp;&nbsp;&nbsp;* Chat<br>&nbsp;&nbsp;&nbsp;&nbsp;* CSV processing<br>&nbsp;&nbsp;&nbsp;&nbsp;* E-mail sending system<br>&nbsp;&nbsp;&nbsp;&nbsp;* E-mail sending system, using Nodemailer<br>&nbsp;&nbsp;&nbsp;&nbsp;* E-mail sending system, using its own e-mail implementation<br>&nbsp;&nbsp;&nbsp;&nbsp;* Menus system, state-based<br>&nbsp;&nbsp;&nbsp;&nbsp;* Paypal integration<br>&nbsp;&nbsp;&nbsp;&nbsp;* Responsive design<br>&nbsp;&nbsp;&nbsp;&nbsp;* Social connections management page<br><b>Performance</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Creates a favicon<br><b>Security</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Safe from IP Spoofing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authorization, Access Contol List (ACL)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Cookie<br>&nbsp;&nbsp;&nbsp;&nbsp;* Websocket and RESTful http share security policies<br><br><br></td><td valign="top" width="33%"><br><br><h1>MEAN.io. provides these benefits that MeanJS.org. doesn't</h1><br><br><b>Quality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Sponsoring company<br><b>Help</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Docs with flatdoc<br><b>Code Modularization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Share code between projects<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module manager<br><b>View</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to data readiness, Use state.resolve()<br><b>Control</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend code loading, Use AMD with Require.js<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend code loading, using wiredep<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to error handling, Server-side logging<br><b>Client/Server Communication</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Centralized event handling<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to XHR calls, using $http and $q<br><b>Syntax, language and coding</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript 5 best practices, Wrap code in an IIFE (SEAF, SIAF)<br><b>Development and debugging</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* API introspection report and testing interface, using Swagger<br>&nbsp;&nbsp;&nbsp;&nbsp;* Command line interface (CLI), using Independent command line interface<br><b>Build</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, add IIFEs (SEAF, SIAF) to executable copies of code<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation<br>&nbsp;&nbsp;&nbsp;&nbsp;* Deployment automation, using Heroku<br><b>Code Generation</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Scaffolding undo&nbsp;&nbsp;&nbsp;&nbsp;(mean package -d &lt;name&gt;)<br>&nbsp;&nbsp;&nbsp;&nbsp;* FEATURE (a.k.a. module, entity) generator, Menu items added for new features<br><b>Implemented Functionality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Admin page for users and roles<br>&nbsp;&nbsp;&nbsp;&nbsp;* Content Management System&nbsp;&nbsp;&nbsp;&nbsp;(Use special data-bound directives in your templates.<br>Switch to edit mode and you can edit the values right where you see them)<br>&nbsp;&nbsp;&nbsp;&nbsp;* File Upload<br>&nbsp;&nbsp;&nbsp;&nbsp;* i18n, localization<br>&nbsp;&nbsp;&nbsp;&nbsp;* Menus system, submenus<br>&nbsp;&nbsp;&nbsp;&nbsp;* Search<br>&nbsp;&nbsp;&nbsp;&nbsp;* Search, actually works with backend API<br>&nbsp;&nbsp;&nbsp;&nbsp;* Search, using Elastic Search<br>&nbsp;&nbsp;&nbsp;&nbsp;* Styles, using Bootstrap, using UI Bootstrap AngularJS directives<br>&nbsp;&nbsp;&nbsp;&nbsp;* Text (WYSIWYG) Editor<br>&nbsp;&nbsp;&nbsp;&nbsp;* Text (WYSIWYG) Editor, using medium-editor<br><b>Performance</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Instrumentation, server-side<br><b>Security</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Serverside authenticated route restriction<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, using Oauth, Link multiple Oauth strategies to one account<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, JSON Web Token (JWT)<br><br><br></td><td valign="top" width="33%"><br><br><h1>MEAN.io. and MeanJS.org. both provide these benefits</h1><br><br><b>Quality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Version Control, using git<br><b>Platforms</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Client-side JS Framework, using AngularJS<br>&nbsp;&nbsp;&nbsp;&nbsp;* Frontend Server/ Framework, using Node.JS<br>&nbsp;&nbsp;&nbsp;&nbsp;* Frontend Server/ Framework, using Node.JS, using Express<br>&nbsp;&nbsp;&nbsp;&nbsp;* API Server/ Framework, using NodeJS<br>&nbsp;&nbsp;&nbsp;&nbsp;* API Server/ Framework, using NodeJS, using Express<br><b>Help</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, using Google Groups<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, using Facebook<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated/searchable user group for questions, response time mostly under a day<br>&nbsp;&nbsp;&nbsp;&nbsp;* Example application<br>&nbsp;&nbsp;&nbsp;&nbsp;* Tutorial screencast in English<br>&nbsp;&nbsp;&nbsp;&nbsp;* Tutorial screencast in English, using Youtube<br>&nbsp;&nbsp;&nbsp;&nbsp;* Dedicated chatroom<br><b>File Organization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Basic sourcecode organization, module(-&gt;submodule)-&gt;side, with type subfolders<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold controllers<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold services<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold templates<br>&nbsp;&nbsp;&nbsp;&nbsp;* Module directories hold unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Separate route configuration files for each module<br><b>Code Modularization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Modularized Functionality<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, No global 'app' module variable<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to AngularJS modules, No global 'app' module variable without an IIFE<br><b>Model</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Setup of persistent storage<br>&nbsp;&nbsp;&nbsp;&nbsp;* Setup of persistent storage, using NoSQL db<br>&nbsp;&nbsp;&nbsp;&nbsp;* Setup of persistent storage, using NoSQL db, using MongoDB<br><b>View</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* No XHR calls in controllers<br>&nbsp;&nbsp;&nbsp;&nbsp;* Templates, using Angular directives<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to data readiness, prevents Flash of Unstyled/compiled Content (FOUC)<br><b>Control</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, example of it<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, State-based routing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, State-based routing, using ui-router<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend routing or state changing, HTML5 Mode<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to frontend code loading, using angular.bootstrap()<br><b>Client/Server Communication</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Serve status codes only as responses<br>&nbsp;&nbsp;&nbsp;&nbsp;* Accept nested, JSON parameters<br>&nbsp;&nbsp;&nbsp;&nbsp;* Add timer header to requests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Support for signed and encrypted cookies<br>&nbsp;&nbsp;&nbsp;&nbsp;* Serve URLs based on the route definitions<br>&nbsp;&nbsp;&nbsp;&nbsp;* Can serve headers only<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to XHR calls, using JSON<br>&nbsp;&nbsp;&nbsp;&nbsp;* Approach to XHR calls, using $resource (angular-resource)<br><b>Support for things</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, JavaScript (server side)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Languages, Swig<br><b>Syntax, language and coding</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript 5 best practices, Use 'use strict'<br><b>Tool Configuration/customization</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Separate runtime configuration profiles<br><b>Testing</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Testing, using Jasmine<br>&nbsp;&nbsp;&nbsp;&nbsp;* Testing, using Karma<br>&nbsp;&nbsp;&nbsp;&nbsp;* Client-side unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Continuous integration (CI)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Automated device testing, using Live Reload<br>&nbsp;&nbsp;&nbsp;&nbsp;* Server-side integration &amp; unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Server-side integration &amp; unit tests, using Mocha<br><b>Development and debugging</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Command line interface (CLI)<br><b>Build</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build-time Dependency Management, using npm<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build-time Dependency Management, using bower<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build tool / Task runner, using Grunt<br>&nbsp;&nbsp;&nbsp;&nbsp;* Build tool / Task runner, using gulp<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, script<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, reload build script file upon change<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, copy assets to build or dist or target folder<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing, inject references by searching directories<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing, inject references by searching directories, injects js references<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, html page processing, inject references by searching directories, injects css references<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, LESS/SASS/etc files are linted, compiled<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, JavaScript style checking<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, JavaScript style checking, using jshint or jslint<br>&nbsp;&nbsp;&nbsp;&nbsp;* Development build, run unit tests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, script<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, concatenation (aggregation, globbing, bundling)&nbsp;&nbsp;&nbsp;&nbsp;(If you add debug:true to your config/env/development.js the will not be <br>uglified)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, minification<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, safe pre-minification, using ng-annotate<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, uglification<br>&nbsp;&nbsp;&nbsp;&nbsp;* Production build, make static pages for SEO<br><b>Code Generation</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* FEATURE (a.k.a. module, entity) generator&nbsp;&nbsp;&nbsp;&nbsp;(README.md<br>feature css<br>routes<br>controller<br>view<br>additional menu item)<br><b>Implemented Functionality</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* 404 Page<br>&nbsp;&nbsp;&nbsp;&nbsp;* 500 Page<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management, register/login/logout<br>&nbsp;&nbsp;&nbsp;&nbsp;* Account Management, is password manager friendly<br>&nbsp;&nbsp;&nbsp;&nbsp;* Front-end CRUD<br>&nbsp;&nbsp;&nbsp;&nbsp;* Full-stack CRUD<br>&nbsp;&nbsp;&nbsp;&nbsp;* Full-stack CRUD, with Read<br>&nbsp;&nbsp;&nbsp;&nbsp;* Full-stack CRUD, with Create, Update and Delete<br>&nbsp;&nbsp;&nbsp;&nbsp;* Google Analytics<br>&nbsp;&nbsp;&nbsp;&nbsp;* Menus system<br>&nbsp;&nbsp;&nbsp;&nbsp;* Realtime data sync<br>&nbsp;&nbsp;&nbsp;&nbsp;* Realtime data sync, using socket.io<br>&nbsp;&nbsp;&nbsp;&nbsp;* Styles, using Bootstrap<br><b>Performance</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* Javascript performance thing<br>&nbsp;&nbsp;&nbsp;&nbsp;* Javascript performance thing, using lodash<br>&nbsp;&nbsp;&nbsp;&nbsp;* One event-loop thread handles all requests<br>&nbsp;&nbsp;&nbsp;&nbsp;* Configurable response caching&nbsp;&nbsp;&nbsp;&nbsp;(Express plugin<br><b>https</b>://www.npmjs.org/package/apicache)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Clustered HTTP sessions<br><b>Security</b>:<br>&nbsp;&nbsp;&nbsp;&nbsp;* JavaScript obfuscation<br>&nbsp;&nbsp;&nbsp;&nbsp;* https<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, using Oauth<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Basic&nbsp;&nbsp;&nbsp;&nbsp;(With Passport or others)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Digest&nbsp;&nbsp;&nbsp;&nbsp;(With Passport or others)<br>&nbsp;&nbsp;&nbsp;&nbsp;* Authentication, Token&nbsp;&nbsp;&nbsp;&nbsp;(With Passport or others)<br></td></tr></tbody></table>

Dan Cancro
quelle
13
Ich schlage vor, Sie führen die beiden von Ihnen geposteten Antworten zusammen.
CMPSoares
8

Ich bin überrascht, dass niemand den Yeoman-Generator als eckigen Fullstack erwähnt hat . Es ist der Yeoman-Community-Generator Nummer eins mit derzeit 1490 Sternen auf der Generatorseite im Vergleich zu den 81 Sternen von Mean.js (zugegebenermaßen kein fairer Vergleich, wenn man bedenkt, wie neu MEANJS ist). Es scheint aktiv gewartet zu werden und ist in Version 2.05, während ich dies schreibe. Im Gegensatz zu MEANJS wird Swig nicht zum Vorlagen verwendet. Es kann mit eingebautem Reisepass gerüstet werden.

Honkskillet
quelle
@ SDudes Antwort erwähnte es.
CMPSoares
Wo? Ich sehe es nirgendwo in seiner Antwort oder seinen Kommentaren.
Honkskillet
Vielleicht habe ich Ihre Antwort falsch verstanden ... Aber SDude erwähnte, dass "Mean.js Yeoman-Generatoren verwendet" als Gerüst.
CMPSoares
1
Das habe ich total vergessen. Ich habe MEAN.js tatsächlich in den Github-Kommentaren von Generator-Angular-Fullstack vor langer Zeit erfahren ... Ich habe es der Antwort hinzugefügt.
Joseldn
2
@CMPSoares ... Es gibt mehrere Yeoman-Generatoren, die MEAN-Stapel ausrüsten. Angular-Fullstack und Mean.js sind nur zwei von vielen (wohl die am besten ausgearbeiteten zwei?). Sie können alle Yeoman Community Generatoren hier ansehen ... Yeoman Generators
Honkskillet