MEAN.js와 MEAN.io의 차이점


335

MEAN JavaScript 스택을 사용하고 싶었지만 자체 웹 사이트 및 설치 방법이있는 두 가지 스택이 있습니다. mean.js 및 mean.io. 그래서 나는 "나는 어느 것을 사용해야합니까?"라는 질문을 스스로에게 내놓았습니다.

이 질문에 답하기 위해이 두 가지의 차이점이 무엇인지 설명 할 수 있는지 커뮤니티에 문의하십시오. 그리고 가능한 장단점? 그들은 나에게 매우 비슷하게 보이기 때문에.


5
MEAN.io와 MEAN.js 중 하나를 선택하는 것은 Meteor가 1.0을 출시하고 훨씬 더 많은 것을 제공 한다는 사실에 대한 요점이 될 수 있습니다 .
Dan Dascalescu

답변:


374

그들은 본질적으로 동일합니다 ... 둘 다 템플릿 화를 위해 swig를 사용하고 테스트, 여권 통합, nodemon 등을 위해 카르마와 모카를 사용합니다.

왜 그렇게 비슷한가요? Mean.js는 Mean.io의 포크이며 두 이니셔티브는 같은 사람에 의해 시작되었습니다 ... Mean.io는 이제 Linnovate 회사의 우산 아래에 있으며 그 사람 (Amos Haviv) 이이 회사와의 협력을 중단 한 것처럼 보입니다. Mean.js를 시작했습니다. 이유에 대한 자세한 내용은 여기를 참조하십시오 .

자 ... 지금 당장 볼 수있는 주요한 차이점은 다음과 같습니다.


비계 및 보일러 생성

Mean.io는 'mean'이라는 사용자 지정 cli 도구를 사용합니다.
Mean.js는 Yeoman Generators를 사용합니다


모듈성

Mean.io는 모듈 내부의 클라이언트 및 서버 파일과 함께보다 독립적 인 노드 패키지 모듈성을 사용합니다.
Mean.js는 프론트 엔드 (각도)에서 모듈을 사용하고 Express와 연결합니다. 그들은 수직 모듈에서도 일하고 ​​있었지만 ...


빌딩 시스템

Mean.io는 최근에 꿀꺽 꿀꺽
움직였습니다.


전개

둘 다 각각의 저장소에 Dockerfile을 가지고 있으며 Mean.io는 Google Compute Engine 에 한 번의 클릭으로 설치되는 반면, Mean.js는 Digital Ocean에 한 번의 클릭으로 설치할 수 있습니다 .


선적 서류 비치

Mean.io에 확인 된 문서가 있음
Mean.js에 대한 훌륭한 문서가 있음


커뮤니티

원래 상용구 이후 Mean.io 더 큰 공동체들이있다
Mean.js 덜 모멘텀하지만 꾸준한 성장을 가지고


개인적으로, 나는 MeanJS의 철학과 개방성을 더 좋아하고 MeanIO의 견인력 및 모듈 / 패키지 접근법을 더 좋아합니다. 둘 다 좋으며 아마도 수정을 끝내므로 둘 중 하나를 잘못 선택하지 않아도됩니다. 시작점과 학습 연습으로 사용하십시오.


대체 "평균"솔루션

MEAN은 "Mongo + Express + Angular + Node"를 스택의 기반으로하는 상용구 / 프레임 워크를 설명 하는 일반적인 방법입니다 ( Valeri Karpov에 의해 공동으로 ). 이 스택에서 다른 명칭을 사용하는 프레임 워크를 찾을 수 있습니다. 그 중 일부는 RAD (Rapid Application Development) 및 SPA 구축에 정말 좋습니다. 예 :

또한 Hackathon Starter 도 있습니다 . 그것은 MEAN ( 'MEN')이 없지만 흔들린다 ..

즐기세요!


5
답변 감사합니다! hackathon-starter는 멋져 보입니다! 내가 찾고있는 것을 더 많이 찾습니다. 또한 대부분 JS이며 인증이 이미 구현되어 있으며 이것이 가장 어려운 부분이라고 생각했습니다 ... 모든 옵션을 모른다는 느낌이 들었습니다 ... :-/ 또한 나중에 나타났습니다. hackathon-starter에는 발판 및 보일러 판 생성기가 있습니까? 그러나 여전히 멋진 답변에 감사드립니다!
CMPSoares

7
천만에요. 네, hackathon-starter에 대해 좋아하는 것은 완전한 계정 관리 및 워크 플로우 (암호, 확인 이메일 등을 잊어 버렸습니다)와 sendgrid, paypal 등과의 통합입니다. MEAN.js 및 MEAN.io에는 부족합니다. 특정 종류의 프로젝트를위한 멋진 스타터입니다.
joseldn

1
각도가 필요없는 경우 프로젝트를 시작하는 것이 좋습니다. 플랫폼의 다른 부분에 대해 걱정하지 마십시오. 대부분 플러그 앤 플레이 노드 패키지를 찾을 수있을 것입니다. 예 : 역할 : gist.github.com/facultymatt/6370903
joseldn

