Différence entre MEAN.js et MEAN.io

335

Je voulais utiliser la pile JavaScript MEAN, mais j'ai remarqué qu'il y a deux piles différentes avec leur propre site Web et leurs propres méthodes d'installation: mean.js et mean.io. Je suis donc venu me poser cette question: "Laquelle dois-je utiliser?".

Donc, pour répondre à cette question, je demande à la communauté si vous pourriez expliquer quelles sont les différences entre ces deux? Et si possible des avantages et des inconvénients? Parce qu'ils me ressemblent beaucoup.

CMPSoares
la source
5
Choisir entre MEAN.io et MEAN.js peut être un point discutable maintenant que Meteor a publié 1.0 et offre bien plus encore .
Dan Dascalescu

Réponses:

374

Ils sont essentiellement les mêmes ... Ils utilisent tous les deux swig pour les modèles, ils utilisent tous les deux le karma et le mocha pour les tests, l'intégration du passeport, le nodemon, etc.

Pourquoi si similaire? Mean.js est un fork de Mean.io et les deux initiatives ont été lancées par le même gars ... Mean.io est maintenant sous l'égide de la société Linnovate et il semble que le gars (Amos Haviv) ait arrêté sa collaboration avec cette société et a commencé Mean.js. Vous pouvez en savoir plus sur les raisons ici .

Maintenant ... les principales (ou petites) différences que vous pouvez voir en ce moment sont:


ÉCHAFAUDAGE ET GÉNÉRATION DE CHAUDIÈRE

Mean.io utilise un outil cli personnalisé nommé 'mean'
Mean.js utilise des générateurs Yeoman


MODULARITÉ

Mean.io utilise une modularité de packages de nœuds plus autonome avec des fichiers client et serveur à l'intérieur des modules.
Mean.js utilise des modules juste en frontal (pour angulaire) et les connecte à Express. Bien qu'ils travaillaient également sur des modules verticaux ...


CONSTRUIRE UN SYSTÈME

Mean.io a récemment migré vers
gulp Mean.js utilise grunt


DÉPLOIEMENT

Les deux ont Dockerfiles dans leurs référentiels respectifs, et Mean.io a une installation en un clic sur Google Compute Engine , tandis que Mean.js peut également être déployé avec une installation en un clic sur Digital Ocean .


DOCUMENTATION

Mean.io a des documents ok
Mean.js a des documents IMPRESSIONNANTS


COMMUNAUTÉ

Mean.io a une plus grande communauté car il était le passe-
partout d' origine Mean.js a moins d'élan mais une croissance régulière


Sur le plan personnel, j'aime davantage la philosophie et l'ouverture de MeanJS et plus l'approche traction et modules / packages de MeanIO. Les deux sont agréables, et vous finirez probablement par les modifier, vous ne pouvez donc pas vraiment vous tromper en choisissant l'un ou l'autre. Prenez-les simplement comme point de départ et comme exercice d'apprentissage.


SOLUTIONS ALTERNATIVES «MOYENNES»

MEAN est un moyen générique (inventé par Valeri Karpov ) pour décrire un passe-partout / framework qui prend "Mongo + Express + Angular + Node" comme base de la pile. Vous pouvez trouver des frameworks avec cette pile qui utilisent d'autres dénominations, certains d'entre eux étant très bons pour le RAD (Rapid Application Development) et la construction de SPA. Par exemple:

Vous avez également Hackathon Starter . Il n'a pas A de MEAN (c'est 'MEN'), mais ça bascule ..

S'amuser!

