Разница между MEAN.js и MEAN.io

335

Я хотел использовать MEAN JavaScript Stack, но заметил, что есть два разных стека с собственным веб-сайтом и методами установки: mean.js и mean.io. Поэтому я решил задать себе вопрос: «Какой из них я использую?».

Поэтому, чтобы ответить на этот вопрос, я спрашиваю сообщество, не могли бы вы объяснить, в чем разница между этими двумя? А если можно плюсы и минусы? Потому что они очень похожи на меня.

CMPSoares
источник
5
Выбор между MEAN.io и MEAN.js может стать спорным вопросом сейчас, когда Meteor выпустил 1.0 и предлагает намного больше из коробки .
Дан Даскалеску

Ответы:

374

По сути, они одинаковы ... Они оба используют swig для шаблонов, они оба используют карму и мокко для тестов, интеграции паспортов, nodemon и т. Д.

Почему так похоже? Mean.js является ответвлением от Mean.io, и обе инициативы были начаты одним и тем же парнем ... Mean.io сейчас находится под эгидой компании Linnovate и выглядит так, будто парень (Амос Хавив) прекратил сотрудничество с этой компанией и начал Mean.js. Вы можете прочитать больше о причинах здесь .

Теперь ... основные (или маленькие) отличия, которые вы можете видеть прямо сейчас:


ЛЕСА И КОТЕЛЬНАЯ ГЕНЕРАЦИЯ

Mean.io использует пользовательский инструмент cli с именем 'mean'
Mean.js использует Yeoman Generators


Модульность

Mean.io использует более автономную модульность пакетов узлов с файлами клиента и сервера внутри модулей.
Mean.js использует модули только во внешнем интерфейсе (для угловых) и соединяет их с Express. Хотя они работали и над вертикальными модулями ...


СТРОИТЕЛЬНАЯ СИСТЕМА

Mean.io недавно перешел на
gulp Mean.js использует grunt


ВНЕДРЕНИЕ

Оба имеют Dockerfiles в своих соответствующих репозиториях, и Mean.io имеет установку одним нажатием на Google Compute Engine , в то время как Mean.js также может быть развернута установкой в один клик в Digital Ocean .


ДОКУМЕНТАЦИЯ

У Mean.io есть хорошие документы. У
Mean.js есть хорошие документы.


СООБЩЕСТВО

У Mean.io есть большее сообщество, так как оно было оригинальным
образцом. Mean.js имеет меньший импульс, но устойчивый рост


На личном уровне мне больше нравится философия и открытость MeanJS и больше подход MeanIO к тягам и модулям / пакетам. Оба хороши, и вы, вероятно, закончите их изменение, так что вы не ошибетесь, выбирая одно или другое. Просто возьмите их в качестве отправной точки и в качестве учебного упражнения.


АЛЬТЕРНАТИВНЫЕ «СРЕДНИЕ» РЕШЕНИЯ

MEAN - это универсальный способ (придуманный Валерием Карповым ) для описания шаблона / фреймворка, который использует «Mongo + Express + Angular + Node» в качестве основы стека. В этом стеке можно найти фреймворки, использующие другое наименование, некоторые из них действительно хороши для RAD (Rapid Application Development) и построения SPA. Например:

У вас также есть Hackathon Starter . Он не имеет значения (это «мужчины»), но он качается ..

Радоваться, веселиться!

joseldn
источник
5
Эй, спасибо за ответ! хакатон-стартер выглядит потрясающе! Это выглядит больше для того, что я ищу. Это также в основном JS, в котором уже реализованы аутентификации, и я подумал, что это будет самая трудная часть ... Все думали, что я все еще чувствую, что не знаю всех своих вариантов ...: / / Это также появилось позже, есть ли у хакатона-стартера генератор строительных лесов и котельной? Но все же Большое спасибо за ваш потрясающий ответ!
CMPSoares
7
Пожалуйста. Да, то, что мне также нравится в hackathon-starter, - это полное управление учетными записями и рабочий процесс (забытый пароль, электронное письмо с подтверждением и т. Д.) И интеграция с sendgrid, paypal и т. Д. ... Вещи, которые отсутствуют в MEAN.js и MEAN.io. Это крутой стартер для определенных добрых проектов.
Joseldn
1
Это, безусловно, хорошая отправная точка для проектов, если вам не нужен угловой. Не беспокойтесь о других частях платформы. Скорее всего, вы найдете пакеты узлов plug & play, которые делают именно это .. То есть: gist.github.com/facultymatt/6370903 для ролей
joseldn
1
Хорошая ситуация - использовать его с SOA, где вы используете REST API. Если вы находитесь в сжатые сроки, то падение под углом. Кривая обучения довольно крутая ... Это неплохо для внешнего интерфейса, но не является критически важным компонентом. Вы всегда можете изучить его параллельно и использовать в своем следующем проекте или подключить его позже к этому.
Joseldn
2
Привет ребят! Я нашел кое-что, полученное из хакатона-стартера, но также очень хорошее: Скелет ! ;-)
CMPSoares
66

