Diferença entre MEAN.js e MEAN.io

335

Eu queria usar a pilha JavaScript do MEAN, mas notei que existem duas pilhas diferentes com seu próprio site e métodos de instalação: mean.js e mean.io. Então eu me perguntei: "Qual deles eu uso?".

Então, para responder a essa pergunta, pergunto à comunidade se você poderia explicar quais são as diferenças entre esses dois? E se possível prós e contras? Porque eles se parecem muito comigo.

CMPSoares
fonte
5
Escolher entre MEAN.io e MEAN.js pode ser um ponto discutível agora que o Meteor lançou a 1.0 e oferece muito mais fora da caixa .
Dan Dascalescu 19/03/2015

Respostas:

374

Eles são essencialmente os mesmos ... Ambos usam swig para modelagem, ambos usam karma e mocha para testes, integração de passaporte, nodemon, etc.

Por que tão parecido? Mean.js é um fork do Mean.io e as duas iniciativas foram iniciadas pelo mesmo cara ... Mean.io agora está sob a égide da empresa Linnovate e parece que o cara (Amos Haviv) interrompeu sua colaboração com esta empresa e iniciado Mean.js. Você pode ler mais sobre os motivos aqui .

Agora ... as principais (ou pequenas) diferenças que você pode ver agora são:


GERAÇÃO DE ARGAMASSA E CALIBRAGEM

Mean.io usa uma ferramenta CLI personalizada chamada 'mean'
Mean.js usa Yeoman Generators


MODULARIDADE

O Mean.io usa uma modularidade de pacotes de nós mais independentes com os arquivos do cliente e do servidor dentro dos módulos.
O Mean.js usa módulos apenas no front-end (para angulares) e os conecta ao Express. Embora eles estivessem trabalhando em módulos verticais também ...


SISTEMA DE CONSTRUÇÃO

Mean.io mudou-se recentemente para gulp
Mean.js usa grunhido


DESDOBRAMENTO, DESENVOLVIMENTO

Ambos têm Dockerfiles em seus respectivos repositórios e Mean.io possui instalação com um clique no Google Compute Engine , enquanto o Mean.js também pode ser implantado com a instalação com um clique no Digital Ocean .


DOCUMENTAÇÃO

Mean.io tem documentos ok
Mean.js tem documentos INCRÍVEIS


COMUNIDADE

Mean.io tem uma comunidade maior desde que era o clichê original
Mean.js tem menos impulso, mas crescimento constante


No nível pessoal, gosto mais da filosofia e abertura do MeanJS e mais da abordagem de tração e módulos / pacotes do MeanIO. Ambos são legais, e você provavelmente acabará modificando-os; portanto, não pode dar errado ao escolher um ou outro. Apenas tome-os como ponto de partida e como um exercício de aprendizado.


SOLUÇÕES ALTERNATIVAS DE “MEIOS”

MEAN é uma maneira genérica (criada por Valeri Karpov ) para descrever um clichê / estrutura que usa "Mongo + Express + Angular + Nó" como base da pilha. Você pode encontrar estruturas com essa pilha que usam outras denominações, algumas delas realmente boas para o RAD (Rapid Application Development) e a criação de SPAs. Por exemplo:

Você também tem o Hackathon Starter . Ele não possui A de MEAN (é 'MEN'), mas é ótimo ..

Diverta-se!

joseldn
fonte
5
Ei, obrigado pela resposta! hackathon-starter parece incrível! Parece mais o que estou procurando. Também é principalmente JS e tem as autenticações já implementadas, e foi isso que pensei que seria a parte mais difícil ... Todo o pensamento ainda me parece que não conheço todas as minhas opções ...: - / Também surgiu mais tarde, O hackathon-starter possui um gerador de andaimes e de caldeira? Ainda assim, muito obrigado pela sua incrível resposta!
precisa saber é o seguinte
7
De nada. Sim, o que eu também gosto no hackathon-starter é o gerenciamento completo da conta e o fluxo de trabalho (esqueci a senha, o email de confirmação, etc.) e a integração com o sendgrid, paypal, etc ... Coisas que MEAN.js e MEAN.io não possuem. É um iniciante legal para certos tipos de projetos.
precisa saber é o seguinte
11
É certamente um bom ponto de partida para projetos, se você não precisar de angular. Não se preocupe com as outras partes da plataforma. Provavelmente, você encontrará pacotes de nós plug & play que fazem exatamente isso. Ou seja: gist.github.com/facultymatt/6370903 para funções
joseldn
11
Uma boa situação seria usá-lo com SOA onde você consome uma API REST. Se você estiver com um cronograma apertado, abaixe o ângulo. A curva de aprendizado é bastante íngreme ... É um "bom ter" para front-end, mas não é um componente crítico. Você sempre pode aprender em paralelo e usá-lo em seu próximo projeto ou conectá-lo posteriormente a este.
joseldn
2
Ei pessoal! Eu encontrei algo que derivava do hackathon-starter, mas muito bom também: Skeleton ! ;-)
CMPSoares
66

Primeiro, MEAN é um acrônimo para M ongoDB, E xpress, A ngular e N ode.js.

