Różnica między MEAN.js i MEAN.io


335

Chciałem użyć stosu MEAN JavaScript, ale zauważyłem, że istnieją dwa różne stosy z własną witryną i metodami instalacji: mean.js i mean.io. Więc wymyśliłem sobie pytanie: „Którego używam?”.

Aby odpowiedzieć na to pytanie, pytam społeczność, czy możesz wyjaśnić, jakie są między nimi różnice? A jeśli to możliwe zalety i wady? Ponieważ wyglądają bardzo podobnie do mnie.


5
Wybór między MEAN.io i MEAN.js może być kwestią sporną teraz, gdy Meteor wydał 1.0 i oferuje znacznie więcej po wyjęciu z pudełka .
Dan Dascalescu,

Odpowiedzi:


374

Są zasadniczo takie same ... Obaj używają swig do szablonów, obaj używają karmy i mokki do testów, integracji paszportu, nodemon itp.

Dlaczego tak podobny? Mean.js jest rozwidleniem Mean.io i obie inicjatywy zostały uruchomione przez tego samego faceta ... Mean.io jest teraz pod parasolem firmy Linnovate i wygląda na to, że facet (Amos Haviv) przestał współpracować z tą firmą i zaczął Mean.js. Możesz przeczytać więcej o przyczynach tutaj .

Teraz ... główne (lub małe) różnice, które możesz teraz zobaczyć, to:


RUSZTOWANIA I WYTWARZANIE KOTŁA

Mean.io używa niestandardowego narzędzia cli o nazwie „mean”
Mean.js używa Yeoman Generators


MODUŁOWOŚĆ

Mean.io używa bardziej samodzielnej modułowości pakietów węzłów z plikami klienta i serwera wewnątrz modułów.
Mean.js wykorzystuje moduły tylko w interfejsie (dla kątów) i łączy je z Express. Chociaż pracowali również nad modułami pionowymi ...


SYSTEM BUDOWLANY

Mean.io niedawno przeniósł się do gulp
Mean.js używa chrząknięcia


ROZLOKOWANIE

Oba mają pliki Docker w swoich repozytoriach, a Mean.io ma instalację jednym kliknięciem w Google Compute Engine , natomiast Mean.js można również wdrożyć za pomocą instalacji jednym kliknięciem w Digital Ocean .


DOKUMENTACJA

Mean.io ma ok docs
Mean.js ma NIESAMOWITE dokumenty


SPOŁECZNOŚĆ

Mean.io ma większą społeczność, ponieważ był to oryginalny
kocioł Mean.js ma mniejszy pęd, ale stały wzrost


Na poziomie osobistym bardziej podoba mi się filozofia i otwartość MeanJS, a bardziej podejście trakcyjne i moduły / pakiety MeanIO. Oba są fajne i prawdopodobnie zakończysz je modyfikując, więc nie możesz naprawdę pomylić się wybierając jedno lub drugie. Po prostu weź je jako punkt wyjścia i jako ćwiczenie edukacyjne.


ALTERNATYWNE ROZWIĄZANIA „ZNACZNE”

MEAN to ogólny sposób (wymyślony przez Valeri Karpov ) opisujący płytę kotłową / ramę, która przyjmuje „Mongo + Express + Angular + Node” jako podstawę stosu. Możesz znaleźć frameworki z tym stosem, które używają innych nazw, niektóre z nich są naprawdę dobre dla RAD (Rapid Application Development) i budowania SPA. Na przykład:

Masz również Hackathon Starter . Nie ma A OF MEAN (to „MEN”), ale kołysze się ..

Baw się dobrze!


5
Hej, dziękuję za odpowiedź! hackathon-starter wygląda niesamowicie! Wygląda bardziej na to, czego szukam. Jest to również w większości JS i ma już zaimplementowane uwierzytelnienia, i to właśnie myślałem, że będzie to najtrudniejsza część. Wszyscy myślę, że nadal mam wrażenie, że nie znam wszystkich moich opcji ...: - / Również pojawiło się później, czy hackathon-starter ma Generator rusztowań i Boilerplate? Ale nadal dziękuję bardzo za wspaniałą odpowiedź!
CMPSoares

