Differenza tra MEAN.js e MEAN.io


335

Volevo utilizzare lo stack JavaScript MEAN, ma ho notato che ci sono due diversi stack con il proprio sito Web e metodi di installazione: mean.js e mean.io. Quindi mi sono posto questa domanda: "Quale uso?".

Quindi, per rispondere a questa domanda, chiedo alla comunità se potresti spiegare quali sono le differenze tra questi due? E se possibile pro e contro? Perché sembrano molto simili a me.


5
Scegliere tra MEAN.io e MEAN.js può essere un punto controverso ora che Meteor ha rilasciato 1.0 e offre molto di più fuori dagli schemi .
Dan Dascalescu,

Risposte:


374

Sono essenzialmente gli stessi ... Usano entrambi il sorso per il modello, entrambi usano karma e moka per test, integrazione passaporti, nodemon, ecc.

Perché così simile? Mean.js è un fork di Mean.io ed entrambe le iniziative sono state avviate dallo stesso ragazzo ... Mean.io è ora sotto l'egida della società Linnovate e sembra che il ragazzo (Amos Haviv) abbia interrotto la sua collaborazione con questa società e avviato Mean.js. Puoi leggere di più sui motivi qui .

Ora ... le differenze principali (o piccole) che puoi vedere in questo momento sono:


GENERAZIONE DI SCAFFOLDING E DI CALDAIA

Mean.io usa uno strumento di cli personalizzato chiamato 'mean'
Mean.js usa Yeoman Generators


MODULARITÀ

Mean.io utilizza una modularità di pacchetti di nodi più autonomi con file client e server all'interno dei moduli.
Mean.js utilizza i moduli solo nel front-end (per angolare) e li collega con Express. Anche se stavano lavorando anche su moduli verticali ...


SISTEMA DI COSTRUZIONE

Mean.io è recentemente passato a gulp
Mean.js usa grunt


DISTRIBUZIONE

Entrambi hanno Dockerfile nei rispettivi repository e Mean.io ha l'installazione con un clic su Google Compute Engine , mentre Mean.js può anche essere distribuito con l'installazione con un clic su Digital Ocean .


DOCUMENTAZIONE

Mean.io ha documenti ok
Mean.js ha documenti ECCEZIONALI


COMUNITÀ

Mean.io ha una comunità più grande dal momento che era il
piatto originale Mean.js ha meno slancio ma una crescita costante


A livello personale, mi piace di più la filosofia e l'apertura di MeanJS e più l'approccio alla trazione e ai moduli / pacchetti di MeanIO. Entrambi sono carini e probabilmente finirai per modificarli, quindi non puoi sbagliare nel scegliere l'uno o l'altro. Prendili come punto di partenza e come esercizio di apprendimento.


SOLUZIONI ALTERNATIVE “MEAN”

MEAN è un modo generico (coniato da Valeri Karpov ) per descrivere una piastra / quadro caldaia che utilizza "Mongo + Express + Angular + Node" come base dello stack. Puoi trovare framework con questo stack che usano altre denominazioni, alcune delle quali davvero buone per RAD (Rapid Application Development) e per costruire SPA. Per esempio:

Hai anche Hackathon Starter . Non ha A di MEAN (è 'UOMINI'), ma oscilla ..

Divertiti!


5
Ehi, grazie per la risposta! l'hackathon-starter sembra fantastico! Cerca di più per quello che sto cercando. È anche principalmente JS e ha già implementato le autenticazioni ed era quello che pensavo fosse la parte più difficile ... Tutto il pensiero mi sento ancora come se non conoscessi tutte le mie opzioni ...: - / Inoltre è venuto fuori più tardi, l'hackathon-starter ha un generatore di impalcature e di caldaie? Ma ancora Grazie mille per la tua fantastica risposta!
CMPSoares

7
Prego. Sì, quello che mi piace anche di hackathon-starter è la gestione completa dell'account e il flusso di lavoro (password dimenticata, email di conferma, ecc.) E l'integrazione con sendgrid, paypal, ecc ... Cose che mancano a MEAN.js e MEAN.io. È un ottimo inizio per alcuni progetti gentili.
joseldn,

1
È sicuramente un buon punto di partenza per progetti se non hai bisogno di angolare. Non preoccuparti per le altre parti della piattaforma. Molto probabilmente troverai pacchetti di nodi plug & play che fanno proprio questo. Vale a dire: gist.github.com/facultymatt/6370903 per i ruoli
joseldn

1
Una buona situazione sarebbe quella di usarlo con SOA in cui si consuma un'API REST. Se hai un programma serrato, lascia cadere angolare. La curva di apprendimento è piuttosto ripida ... È un "bello da avere" per il front-end, ma non una componente critica. Puoi sempre impararlo in parallelo e usarlo nel tuo prossimo progetto o collegarlo in seguito a questo.
joseldn,

2
Hey ragazzi! Ho trovato qualcosa derivato da hackathon-starter ma anche molto carino: Skeleton ! ;-)
CMPSoares il

66

Prima di tutto, MEAN è l'acronimo di M ongoDB, E xpress, A ngular e N ode.js.