joseldn
la source
5
Hé merci pour la réponse! hackathon-starter est génial! Il ressemble plus à ce que je recherche. C'est aussi principalement JS et les authentifications sont déjà implémentées et c'est ce que je pensais être la partie la plus difficile ... Je pensais toujours que je ne connaissais pas toutes mes options ...: - / Cela est également apparu plus tard, hackathon-starter a-t-il un générateur d'échafaudages et de plaques de chaudière? Mais encore merci beaucoup pour votre réponse impressionnante!
CMPSoares
7
De rien. Oui, ce que j'aime aussi chez hackathon-starter, c'est la gestion complète du compte et le workflow (mot de passe oublié, email de confirmation, etc.) et l'intégration avec sendgrid, paypal, etc ... Ce qui manque à MEAN.js et MEAN.io. C'est une entrée cool pour certains types de projets.
joseldn
1
C'est certainement un bon point de départ pour des projets si vous n'avez pas besoin d'angulaire. Ne vous inquiétez pas pour les autres parties de la plateforme. Vous trouverez très probablement des packages de nœuds plug & play qui font exactement cela. Ie: gist.github.com/facultymatt/6370903 pour les rôles
joseldn
1
Une bonne situation serait de l'utiliser avec des SOA où vous consommez une API REST. Si vous avez un horaire serré, laissez tomber angulaire. La courbe d'apprentissage est assez raide ... C'est un "bien à avoir" pour le front-end, mais pas un composant critique. Vous pouvez toujours l'apprendre en parallèle et l'utiliser dans votre prochain projet ou le brancher plus tard à celui-ci.
joseldn
2
Salut les gars! J'ai trouvé quelque chose qui dérivait du hackathon-starter mais aussi très sympa: Skeleton ! ;-)
CMPSoares
66

Tout d'abord, MEAN est l'acronyme de M ongoDB, E xpress, A ngular et N ode.js.

Il identifie de manière générique l'utilisation combinée de ces technologies dans une "pile". Il n'y a rien de tel que " le cadre MEAN".

Lior Kesos de Linnovate a profité de cette confusion. Il a acheté le domaine MEAN.io et a mis du code sur https://github.com/linnovate/mean

Heureusement, ils ont reçu beaucoup de publicité, et il y a de plus en plus d'articles et de vidéos sur MEAN. Lorsque vous "cadre moyen" sur Google, mean.io est le premier de la liste.

Malheureusement, le code sur https://github.com/linnovate/mean semble mal conçu .

En février, je suis tombé moi-même dans le piège. Le site mean.io avait un design accrocheur et le repo Github avait plus de 1000 étoiles. L'idée de remettre en cause la qualité ne m'a même pas traversé l'esprit. J'ai commencé à l'expérimenter, mais il n'a pas fallu trop de temps pour tomber sur des choses qui ne fonctionnaient pas et des morceaux de code déroutants.

L'historique des commit était également assez inquiétant. Ils ont repensé le code et la structure du répertoire plusieurs fois, et la fusion des nouvelles modifications prend trop de temps.

Ce qui est bien avec le code mean.io et mean.js, c'est qu'ils sont livrés avec une intégration Bootstrap. Ils sont également fournis avec l'authentification Facebook, Github, Linkedin, etc. via PassportJs et un exemple de modèle (article) sur le backend sur MongoDB qui se synchronise avec le modèle frontend avec AngularJS.

Selon le site Web de Linnovate:

Linnovate est la principale société Open Source en Israël, avec l'équipe la plus expérimentée du pays, dédiée à la création de solutions open source haut de gamme. Linnovate est la seule entreprise en Israël qui offre des services AZ aux entreprises pour la construction et la maintenance de leur prochain projet Web.

Du site Web, il semble que leur ensemble de compétences de base soit Drupal (un système de gestion de contenu PHP) et ce n'est que récemment qu'ils ont commencé à utiliser Node.js et AngularJS.

Dernièrement, je lisais le blog Mean.js et les choses sont devenues plus claires. Ma compréhension est que le développeur Javascript principal (Amos Haviv) a quitté Linnovate pour travailler sur Mean.js, laissant le projet MEAN.io avec des personnes qui sont des développeurs novices Node.js qui ralentissent la compréhension du fonctionnement des choses.

À l'avenir, les choses pourraient changer, mais pour l'instant, j'éviterais d'utiliser mean.io. Si vous cherchez un passe-partout pour un quickstart, Mean.js semble une meilleure option que mean.io.