7
Nie ma za co. Tak, w hackathon-starterze podoba mi się także pełne zarządzanie kontem i przepływ pracy (zapomniane hasło, e-mail z potwierdzeniem itp.) Oraz integracja z sendgrid, paypal itp. ... Rzeczy, których brakuje MEAN.js i MEAN.io. Jest to świetny start dla niektórych projektów.
joseldn

1
Jest to z pewnością dobry punkt wyjścia dla projektów, jeśli nie potrzebujesz kątownika. Nie martw się o inne części platformy. Najprawdopodobniej znajdziesz pakiety węzłów plug & play, które właśnie to robią .. To znaczy : gist.github.com/facultymatt/6370903 dla ról
joseldn

1
Dobrą sytuacją byłoby użycie go z SOA, gdzie korzystasz z interfejsu API REST. Jeśli masz napięty harmonogram, upuść kąt. Krzywa uczenia się jest dość stroma ... To jest „fajnie mieć” interfejs, ale nie jest to kluczowy element. Zawsze możesz nauczyć się tego równolegle i użyć go w następnym projekcie lub podłączyć go później do tego.
joseldn

2
Cześć ludzie! Znalazłem coś, co wywodzi się z hackathon-startera, ale jest też bardzo miłe: Szkielet ! ;-)
CMPSoares

66

Przede wszystkim MEAN to skrót od M ongoDB, E xpress, A ngular i N ode.js.

To ogólnie określa łączny stosowany z tych technologii w „stos”. Nie ma czegoś takiego jak „ The MEAN framework”.

Lior Kesos z Linnovate skorzystał z tego zamieszania. Kupił domenę MEAN.io i umieścił kod na https://github.com/linnovate/mean

Na szczęście otrzymali dużo rozgłosu, a są coraz więcej artykułów i filmów o MEAN. Kiedy Google „oznacza ramy”, mean.io jest pierwszym na liście.

Niestety kod na https://github.com/linnovate/mean wydaje się źle zaprojektowany .

W lutym sam wpadłem w pułapkę. Witryna mean.io miała chwytliwy design, a repozytorium Github miało ponad 1000 gwiazd. Pomysł zakwestionowania jakości nie przyszedł mi nawet do głowy. Zacząłem eksperymentować z tym, ale nie zajęło mi to dużo czasu, aby natknąć się na rzeczy, które nie działały, i zagadkowe fragmenty kodu.

Historia zmian była również bardzo niepokojąca. Wiele razy przeprojektowali kod i strukturę katalogów, a scalanie nowych zmian jest zbyt czasochłonne.

Zaletą zarówno kodu mean.io, jak i mean.js jest to, że pochodzą one z integracją Bootstrap. Pochodzą one również z uwierzytelnianiem Facebook, Github, Linkedin itp. Za pośrednictwem PassportJs oraz przykładem modelu (artykuł) na backendu na MongoDB, które synchronizują się z modelem frontonu z AngularJS.

Według strony internetowej Linnovate:

Linnovate jest wiodącą firmą Open Source w Izraelu, z najbardziej doświadczonym zespołem w kraju, poświęconym tworzeniu wysokiej klasy rozwiązań open source. Linnovate jest jedyną firmą w Izraelu, która świadczy usługi AZ dla przedsiębiorstw w zakresie budowy i utrzymania następnego projektu internetowego.

Na stronie wygląda na to, że ich podstawowym zestawem umiejętności jest Drupal (system zarządzania treścią PHP) i dopiero niedawno zaczęli używać Node.js i AngularJS.

Ostatnio czytałem blog Mean.js i wszystko stało się wyraźniejsze. Rozumiem, że główny programista Javascript (Amos Haviv) opuścił Linnovate, aby pracować nad Mean.js, pozostawiając projekt MEAN.io z ludźmi, którzy są nowymi programistami Node.js, którzy spowalniają rozumienie, jak powinny działać.

W przyszłości wszystko może się zmienić, ale na razie unikałbym korzystania z mean.io. Jeśli szukasz podstawki do szybkiego uruchomienia Mean.js wydaje się lepszą opcją niż mean.io.