Esso genericamente identifica il composto usato di queste tecnologie in una "pila". Non esiste " Il quadro MEAN".

Lior Kesos a Linnovate ha approfittato di questa confusione. Ha acquistato il dominio MEAN.io e ha inserito del codice su https://github.com/linnovate/mean

Fortunatamente hanno ricevuto molta pubblicità e ci sono sempre più articoli e video su MEAN. Quando Google "mean framework", mean.io è il primo nell'elenco.

Sfortunatamente il codice su https://github.com/linnovate/mean sembra scarsamente progettato .

A febbraio sono caduto anch'io nella trappola. Il sito mean.io aveva un design accattivante e il repository Github aveva oltre 1000 stelle. L'idea di mettere in discussione la qualità non mi è nemmeno passata per la mente. Ho iniziato a sperimentarlo, ma non ci è voluto molto tempo per inciampare su cose che non funzionavano, e sconcertare pezzi di codice.

Anche la cronologia dei commit è stata piuttosto preoccupante. Hanno riprogettato più volte il codice e la struttura delle directory e l'unione delle nuove modifiche richiede troppo tempo.

La cosa bella del codice mean.io e mean.js è che vengono forniti con l'integrazione Bootstrap. Vengono inoltre forniti con l'autenticazione Facebook, Github, Linkedin ecc. Tramite PassportJs e un esempio di modello (articolo) sul backend su MongoDB che si sincronizza con il modello frontend con AngularJS.

Secondo il sito web di Linnovate:

Linnovate è la principale società Open Source in Israele, con il team più esperto del paese, dedicato alla creazione di soluzioni open source di fascia alta. Linnovate è l'unica azienda in Israele che offre servizi AZ alle imprese per la costruzione e la manutenzione del loro prossimo progetto web.

Dal sito web sembra che il loro set di competenze principali sia Drupal (un sistema di gestione dei contenuti PHP) e solo di recente hanno iniziato a utilizzare Node.js e AngularJS.

Ultimamente stavo leggendo il Blog Mean.js e le cose sono diventate più chiare. La mia comprensione è che il principale sviluppatore Javascript (Amos Haviv) ha lasciato Linnovate per lavorare su Mean.js lasciando il progetto MEAN.io con persone che sono sviluppatori principianti di Node.js che stanno rallentando la comprensione di come dovrebbero funzionare le cose.

In futuro le cose potrebbero cambiare, ma per ora eviterei di usare mean.io. Se stai cercando una piastra di cottura per un avvio rapido, Mean.js sembra un'opzione migliore di mean.io.


5
Ciao Chris, Linnovate fa il lavoro di node.js / mongo da oltre 3 anni. Accettiamo richieste e idee pull se ritieni che qualcosa sia scarsamente progettato e hai un'idea costruttiva di come migliorarla. Ho il sospetto che tu abbia sperimentato il cambiamento che abbiamo fatto nel progetto principale per supportare l'iniezione delle dipendenze, il supporto dei pacchetti e il cli medio, abbiamo spostato il progetto da una caldaia a un framework e abbiamo avuto alcuni "problemi crescenti".
Lior Kesos,

3
Ti invito a rivisitare il progetto e rivedere il nuovo sistema di pacchetti che ti consente di estendere il tuo progetto attraverso pacchetti medi. La funzionalità è stata accettata molto bene dalla community ed è uno dei primi esempi di pacchetti full stack (che forniscono funzionalità lato server e client attraverso un pacchetto estendendo il progetto principale).
Lior Kesos,

7
Dopo aver confrontato MEAN.io VS MEAN.js, per pura crescita. mean.js ha ricevuto 93 collaboratori in 1 anno con 700 commit mentre mean.io ha ricevuto 130 per 3 anni e sorprendentemente basso, 1200 commit. (solo con le statistiche, prendilo con un granello di sale) Ovviamente, MEAN.js sta raggiungendo molto velocemente. Ehi, non sto ancora esaminando il codice. ma fondamentalmente, MEAN.io sembra la Apple che ha perso il suo Steve Jobs.
Ezeewei,

19

Ecco un confronto fianco a fianco di diversi avviatori / generatori di applicazioni e altre tecnologie tra cui MEAN.js, MEAN.io e Cleverstack. Continuo ad aggiungere alternative man mano che trovo il tempo e, in tal caso, l'elenco dei vantaggi potenzialmente forniti continua a crescere. Oggi è intorno al 1600. Se qualcuno vuole contribuire a migliorarne l'accuratezza o la completezza, fai clic sul collegamento successivo e fai un questionario su qualcosa che conosci.

Confronta il progetto sulle tecnologie delle app

Da questo database, il sistema genera report come il seguente:

Rapporto di compromesso MeanJS vs MeanIO


4
Questo è un documento google piuttosto epico che hai messo insieme.
honkskillet,

Ho aggiunto singole pagine al documento con confronti diretti. Ce n'è uno a confronto tra MEAN.js e MEAN.io
Dan Cancro,

1
"È necessaria l'autorizzazione": non è accessibile.
Mörre,