1
REST API를 사용하는 SOA와 함께 사용하는 것이 좋습니다. 일정이 빡빡하면 각도를 낮추십시오. 학습 곡선은 상당히 가파르다 ... 프론트 엔드에는 "좋은"요소이지만 중요한 요소는 아니다. 언제든지 병렬로 학습하여 다음 프로젝트에서 사용하거나 나중에이 프로젝트에 연결할 수 있습니다.
joseldn

2
얘들 아! 나는 hackathon-starter에서 파생 된 것을 발견했지만 매우 훌륭합니다 : Skeleton ! ;-)
CMPSoares 2018 년

66

우선 MEANM ongoDB, E xpress, A ngular 및 N ode.js의 약어입니다.

그것은 일반적으로 는 A "스택"이러한 기술의 사용 결합하여 식별합니다. "와 같은 어떤 그런 일이 없습니다 MEAN 프레임 워크".

리 오르 Kesos 에서 Linnovate는 이 혼란을 이용했다. 그는 도메인 MEAN.io를 구입하고 https://github.com/linnovate/mean에 코드를 넣었습니다.

그들은 다행스럽게도 많은 홍보를 받았으며, MEAN에 관한 기사와 비디오가 점점 많아지고 있습니다. Google "평균 프레임 워크"인 경우 mean.io가 목록에서 첫 번째입니다.

불행히도 https://github.com/linnovate/mean 의 코드 는 제대로 엔지니어링되지 않은 것 같습니다 .

2 월에 나는 함정에 빠졌다. 사이트 mean.io는 눈에 띄는 디자인을 가지고 있었고 Github 저장소는 1000 개 이상의 별을 가졌습니다. 품질에 의문을 제기하는 아이디어는 내 마음을 통과하지 못했습니다. 나는 그것을 실험하기 시작했지만 작동하지 않는 것들과 수수께끼를 푸는 데 너무 오래 걸리지 않았습니다.

커밋 히스토리도 꽤 중요했습니다. 코드와 디렉토리 구조를 여러 번 다시 엔지니어링했으며 새로운 변경 사항을 병합하는 데 너무 많은 시간이 걸립니다.

mean.io 및 mean.js 코드의 장점은 부트 스트랩 통합과 함께 제공된다는 것입니다. 또한 PassportJs를 통한 Facebook, Github, Linkedin 등의 인증 과 MongoDB의 백엔드에있는 모델 (Article)의 예가 AngularJS를 사용하여 프런트 엔드 모델과 동기화됩니다.

Linnovate의 웹 사이트에 따르면 :

Linnovate는 이스라엘에서 가장 오픈 소스 회사이며, 가장 경험이 풍부한 팀이 있으며 최고급 오픈 소스 솔루션 제작에 전념하고 있습니다. Linnovate는 이스라엘에서 유일하게 다음 웹 프로젝트를 구축하고 유지 관리하기 위해 AZ 서비스를 제공하는 회사입니다.

웹 사이트에서 핵심 기술 세트는 Drupal (PHP 컨텐츠 관리 시스템)이며 최근에는 Node.js 및 AngularJS를 사용하기 시작했습니다.

최근에 Mean.js 블로그를 읽고 있었고 상황이 더 명확 해졌습니다. 내 주요 이해는 주요 자바 스크립트 개발자 (Amos Haviv)가 Linnovate가 Mean.js를 떠나 MEAN.io 프로젝트를 떠나 초보 Node.js 개발자 인 사람들이 일을 어떻게해야하는지 이해하는 데 어려움을 겪고 있다는 것을 의미합니다.

미래에는 상황이 바뀔 수 있지만 지금은 mean.io를 사용하지 않는 것이 좋습니다. 빠른 시작을위한 상용구를 찾고 있다면 Mean.js가 mean.io보다 더 나은 옵션 인 것 같습니다.


5
안녕하세요, Linnovate는 3 년 동안 node.js / mongo 작업을 해왔습니다. 무언가가 잘못 설계되었다고 생각하고 개선 방법에 대한 건설적인 아이디어가 있다면 풀 요청과 아이디어를 받아들입니다. 의존성 주입, 패키지 지원 및 평균 cli를 지원하기 위해 핵심 프로젝트에서 우리가 겪은 변화를 경험했다고 생각합니다. 프로젝트를 상용구에서 프레임 워크로 옮기고 약간의 "증가"가있었습니다.
Lior Kesos

3
프로젝트를 다시 방문하고 새로운 패키지 시스템을 검토하여 평균 패키지를 통해 프로젝트를 확장 할 수 있도록 초대합니다. 이 기능은 커뮤니티에서 잘 받아 들여졌으며 풀 스택 패키지의 첫 번째 예 중 하나입니다 (핵심 프로젝트를 확장하면서 패키지를 통해 서버 및 클라이언트 측 기능을 모두 제공함).
Lior Kesos

