Різниця між MEAN.js та MEAN.io


335

Я хотів використовувати MEAN стек JavaScript, але помітив, що є два різних стеки або з власним веб-сайтом, і з методами установки: mean.js і mean.io. Тож я придумав собі таке питання: "Яким я користуюся?".

Тож, щоб відповісти на це запитання, я запитую громаду, чи можете ви пояснити, які відмінності між цими двома? І якщо можливі плюси і мінуси? Тому що вони дуже схожі на мене.


5
Вибір між MEAN.io та MEAN.js може стати суперечливим моментом тепер, коли Meteor випустив 1.0 та пропонує ще багато іншого з коробки .
Дан Даскалеску

Відповіді:


374

Вони по суті однакові ... Вони обидва використовують swig для шаблонування, вони обидва використовують карму та мочу для тестів, інтеграції паспортів, нодемона тощо.

Чому так схоже? Mean.js - це роздрібність Mean.io, і обидві ініціативи були започатковані одним і тим же хлопцем ... Mean.io зараз знаходиться під егідою компанії Linnovate і схоже, що хлопець (Амос Хавів) припинив свою співпрацю з цією компанією і запустив Mean.js. Детальніше про причини ви можете прочитати тут .

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


ПОКОЛЕННЯ СКАФОЛЬДИНГІВ І КОТЕЛІВ

Mean.io використовує користувацький інструмент cli під назвою 'mean'
Mean.js використовує генератори Yeoman


МОДУЛЯРНІСТЬ

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


БУДІВЕЛЬНА СИСТЕМА

Mean.io нещодавно перейшов на gulp
Mean.js використовує grunt


ЗАВДАННЯ

У обох є Dockerfiles у відповідних репостах, а Mean.io має встановлення одним кліком у Google Compute Engine , тоді як Mean.js також може бути розгорнутий із встановленням одним клацанням у Digital Ocean .


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

Середній.io має нормальні документи.
Середній.js має дивовижні документи


СПІЛЬНІСТЬ

Mean.io має більшу спільноту, оскільки це був оригінальний
котловий панель Mean.js, який має менший оберт, але стабільний ріст


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


АЛЬТЕРНАТИВНІ РОЗВ’ЯЗИ "ЗНАЧІ"

MEAN - це загальний спосіб (придуманий Валерієм Карповим ) для опису котлової панелі / рамки, яка приймає "Mongo + Express + Angular + Node" за основу стека. Ви можете знайти рамки з цим стеком, які використовують інші номінали, деякі з них справді хороші для RAD (швидкий розвиток додатків) та побудови SPA. Наприклад:

Ви також маєте Hackathon Starter . У ньому немає A MEAN (це 'MEN'), але він гойдається ..

Весело!


5
Гей, дякую за відповідь! хакатон-стартер виглядає приголомшливо! Це більше схоже на те, що я шукаю. Це також здебільшого JS і вже було впроваджено автентифікацію, і це було те, що я вважав, що це буде найскладнішою частиною ... Я все думав, що я все ще відчуваю, що не знаю всіх моїх варіантів ...: - / Це також з’явилося пізніше, чи має хакатон-пускач генератор лісів та котлопластів? Але все-таки дякую за чудову відповідь!
CMPSoares

7
Ласкаво просимо. Так, те, що мені також подобається в хакатоні-стартері, - це повне управління обліковим записом та робочим процесом (забутий пароль, електронний лист для підтвердження тощо) та інтеграція з 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.

Він загалом ідентифікує комбіноване використання цих технологій у "стеці". Немає такого поняття, як " Структура 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 - провідна компанія із відкритим кодом в Ізраїлі з найдосвідченішою командою в країні, яка присвячена створенню високоякісних рішень з відкритим кодом. Linnovate - єдина компанія в Ізраїлі, яка надає послуги AZ для підприємств з побудови та обслуговування їх наступного веб-проекту.

З веб-сайту виглядає так, що основним набором навичок є Drupal (система управління вмістом PHP), і лише останнім часом вони почали використовувати Node.js та AngularJS.

Останнім часом я читав блог Mean.js і все стало зрозумілішим. Я розумію, що головний розробник Javascript (Amos Haviv) покинув 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 та smartverstack. Я постійно додаю альтернативи, коли знаходжу час, і коли це трапляється, список потенційно наданих пільг також постійно зростає. Сьогодні це близько 1600. Якщо хтось хоче допомогти покращити його точність чи повноту, натисніть наступне посилання та складіть анкету про щось, що ви знаєте.

Порівняйте проект прикладних технологій

З цієї бази даних система генерує такі звіти:

Звіт про компроміс MeanJS проти MeanIO


4
Це досить епічний документ Google, який ви зібрали.
honkskillet

Я додав до документа окремі сторінки, порівнюючи їх головою. Там порівнюється MEAN.js та MEAN.io
Dan Cancro

1
"Вам потрібен дозвіл" - він недоступний.
Мьорр

Зараз це кооператив із знань. Просто заповніть тут анкету про деякі технології, які ви знаєте, і я надаю вам доступ до doc dancancro.com/technology-questionnaires
Dan Cancro

13

Аркуш про виторг для початківців моєї таблиці порівняння містить вичерпні порівняння один на один між кожним генератором. Тож більше не потрібно спотворювати вишневих чудових речей, щоб сказати про свою улюблену.

Ось один між генератором-кутовим-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% Coffeescript
  • 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: використовує $ ресурс

Ось цей варіант між 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

Я здивований, що ніхто не згадав генератор Yeoman кутовий-fullstack . Це номер один генератор Yeoman, на даний момент 1490 зірок на сторінці генератора проти 81 зірки Mean.js (правда, не справедливе порівняння з огляду на те, наскільки новий MEANJS). Схоже, він активно підтримується і знаходиться у версії 2.05, коли я це пишу. На відміну від MEANJS, він не використовує Swig для створення шаблонів. Його можна поставити за допомогою вбудованого паспорта.


@ Відповідь SDude згадувала це.
CMPSoares

Де? Я ніде не бачу його відповіді чи коментарів.
honkskillet

Можливо, я неправильно зрозумів вашу відповідь ... Але SDude зазначив, що "Mean.js використовує генератори Yeoman" для риштування.
CMPSoares

1
Я зовсім забув про це. Я фактично дізнався про MEAN.js в коментарях github про генератор-кутовий-fullstack давно ... Я додав це до відповіді.
joseldn

2
@CMPSoares ... Є декілька генераторів Yeoman, які скелюють MEAN стеки. Angular-Fullstack і Mean.js - це лише два з багатьох (можливо, найбільш м'яких двох?). Ви можете подивитися на всіх генераторів спільноти Yeoman тут ... Yeoman Generators
honkskillet
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.