Ora è una cooperativa di conoscenza. Compila qui un questionario su alcune tecnologie che conosci e ti garantirò l'accesso al documento dancancro.com/technology-questionnaires
Dan Cancro,

13

Il foglio dei compromessi di partenza del mio foglio di calcolo comparativo contiene confronti uno a uno completi tra ciascun generatore. Quindi non c'è più bisogno di scegliere in modo distorto grandi cose da dire sul tuo preferito.

Ecco quello tra generatore-angolare-fullstack e MEAN.js. Le percentuali sono valori per ogni beneficio basati sulle mie ponderazioni personali, in cui un generatore perfetto sarebbe al 100%

generatore-angolare-fullstack offre l'8% di MEANJS.org

  • 1,9% Test end-to-end lato client
  • 0,6% di fabbrica
  • 0,5% fornitore
  • 0.4% SASS
  • 0.4% MENO
  • 0,4% bussola
  • 0,4% decoratore
  • 0.4generatore secondario endpoint
  • 0.4% commenti
  • 0,3% FontAwesome
  • 0,3% Esegui il server in modalità debug
  • 0,3% Salva le risposte del generatore in un file
  • 0,2% costante
  • 0,2% Script di sviluppo: ...... sostituisci i deps di terze parti con le versioni CDN
  • Autenticazione 0,2% - Cookie
  • Autenticazione 0,2% - JSON Web Token (JWT)
  • 0,2% Registrazione lato server
  • 0,1% Script di sviluppo build: esegui attività in parallelo per accelerarlo
  • 0,1% Script di build di sviluppo: rinomina i file degli asset per impedire la memorizzazione nella cache del browser
  • 0,1% Script di sviluppo: esegui test end-to-end
  • 0,1% Script di build di produzione: pre-minificazione sicura
  • 0,1% Script di generazione della produzione: aggiungi prefissi fornitore CSS
  • 0,1% automazione della distribuzione di Heroku
  • Valore 0,1%
  • 0,1% giada
  • 0,1% di caffè
  • 0,1% Limitazione percorso autenticato dal server
  • 0.1% versione SASS di Bootstrap di Twitter
  • 0,1% Script di build di produzione: comprime le immagini
  • 0,1% automazione della distribuzione OpenShift

MeanJS.org. offre il 9% rispetto al generatore-angolare-fullstack

  • 3,7% Gruppo di utenti dedicato / ricercabile: tempo di risposta per lo più sotto un giorno
  • 0.4% Genera percorsi
  • 0,4% di autenticazione - Oauth
  • 0,4% di configurazione
  • 0.4% i18n, localizzazione
  • 0,4% Immettere il profilo dell'applicazione
  • 0,3% CARATTERISTICHE (aka modulo, entità, crud-mock)
  • 0,3% Sistema di menu
  • 0,3% Opzioni per la creazione di sottocomponenti
  • 0,3% test - lato client
  • 0,3% di prestazioni Javascript
  • 0,3% Script di produzione: crea pagine statiche per SEO
  • 0,2% Installazione rapida?
  • 0,2% Gruppo utenti dedicato / ricercabile
  • 0,1% Script di build di sviluppo: ricaricare il file di build al momento della modifica
  • 0,1% Script di sviluppo: file di caffè compilati su JS
  • 0,1% controller - lato server
  • Modello 0,1% - lato server
  • 0,1% route - lato server
  • 0,1% di test - lato server
  • 0.1% Swig
  • 0,1% protetto da spoofing IP
  • 0,1% Script di produzione: uglificazione
  • 0.0% Approccio alle visualizzazioni: gli URL iniziano con "#!"
  • 0.0% Approccio ai servizi frontend e alle chiamate ajax: utilizza $ resource

Ecco quello tra MEAN.io e MEAN.js in un formato più leggibile

<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
Ti suggerisco di unire le due risposte che hai pubblicato.
CMPSoares

8

Sono sorpreso che nessuno abbia menzionato il generatore di Yeoman angolare-full-stack . È il generatore di comunità Yeoman numero uno, con attualmente 1490 stelle sulla pagina del generatore contro le 81 stelle di Mean.js (è vero che non è un confronto equo dato il nuovo MEANJS). Sembra essere attivamente gestito ed è nella versione 2.05 mentre scrivo questo. A differenza di MEANJS, non usa Swig per il templating. Può essere impalcato con passaporto incorporato.


La risposta di @ SDude l'ha menzionata.
CMPSoares,

Dove? Non lo vedo da nessuna parte nella sua risposta o nei suoi commenti.
honkskillet,

Forse ho frainteso la tua risposta ... Ma SDude ha detto che "Mean.js usa Yeoman Generators" per i ponteggi.
CMPSoares

1
Me ne sono completamente dimenticato. In realtà ho imparato a conoscere MEAN.js nei commenti github di generatore-angolare-fullstack molto tempo fa ... L'ho aggiunto alla risposta.
joseldn,

2
@CMPSoares ... Esistono più generatori Yeoman che impilano gli stack MEAN. Angular-Fullstack e Mean.js sono solo due dei molti (probabilmente i due più raffinati?). Puoi vedere tutti i generatori della comunità Yeoman qui ... Generatori Yeoman
honkskillet
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.