Ele identifica genericamente o uso combinado dessas tecnologias em uma "pilha". Não existe algo como " A estrutura do MEAN".

Lior Kesos em Linnovate aproveitou essa confusão. Ele comprou o domínio MEAN.io e colocou um código em https://github.com/linnovate/mean

Felizmente, eles receberam muita publicidade e existem mais e mais artigos e vídeos sobre o MEAN. Quando você Google "significa estrutura", mean.io é o primeiro da lista.

Infelizmente, o código em https://github.com/linnovate/mean parece mal projetado .

Em fevereiro, eu mesma caí na armadilha. O site mean.io tinha um design atraente e o repositório do Github tinha mais de 1000 estrelas. A ideia de questionar a qualidade nem me passou pela cabeça. Comecei a experimentar, mas não demorou muito para encontrar coisas que não estavam funcionando e peças de código intrigantes.

O histórico de consolidação também foi bastante preocupante. Eles reprojetaram o código e a estrutura de diretórios várias vezes e a fusão das novas alterações consome muito tempo.

O bom dos códigos mean.io e mean.js é que eles vêm com a integração do Bootstrap. Eles também vêm com a autenticação do Facebook, Github, Linkedin etc. por meio do PassportJs e um exemplo de modelo (Artigo) no back-end no MongoDB que sincroniza com o modelo de front-end com o AngularJS.

De acordo com o site da Linnovate:

A Linnovate é a empresa líder de código aberto em Israel, com a equipe mais experiente do país, dedicada à criação de soluções high-end de código aberto. A Linnovate é a única empresa em Israel que fornece serviços de AZ para empresas para construção e manutenção de seu próximo projeto na web.

No site, parece que o principal conjunto de habilidades é o Drupal (um sistema de gerenciamento de conteúdo PHP) e só recentemente eles começaram a usar o Node.js e o AngularJS.

Ultimamente, eu estava lendo o Blog Mean.js e as coisas ficaram mais claras. Meu entendimento é que o principal desenvolvedor de Javascript (Amos Haviv) deixou o Linnovate para trabalhar no Mean.js, deixando o projeto MEAN.io com pessoas iniciantes no Node.js. que estão atrasando o entendimento de como as coisas devem funcionar.

No futuro, as coisas podem mudar, mas por enquanto eu evitaria usar o mean.io. Se você está procurando um boilerplate para um início rápido, o Mean.js parece uma opção melhor que o mean.io.

Chris Cinelli
fonte
5
Olá, Chris, a Linnovate faz o trabalho node.js / mongo há mais de 3 anos. Aceitamos solicitações e idéias de recebimento se você sentir que algo está mal arquitetado e se tem uma ideia construtiva de como melhorá-lo. Suspeito que você tenha experimentado a mudança que fizemos no projeto principal para dar suporte à injeção de dependência, suporte a pacotes e cli médio, estivemos movendo o projeto de um clichê para um framework e tivemos algumas "dores de crescimento".
Lior Kesos
3
Convido você a revisitar o projeto e revisar o novo sistema de pacotes que permite estender seu projeto através de pacotes médios. O recurso foi muito bem aceito pela comunidade e é um dos primeiros exemplos de pacotes de pilha cheia (fornecendo funcionalidade do lado do servidor e do cliente por meio de um pacote enquanto estende o projeto principal).
Lior Kesos
7
Depois de comparar o MEAN.io VS MEAN.js, por puro crescimento. mean.js recebeu 93 colaboradores em 1 ano com 700 confirmações, enquanto o mean.io recebeu 130 por 3 anos e, surpreendentemente baixo, 1200 confirmações. (apenas por estatísticas, tome com um pouco de sal) Obviamente, o MEAN.js está alcançando rapidamente. Ei, ainda não estou pesquisando o código. mas, basicamente, o MEAN.io parece a Apple que perdeu o Steve Jobs.
Ezeewei
19

Aqui está uma comparação lado a lado de vários iniciadores / geradores de aplicativos e outras tecnologias, incluindo MEAN.js, MEAN.io e cleverstack. Continuo adicionando alternativas à medida que encontro tempo e, à medida que isso acontece, a lista de benefícios potencialmente fornecidos também cresce. Hoje, são cerca de 1600. Se alguém quiser ajudar a melhorar sua precisão ou integridade, clique no próximo link e faça um questionário sobre algo que você conhece.

Comparar projeto de tecnologias de aplicativos

A partir desse banco de dados, o sistema gera relatórios como o seguinte:

Relatório de trade-off MeanJS x MeanIO

Dan Cancro
fonte
4
Este é um documento épico do google que você montou.
honkskillet
Adicionei páginas individuais ao documento com comparações diretas. Existe um comparando MEAN.js e MEAN.io
Dan Cancro
11
"Você precisa de permissão" - não é acessível.
Morre
Agora é uma cooperativa de conhecimento. Basta preencher um questionário aqui sobre algumas tecnologias que você sabe e eu vou conceder-lhe o acesso ao doc dancancro.com/technology-questionnaires
Dan Cancro
13