Chris Cinelli
la source
5
Salut Chris, Linnovate fait du travail sur node.js / mongo depuis plus de 3 ans, nous acceptons les demandes de tirage et les idées si vous sentez que quelque chose est mal architecturé et que vous avez une idée constructive de la façon de l'améliorer. Je soupçonne que vous avez connu le changement que nous avons fait dans le projet de base pour prendre en charge l'injection de dépendance, le support de package et le cli moyen, nous avons déplacé le projet d'un passe-partout à un framework et avons eu des "douleurs de croissance".
Lior Kesos
3
Je vous invite à revoir le projet et à revoir le nouveau système de packages qui vous permet d'étendre votre projet à travers des packages moyens. La fonctionnalité a été très bien acceptée par la communauté et est l'un des premiers exemples de packages de pile complète (fournissant des fonctionnalités côté serveur et côté client via un package tout en étendant le projet principal).
Lior Kesos
7
Après avoir comparé le MEAN.io VS MEAN.js, par croissance pure. mean.js a reçu 93 contributeurs en 1 an avec 700 commits tandis que mean.io en a reçu 130 pendant 3 ans et étonnamment bas, 1200 commits. (par des statistiques, prenez-le avec un grain de sel) Evidemment, MEAN.js rattrape son retard très rapidement. Hé, je ne regarde pas encore le code. mais en gros, MEAN.io ressemble à l'Apple qui a perdu son Steve Jobs.
Ezeewei
19

Voici une comparaison côte à côte de plusieurs démarreurs / générateurs d'applications et d'autres technologies, notamment MEAN.js, MEAN.io et cleverstack. Je continue à ajouter des alternatives au fur et à mesure que je trouve du temps et, comme cela arrive, la liste des avantages potentiellement fournis ne cesse de s'allonger. Aujourd'hui, c'est jusqu'à environ 1600. Si quelqu'un veut aider à améliorer sa précision ou son exhaustivité, cliquez sur le lien suivant et faites un questionnaire sur quelque chose que vous savez.

Projet de comparaison des technologies d'application

À partir de cette base de données, le système génère des rapports comme celui-ci:

Rapport de compromis entre MeanJS et MeanIO

Dan Cancro
la source
4
Ceci est un document google assez épique que vous avez mis en place.
honkskillet
J'ai ajouté des pages individuelles au document avec des comparaisons tête à tête. Il y en a un qui compare MEAN.js et MEAN.io
Dan Cancro
1
"Vous avez besoin d'une autorisation" - elle n'est pas accessible.
Mörre
C'est maintenant une coopérative de connaissances. Remplissez ici un questionnaire sur une technologie que vous connaissez et je vous donnerai accès au doc dancancro.com/technology-questionnaires
Dan Cancro
13

La feuille de compromis de démarrage de ma feuille de calcul de comparaison présente des comparaisons individuelles complètes entre chaque générateur. Vous n'avez donc plus besoin de sélectionner de manière distordue de grandes choses à dire sur votre favori.

Voici celui entre générateur-angulaire-fullstack et MEAN.js. Les pourcentages sont des valeurs pour chaque prestation basées sur mes pondérations personnelles, où un générateur parfait serait à 100%