Прежде всего, MEAN - это сокращение от M ongoDB, E xpress, A ngular и N ode.js.

Он в общем определяет совокупность используемых этих технологий в «стеке». Там нет такого понятия , как « The MEAN рамки».

Лиор Кесос в Линновате воспользовался этой путаницей. Он купил домен MEAN.io и поместил код по адресу https://github.com/linnovate/mean.

К счастью, они получили много рекламы, и все больше и больше статей и видео о MEAN. Когда вы Google "означаете каркас", mean.io является первым в списке.

К сожалению, код на https://github.com/linnovate/mean кажется плохо спроектированным .

В феврале я сам попал в ловушку. У сайта mean.io был броский дизайн, а в репозитории Github было более 1000 звезд. Идея подвергнуть сомнению качество даже не пришла мне в голову. Я начал экспериментировать с ним, но это не заняло много времени, чтобы наткнуться на вещи, которые не работали, и озадачивать части кода.

История коммитов тоже была довольно волнующей. Они несколько раз переделывали код и структуру каталогов, и объединение новых изменений занимает слишком много времени.

Что хорошо в коде mean.io и mean.js, так это то, что они поставляются с интеграцией Bootstrap. Они также поставляются с аутентификацией Facebook, Github, Linkedin и т. Д. Через PassportJs и пример модели (Article) в бэкэнде на MongoDB, который синхронизируется с моделью внешнего интерфейса с AngularJS.

По данным сайта Линновате:

Linnovate - ведущая израильская компания с открытым исходным кодом, с самой опытной командой в стране, занимающейся созданием высококачественных решений с открытым исходным кодом. Linnovate - единственная компания в Израиле, которая предоставляет предприятиям AZ услуги для создания и поддержки их следующего веб-проекта.

С веб-сайта кажется, что их основной набор навыков - Drupal (система управления контентом PHP), и только недавно они начали использовать Node.js и AngularJS.

В последнее время я читал блог Mean.js, и все стало яснее. Насколько я понимаю, основной разработчик Javascript (Амос Хавив) оставил Linnovate для работы над Mean.js, оставив проект MEAN.io людям, которые являются начинающими разработчиками Node.js и которые медленнее понимают, как все должно работать.

В будущем все может измениться, но пока я бы избегал использования mean.io. Если вы ищете шаблон для быстрого запуска, Mean.js кажется лучшим вариантом, чем mean.io.

Крис Синелли
источник
5
Привет, Крис! Linnovate работает над node.js / mongo уже более 3 лет. Мы принимаем запросы и идеи по запросу, если вы чувствуете, что что-то плохо спроектировано, и у вас есть конструктивное представление о том, как его улучшить. Я подозреваю, что вы испытали сдвиг, который мы сделали в основном проекте для поддержки внедрения зависимостей, поддержки пакетов и среднего значения, мы переместили проект из стандартного в платформу и столкнулись с некоторыми "проблемами роста".
Лиор Кесос
3
Я приглашаю вас вернуться к проекту и ознакомиться с новой системой пакетов, которая позволяет расширить ваш проект с помощью средних пакетов. Эта функция была хорошо принята сообществом и является одним из первых примеров пакетов с полным стеком (обеспечивающих функциональность как на стороне сервера, так и на стороне клиента через пакет при расширении основного проекта).
Лиор Кесос
7
После сравнения MEAN.io VS MEAN.js по чистому росту. Mean.js получил 93 участника за 1 год с 700 коммитами, в то время как mean.io получил 130 за 3 года и удивительно низко, 1200 коммитов. (просто статистикой, возьмите это с крошкой соли) Очевидно, MEAN.js очень быстро догоняет. Эй, я еще не изучаю код. но в основном MEAN.io звучит как Apple, потерявший Стива Джобса.
Ezeewei
19

Ниже приведено сравнение нескольких стартеров / генераторов приложений и других технологий, включая MEAN.js, MEAN.io и cleverstack. Я продолжаю добавлять альтернативы, поскольку нахожу время, и, как это происходит, список потенциально предоставляемых преимуществ также продолжает расти. Сегодня это около 1600. Если кто-то хочет помочь улучшить его точность или полноту, нажмите на следующую ссылку и заполните анкету о чем-то, что вы знаете.

Сравните приложение технологий проекта

Из этой базы данных система генерирует отчеты, подобные следующим:

MeanJS против компромисса MeanIO

Дэн Канкро
источник
4
Это довольно эпичный документ Google, который вы собрали.
Honkskillet
Я добавил отдельные страницы в документ, сравнивая их лицом к лицу. Есть один, сравнивающий MEAN.js и MEAN.io
Дэн
1
«Вам нужно разрешение» - оно недоступно.
Мёрре
Теперь это кооператив знаний. Просто заполните здесь анкету о какой-то технологии, которую вы знаете, и я предоставлю вам доступ к документу dancancro.com/technology-questionnaires
Дан
13