5
Cześć Chris, Linnovate zajmuje się węzłem.js / mongo od ponad 3 lat. Akceptujemy prośby i pomysły, jeśli uważasz, że coś jest źle zaprojektowane i masz konstruktywny pomysł, jak to poprawić. Podejrzewam, że doświadczyłeś zmiany, którą zrobiliśmy w głównym projekcie, aby wspierać wstrzykiwanie zależności, obsługę pakietów i średnie cli, przenieśliśmy projekt z płyty głównej do frameworka i mieliśmy pewne „rosnące bóle”.
Lior Kesos

3
Zapraszam do ponownej wizyty w projekcie i przejrzenia nowego systemu pakietów, który pozwala rozszerzyć projekt o średnie pakiety. Ta funkcja została bardzo dobrze przyjęta przez społeczność i jest jednym z pierwszych przykładów pakietów z pełnym stosem (zapewniając zarówno funkcjonalność po stronie serwera, jak i klienta poprzez pakiet, jednocześnie rozszerzając główny projekt).
Lior Kesos

7
Po porównaniu MEAN.io VS MEAN.js, przez czysty wzrost. mean.js otrzymał 93 autorów w ciągu 1 roku z 700 zobowiązaniami, podczas gdy mean.io otrzymał 130 przez 3 lata i zaskakująco niski, 1200 zobowiązań. (po prostu statystyki, weź to z odrobiną soli) Oczywiście, MEAN.js szybko nadrabia zaległości. Hej, jeszcze nie zaglądam do kodu. ale w zasadzie MEAN.io brzmi jak Apple, które straciło Steve'a Jobsa.
Ezeewei

19

Oto porównanie kilku starterów / generatorów aplikacji i innych technologii, w tym MEAN.js, MEAN.io i cleverstack. W miarę, jak znajduję czas, ciągle dodam alternatywy, a wraz z tym wciąż rośnie lista potencjalnych korzyści. Dzisiaj jest to około 1600. Jeśli ktoś chce poprawić dokładność lub kompletność, kliknij następny link i wypełnij kwestionariusz dotyczący czegoś, co wiesz.

Porównaj projekt technologii aplikacji

Z tej bazy danych system generuje raporty takie jak następujące:

Raport dotyczący kompromisu MeanJS vs. MeanIO


4
To dość epicki dokument Google, który przygotowałeś.
honkskillet

Do dokumentu dodałem poszczególne strony z porównaniami od jednego do drugiego. Jest jeden porównujący MEAN.js i MEAN.io
Dan

1
„Potrzebujesz pozwolenia” - nie jest dostępne.
Mörre

To teraz kooperacja wiedzy. Wystarczy wypełnić tutaj kwestionariusz dotyczący niektórych technologii, które znasz, a dam ci dostęp do dokumentu dancancro.com/technology-questionnaires
Dan

13

Arkusz początkowych kompromisów mojego arkusza porównawczego zawiera kompleksowe porównania jeden na jeden między każdym generatorem. Nie musisz już więcej zniekształcać najlepszych rzeczy do powiedzenia o swoich ulubionych.

Oto jeden między generatorem-kątowym-pełnym-stosem a MEAN.js. Wartości procentowe to wartości dla każdej korzyści oparte na moich osobistych wagach, przy czym idealny generator wynosiłby 100%

generator-kątowy- pełny stos oferuje 8%, czego MEANJS.org nie

  • 1,9% Kompleksowe testy po stronie klienta
  • Fabryka 0,6%
  • 0,5% dostawca
  • 0,4% SASS
  • 0,4% MNIEJ
  • 0,4% kompas
  • Dekorator 0,4%
  • Subgenerator punktu końcowego 0,4%
  • 0,4% komentarzy
  • 0,3% FontAwesome
  • 0,3% Uruchom serwer w trybie debugowania
  • 0,3% Zapisz odpowiedzi generatora na plik
  • Stała 0,2%
  • 0,2% Skrypt kompilacji programistycznej: ...... zamień niezależne platformy na wersje CDN
  • 0.2% Uwierzytelnianie - Cookie
  • 0.2% Uwierzytelnianie - JSON Web Token (JWT)
  • 0.2% Logowanie po stronie serwera
  • 0,1% Skrypt kompilacji programowania: uruchamiaj zadania równolegle, aby je przyspieszyć
  • 0,1% Skrypt kompilacji programowania: Zmienia nazwy plików zasobów, aby zapobiec buforowaniu przeglądarki
  • 0,1% Skrypt kompilacji programowania: uruchamiaj testy od końca do końca
  • 0,1% Skrypt kompilacji produkcji: bezpieczne wstępne minimalizowanie
  • 0,1% Skrypt kompilacji produkcji: dodaj prefiksy dostawcy CSS
  • 0,1% automatyzacja wdrażania Heroku
  • Wartość 0,1%
  • 0,1% Jade
  • 0,1% Coffeescript
  • 0,1% Ograniczenie trasy uwierzytelnione na serwerze
  • 0.1% SASS wersja Twitter Bootstrap
  • 0,1% Skrypt kompilacji produkcyjnej: kompresuj obrazy
  • 0,1% automatyzacja wdrażania OpenShift