A planilha Starter Trade-offs da minha planilha de comparação possui comparações abrangentes individuais entre cada gerador. Portanto, não há mais necessidade de escolher de maneira distorcida grandes coisas a dizer sobre o seu favorito.

Aqui está aquele entre gerador-angular-fullstack e MEAN.js. As porcentagens são valores para cada benefício com base em minhas ponderações pessoais, em que um gerador perfeito seria 100%

gerador - angular - fullstack oferece 8% que o MEANJS.org não oferece

  • 1,9% de testes de ponta a ponta do cliente
  • 0,6% de fábrica
  • 0,5% provedor
  • 0,4% de SASS
  • 0,4% MENOS
  • 0.4% Compass
  • 0,4% decorador
  • Subgerador de ponto final de 0,4%
  • 0,4% Comentários
  • 0,3% Fonte
  • 0,3% de servidor executado no modo de depuração
  • 0,3% Salva as respostas do gerador em um arquivo
  • 0,2% constante
  • Script de construção de desenvolvimento de 0,2%: ...... substitua deps de terceiros por versões da CDN
  • 0,2% de autenticação - Cookie
  • 0,2% de autenticação - JSON Web Token (JWT)
  • 0,2% de log do lado do servidor
  • 0.1% Script de desenvolvimento: execute tarefas em paralelo para acelerar
  • Script de construção de desenvolvimento de 0,1%: renomeia arquivos de ativos para impedir o cache do navegador
  • Script de construção de desenvolvimento de 0,1%: execute testes de ponta a ponta
  • Script de construção de produção de 0,1%: pré-minificação segura
  • Script de construção de produção de 0,1%: adicione prefixos de fornecedor CSS
  • 0,1% de automação de implantação Heroku
  • 0,1% value
  • 0,1% Jade
  • 0,1% Coffeescript
  • 0,1% de restrição de rota autenticada no servidor
  • Versão SASS 0,1% do Twitter Bootstrap
  • Script de construção de produção de 0,1%: comprimir imagens
  • 0,1% de automação de implantação do OpenShift

MeanJS.org. oferece 9% que o gerador-angular-fullstack não

  • 3,7% Grupo de usuários dedicados / pesquisáveis: tempo de resposta em menos de um dia
  • 0,4% Gerar rotas
  • 0,4% de autenticação - Oauth
  • 0,4% de configuração
  • 0,4% i18n, localização
  • 0,4% Perfil de aplicação de entrada
  • RECURSO DE 0.3% (aka módulo, entidade, crud-mock)
  • 0,3% sistema de menus
  • 0,3% Opções para criar subcomponentes
  • Teste de 0,3% - lado do cliente
  • 0,3% desempenho Javascript
  • Script de criação de produção de 0,3%: crie páginas estáticas para SEO
  • 0,2% Instalação rápida?
  • 0,2% Grupo de usuários dedicados / pesquisáveis
  • 0,1% Script de desenvolvimento de desenvolvimento: recarregar o arquivo de desenvolvimento após a alteração
  • 0.1% Script de construção do desenvolvimento: arquivos de café compilados para JS
  • Controlador de 0,1% - lado do servidor
  • Modelo 0,1% - lado do servidor
  • Rota de 0,1% - lado do servidor
  • Teste de 0,1% - lado do servidor
  • 0,1% Swig
  • 0,1% seguro de falsificação de IP
  • Script de construção de produção de 0,1%: uglificação
  • 0,0% Abordagem das visualizações: os URLs começam com "#!"
  • Abordagem de 0,0% para serviços de front-end e chamadas ajax: usa $ resource

Aqui está aquele entre o MEAN.io e o MEAN.js em um formato mais legível

<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
fonte
13
Eu sugiro que você mescle as duas respostas que você postou.
CMPSoares
8

Estou surpreso que ninguém tenha mencionado o gerador Yeoman angular-fullstack . É o gerador comunitário número um da Yeoman, com atualmente 1490 estrelas na página do gerador versus as 81 estrelas do Mean.js. (reconhecidamente não é uma comparação justa, considerando o quão novo é o MEANJS). Parece ser mantido ativamente e está na versão 2.05 enquanto escrevo isso. Ao contrário de MEANJS, ele não usa Swig para modelagem. Pode ser montado com o passaporte incorporado.

honkskillet
fonte
A resposta do @ SDude mencionou isso.
CMPSoares
Onde? Não vejo isso em nenhum lugar na resposta ou nos comentários dele.
honkskillet
Talvez eu tenha entendido mal a sua resposta ... Mas o SDude mencionou que "Mean.js usa Yeoman Generators" para andaimes.
CMPSoares
11
Eu esqueci completamente disso. Na verdade, eu aprendi sobre o MEAN.js nos comentários do github de generator-angular-fullstack há muito tempo ... eu adicionei à resposta.
joseldn
2
@ CMPSoares ... Existem vários geradores Yeoman que montam pilhas MEAN. Angular-Fullstack e Mean.js são apenas dois de muitos (sem dúvida os dois mais detalhados?). Você pode olhar para todos os geradores Yeoman comunidade aqui ... Geradores Yeoman
honkskillet