На странице «Начальные компромиссы» в моей электронной таблице сравнения содержатся подробные сравнения один на один для каждого генератора. Так что больше не нужно искажать вишенку, чтобы говорить о своих любимых.

Вот тот, который находится между generator-angular-fullstack и MEAN.js. Проценты - это значения для каждой выгоды, основанные на моих личных весах, где идеальный генератор будет 100%

генератор-угловой-fullstack предлагает 8%, что MEANJS.org не делает

  • Сквозные тесты на стороне клиента 1.9%
  • 0,6% завод
  • 0,5% провайдер
  • 0,4% SASS
  • 0,4% меньше
  • 0,4% компас
  • 0,4% декоратор
  • 0,4% конечный генератор
  • 0,4% комментариев
  • 0,3% FontAwesome
  • 0,3% Запустить сервер в режиме отладки
  • 0.3% Сохранить генератор ответов в файл
  • Постоянная 0,2%
  • 0.2% Сценарий разработки: ...... замените сторонние приложения на версии CDN
  • Аутентификация на 0,2% - Cookie
  • Аутентификация на 0,2% - веб-токен JSON (JWT)
  • 0,2% логирование на стороне сервера
  • 0,1% сценарий разработки сборки: запускать задачи параллельно, чтобы ускорить его
  • 0,1% сценарий разработки: переименовывает файлы ресурсов для предотвращения кэширования в браузере
  • 0,1% сценарий разработки сборки: от начала до конца тесты
  • 0,1% сценарий сборки продукта: безопасная предварительная минификация
  • 0,1% сценарий производственной сборки: добавьте префиксы поставщика CSS
  • 0,1% автоматизация развертывания Heroku
  • Значение 0,1%
  • 0,1% нефрита
  • 0,1% кофе
  • 0,1% ограничение аутентификации на стороне сервера
  • 0,1% SASS версия Twitter Bootstrap
  • 0,1% скрипт производственной сборки: сжатие изображений
  • 0,1% автоматизации развертывания OpenShift

MeanJS.org. предлагает 9%, что не генератор-угловой-fullstack

  • 3.7% Выделенная / доступная для поиска группа пользователей: время ответа, в основном, меньше одного дня
  • 0,4% Генерация маршрутов
  • Аутентификация 0,4% - Oauth
  • Конфигурация 0,4%
  • 0,4% i18n, локализация
  • 0,4% Входной профиль приложения
  • 0,3% ОСОБЕННОСТИ (он же модуль, сущность, грубый макет)
  • 0,3% Система меню
  • 0,3% Варианты изготовления подкомпонентов
  • 0,3% тест - на стороне клиента
  • 0,3% производительности Javascript
  • 0.3% Скрипт производственной сборки: сделать статические страницы для SEO
  • 0,2% Быстрая установка?
  • 0,2% выделенная / доступная для поиска группа пользователей
  • 0,1% сценарий разработки сборки: перезагрузите файл сборки после изменения
  • 0,1% сценарий разработки сборки: файлы кофе, скомпилированные в JS
  • 0,1% контроллер - на стороне сервера
  • 0,1% модель - серверная часть
  • 0,1% маршрут - на стороне сервера
  • 0,1% тест - серверная часть
  • 0,1% Swig
  • 0,1% от IP-спуфинга
  • 0,1% скрипт производственной сборки: углификация
  • 0.0% подход к просмотру: URL начинаются с "#!"
  • 0.0% Подход к внешним сервисам и вызовам ajax: использует $ resource

Вот то, что между MEAN.io и MEAN.js в более читаемом формате

<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
Я предлагаю вам объединить два ответа, которые вы опубликовали.
CMPSoares
8

Я удивлен, что никто не упомянул генератор Yoman angular-fullstack . Это генератор номер один в Йомане, в настоящее время 1490 звезд на странице генератора сравниваются с 81 звездой Mean.js (по общему признанию, это несправедливое сравнение с учетом того, каков новый MEANJS). Это, кажется, активно поддерживается и находится в версии 2.05, поскольку я пишу это. В отличие от MEANJS, он не использует Swig для шаблонов. Это может быть леса с встроенным паспортом.

honkskillet
источник
Ответ @ SDude упомянул об этом.
CMPSoares
Куда? Я не вижу этого нигде в его ответе или комментариях.
Honkskillet
Может быть, я неправильно понял ваш ответ ... Но SDude упомянул, что "Mean.js использует Yeoman Generators" для строительных лесов.
CMPSoares
1
Я полностью забыл об этом. Я действительно узнал о MEAN.js в github-комментариях generator-angular-fullstack очень давно ... Я добавил его в ответ.
Йоселдн
2
@CMPSoares ... Есть несколько генераторов Yeoman, которые строят средние стеки. Angular-Fullstack и Mean.js - всего лишь два из многих (возможно, наиболее удачных из двух?). Вы можете посмотреть на всех генераторов
Йоменского