MeanJS.org. oferuje 9%, czego nie robi generator-kąt-fullstack

  • 3,7% Dedykowana / możliwa do przeszukiwania grupa użytkowników: czas reakcji przeważnie poniżej jednego dnia
  • 0,4% Generuj trasy
  • Uwierzytelnianie 0,4% - Oauth
  • Konfiguracja 0,4%
  • 0,4% i18n, lokalizacja
  • 0,4% Wprowadź profil aplikacji
  • 0,3% CECHY (aka moduł, byt, crud-mock)
  • 0,3% System menu
  • 0,3% Opcje tworzenia podskładników
  • Test 0,3% - po stronie klienta
  • 0,3% Wydajność Javascript
  • 0,3% Skrypt kompilacji produkcji: twórz statyczne strony dla SEO
  • 0,2% Szybka instalacja?
  • 0,2% Dedykowana / przeszukiwalna grupa użytkowników
  • 0,1% Skrypt kompilacji programowania: przeładuj plik kompilacji po zmianie
  • 0,1% Skrypt kompilacji programowania: pliki kawy skompilowane do JS
  • Sterownik 0,1% - po stronie serwera
  • Model 0,1% - po stronie serwera
  • 0,1% trasy - po stronie serwera
  • 0,1% test - po stronie serwera
  • 0,1% Swig
  • 0,1% bezpieczny przed fałszowaniem adresów IP
  • 0,1% Skrypt kompilacji produkcji: uglifikacja
  • 0,0% Podejście do wyświetleń: adresy URL zaczynają się od „#!”
  • 0,0% Podejście do usług frontendowych i wywołań ajax: używa $ resource

Oto jeden między MEAN.io i MEAN.js w bardziej czytelnym formacie

<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>


13
Sugeruję scalenie dwóch opublikowanych odpowiedzi.
CMPSoares

8

Dziwi mnie, że nikt nie wspominał o generatorze kątowym generatora Yeoman . Jest to najpopularniejszy generator społeczności Yeoman, który obecnie ma 1490 gwiazdek na stronie generatora vs. 81 gwiazdek Mean.js (co prawda nie jest to uczciwe porównanie biorąc pod uwagę, jak nowy jest MEANJS). Wygląda na to, że jest aktywnie utrzymywany i jest w wersji 2.05, kiedy to piszę. W przeciwieństwie do MEANJS, nie używa Swig do tworzenia szablonów. Może być rusztowany z wbudowanym paszportem.


@ SDude wspomniał o tym.
CMPSoares,

Gdzie? Nigdzie nie widzę tego w jego odpowiedzi lub komentarzach.
honkskillet

Może źle zrozumiałem twoją odpowiedź ... Ale SDude wspomniał, że „Mean.js używa Yeoman Generators” do rusztowań.
CMPSoares

1
Zupełnie o tym zapomniałem. Dowiedziałem się o MEAN.js w komentarzach github o generatorze kątowym-fullstack dawno temu ... Dodałem go do odpowiedzi.
joseldn

2
@CMPSoares ... Istnieje wiele generatorów Yeoman, które ruszają w stosy MEAN. Angular-Fullstack i Mean.js to tylko dwa z wielu (prawdopodobnie najbardziej dopracowane dwa?). Możesz zobaczyć wszystkie generatory społeczności Yeoman tutaj ... Generatory Yeoman
honkskillet
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.