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.


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!


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.


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


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>


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.