générateur- angulaire- fullstack offre 8% que MEANJS.org ne fait pas

  • 1,9% Tests de bout en bout côté client
  • 0,6% usine
  • 0,5% fournisseur
  • 0,4% SASS
  • 0,4% MOINS
  • Boussole à 0,4%
  • 0,4% décorateur
  • Sous-générateur de point final de 0,4%
  • 0.4% Commentaires
  • 0,3% FontAwesome
  • 0,3% Exécuter le serveur en mode débogage
  • 0,3% Enregistrer les réponses du générateur dans un fichier
  • 0,2% constant
  • 0,2% Script de build de développement: ...... remplacer les deps tiers par des versions CDN
  • Authentification à 0,2% - Cookie
  • Authentification à 0,2% - Jeton Web JSON (JWT)
  • Journalisation côté serveur 0,2%
  • 0.1% Script de construction de développement: exécutez des tâches en parallèle pour l'accélérer
  • 0,1% Script de construction de développement: renomme les fichiers de ressources pour empêcher la mise en cache du navigateur
  • 0.1% Script de construction de développement: exécuter des tests de bout en bout
  • 0,1% Script de construction de production: pré-minification sûre
  • 0.1% Script de génération de production: ajouter des préfixes de fournisseurs CSS
  • 0,1% d'automatisation du déploiement Heroku
  • Valeur 0,1%
  • 0,1% Jade
  • 0,1% Coffeescript
  • 0,1% restriction de route authentifiée côté serveur
  • Version 0,1% SASS de Twitter Bootstrap
  • 0,1% Script de génération de production: compresser les images
  • 0,1% d'automatisation du déploiement d'OpenShift

MeanJS.org. offre 9% que le générateur-angulaire-fullstack ne fait pas

  • 3,7% Groupe d'utilisateurs dédiés / consultables: temps de réponse généralement inférieur à une journée
  • 0,4% Générer des itinéraires
  • 0,4% d'authentification - Oauth
  • 0,4% de configuration
  • 0,4% i18n, localisation
  • 0,4% Profil d'application d'entrée
  • FONCTION 0.3% (aka module, entité, crud-mock)
  • Système de menus à 0,3%
  • 0,3% Options de fabrication de sous-composants
  • Test de 0,3% - côté client
  • 0,3% de performances Javascript
  • 0,3% Script de construction de production: créer des pages statiques pour le référencement
  • 0,2% Installation rapide?
  • 0,2% Groupe d'utilisateurs dédiés / consultables
  • 0.1% Script de build de développement: recharger le fichier de build en cas de changement
  • 0.1% Script de construction de développement: fichiers café compilés en JS
  • Contrôleur 0,1% - côté serveur
  • Modèle 0,1% - côté serveur
  • Route 0,1% - côté serveur
  • Test 0,1% - côté serveur
  • 0,1% Swig
  • 0,1% à l'abri de l'usurpation d'adresse IP
  • 0.1% Script de construction de production: uglification
  • 0,0% Approche des vues: les URL commencent par "#!"
  • 0,0% Approche des services frontaux et des appels ajax: utilise $ resource

Voici celui entre MEAN.io et MEAN.js dans un format plus lisible

<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
la source
13
Je vous suggère de fusionner les deux réponses que vous avez publiées.
CMPSoares du
8

Je suis surpris que personne n'ait mentionné le générateur angulaire fullstack de Yeoman . C'est le générateur de communauté Yeoman numéro un, avec actuellement 1490 étoiles sur la page du générateur par rapport aux 81 étoiles de Mean.js (ce qui n'est certes pas une comparaison équitable étant donné la nouvelle MEANJS). Il semble être activement maintenu et se trouve dans la version 2.05 au moment où j'écris ceci. Contrairement à MEANJS, il n'utilise pas Swig pour les modèles. Il peut être échafaudé avec un passeport intégré.

honkskillet
la source
La réponse de @ SDude l'a mentionné.
CMPSoares
Où? Je ne le vois nulle part dans sa réponse ou ses commentaires.
honkskillet
J'ai peut-être mal compris votre réponse ... Mais SDude a mentionné que "Mean.js utilise des générateurs Yeoman" pour l'échafaudage.
CMPSoares
1
J'avais totalement oublié ça. J'ai en fait appris sur MEAN.js dans les commentaires github de generator-angular-fullstack il y a longtemps ... Je l'ai ajouté à la réponse.
joseldn
2
@CMPSoares ... Il existe plusieurs générateurs Yeoman qui échafaudent les piles MEAN. Angular-Fullstack et Mean.js ne sont que deux des nombreux (sans doute les deux les plus étoffés?). Vous pouvez consulter tous les générateurs de la communauté Yeoman ici ... Générateurs Yeoman
honkskillet