7
순수 성장으로 MEAN.io VS MEAN.js를 비교 한 후. mean.js는 700 커밋으로 1 년간 93 명의 기고자를 받았으며 mean.io는 3 년 동안 130을 받았으며 놀랍게도 1200 개의 커밋을 받았습니다. (통계만으로 소금 한 덩어리로 섭취하십시오.) MEAN.js는 실제로 빨리 따라 잡고 있습니다. 안녕하세요, 아직 코드를 조사하지 않았습니다. 그러나 기본적으로 MEAN.io는 Steve Jobs를 잃은 Apple처럼 들립니다.
Ezeewei

19

다음은 여러 애플리케이션 스타터 / 제너레이터와 MEAN.js, MEAN.io 및 cleverstack을 포함한 기타 기술을 나란히 비교 한 것입니다. 시간을 찾음에 따라 대안을 계속 추가하고 있으며 그에 따라 잠재적으로 제공되는 혜택 목록도 계속 증가하고 있습니다. 오늘날의 정확성은 약 1600입니다. 누구나 정확성이나 완전성을 향상 시키려면 다음 링크를 클릭하고 알고있는 것에 대한 설문지를 작성하십시오.

앱 기술 프로젝트 비교

이 데이터베이스에서 시스템은 다음과 같은 보고서를 생성합니다.

MeanJS 및 MeanIO 트레이드 오프 보고서


4
이것은 당신이 함께 한 꽤 멋진 구글 문서입니다.
honkskillet

일대일 비교를 통해 개별 페이지를 문서에 추가했습니다. MEAN.js와 MEAN.io를 비교 한 것이 있습니다
Dan Cancro

1
"허가가 필요합니다"-액세스 할 수 없습니다.
Mörre

이제 지식 협동입니다. 알고있는 기술에 대한 설문지를 여기에 작성하면 doc dancancro.com/technology-questionnaires에
Dan Cancro

13

비교 스프레드 시트스타터 트레이드 오프 시트 에는 각 생성기 간의 포괄적 인 일대일 비교가 있습니다. 따라서 더 이상 좋아하는 것에 대해 좋은 말을 왜곡 할 필요가 없습니다.

다음은 generator-angular-fullstack과 MEAN.js 사이의 것입니다. 백분율은 개인 가중치를 기준으로 각 혜택에 대한 값이며, 완벽한 발전기는 100 %입니다.

generator-angular-fullstack은 MEANJS.org가 제공하지 않는 8 %를 제공합니다

  • 1.9 % 클라이언트 측 엔드 투 엔드 테스트
  • 0.6 % 공장
  • 0.5 % 공급자
  • 0.4 % SASS
  • 0.4 % 감소
  • 0.4 % 나침반
  • 0.4 % 데코레이터
  • 0.4 % 엔드 포인트 하위 발전기
  • 0.4 % 댓글
  • 0.3 % 폰트
  • 0.3 % 디버그 모드에서 서버 실행
  • 0.3 % 파일에 생성기 응답 저장
  • 0.2 % 상수
  • 0.2 % 개발 빌드 스크립트 : ...... 타사 뎁을 CDN 버전으로 교체
  • 0.2 % 인증-쿠키
  • 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 버전
  • 0.1 % 프로덕션 빌드 스크립트 : 이미지 압축
  • 0.1 % OpenShift 배포 자동화

MeanJS.org. 제너레이터-풀 스택이 제공하지 않는 9 % 제공

  • 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 % 작살
  • IP 스푸핑으로부터 0.1 % 안전
  • 0.1 % 생산 빌드 스크립트 : 무형 화
  • 0.0 % 조회수에 접근 : URL은 "#!"로 시작합니다
  • 프론트 엔드 서비스 및 ajax 호출에 0.0 % 접근 : $ 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

Yeoman generator angular-fullstack을 언급 한 사람이 아무도 없습니다 . Yeoman 커뮤니티 생성기 중 1 위이며, 현재 발전기 페이지 에 1490 개의 별 과 Mean.js의 81 개의 별이 있습니다 (새로운 MEANJS가 어떻게되는지에 대한 공정한 비교는 아닙니다). 적극적으로 유지 관리되는 것으로 보이며 이것을 작성할 때 버전 2.05에 있습니다. MEANJS와 달리 템플릿에 Swig를 사용하지 않습니다. 여권이 내장 된 발판이 될 수 있습니다.


@SDude의 답변이 언급했습니다.
CMPSoares

어디? 나는 그의 답변이나 의견에서 그것을 볼 수 없습니다.
honkskillet

어쩌면 나는 당신의 대답을 오해했을 것입니다 ... 그러나 SDude는 "Mean.js는 비계를 위해 Yeoman Generators를 사용합니다"라고 언급했습니다.
CMPSoares

1
나는 이것에 대해 완전히 잊었다. 실제로 오래 전에 generator-angular-fullstack의 github 주석에서 MEAN.js에 대해 배웠습니다 ... 답변에 추가했습니다.
joseldn

2
@CMPSoares ... MEAN 스택을 스캐 폴딩하는 여러 Yeoman 생성기가 있습니다. Angular-Fullstack과 Mean.js는 많은 것 중 2 개일 것입니다. 여기 Yeoman 커뮤니티 생성기를 모두 볼 수 있습니다 ... Yeoman Generators
honkskillet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.