Sự khác biệt giữa MEAN.js và MEAN.io


335

Tôi muốn sử dụng MEAN JavaScript Stack, nhưng tôi nhận thấy rằng có hai ngăn xếp khác nhau với trang web và phương thức cài đặt của riêng họ: mean.js và mean.io. Vì vậy, tôi đã tự hỏi mình câu hỏi này: "Tôi sử dụng cái nào?".

Vì vậy, để trả lời câu hỏi này, tôi hỏi cộng đồng nếu bạn có thể giải thích sự khác biệt giữa hai điều này là gì? Và nếu có thể ưu và nhược điểm? Bởi vì họ trông rất giống tôi.


5
Việc lựa chọn giữa MEAN.io và MEAN.js có thể là một điểm cần thiết khi mà Meteor đã phát hành 1.0 và cung cấp nhiều hơn thế nữa .
Dan Dascalescu 19/03/2015

Câu trả lời:


374

Về cơ bản chúng giống nhau ... Cả hai đều sử dụng swig để tạo khuôn mẫu, cả hai đều sử dụng nghiệp và mocha cho các bài kiểm tra, tích hợp hộ chiếu, gật đầu, v.v.

Tại sao lại giống nhau như vậy? Mean.js là một nhánh của Mean.io và cả hai sáng kiến ​​đã được bắt đầu bởi cùng một anh chàng ... Mean.io hiện đang ở dưới sự bảo trợ của công ty Linnovate và có vẻ như anh chàng (Amos Haviv) đã ngừng hợp tác với công ty này và đã bắt đầu Mean.js. Bạn có thể đọc thêm về những lý do ở đây .

Bây giờ ... sự khác biệt chính (hoặc ít) bạn có thể thấy ngay bây giờ là:


PHÁT HIỆN VÀ TẠO BOILERPLATE

Mean.io sử dụng một công cụ cli tùy chỉnh có tên 'mean'
Mean.js sử dụng Trình tạo Yeoman


HIỆN ĐẠI

Mean.io sử dụng một mô-đun nút độc lập hơn với các tệp máy khách và máy chủ bên trong các mô-đun.
Mean.js sử dụng các mô-đun chỉ ở mặt trước (dành cho góc) và kết nối chúng với Express. Mặc dù họ cũng đang làm việc trên các mô-đun dọc ...


HỆ THỐNG XÂY DỰNG

Mean.io gần đây đã chuyển sang gulp
Mean.js sử dụng grunt


NỘP

Cả hai đều có Dockerfiles trong các repos tương ứng của họ và Mean.io có cài đặt một lần nhấp trên Google Compute Engine , trong khi Mean.js cũng có thể được triển khai với cài đặt một lần nhấp trên Digital Ocean .


TÀI LIỆU

Mean.io có tài liệu ok
Nghĩa là có tài liệu TUYỆT VỜI


CỘNG ĐỒNG

Mean.io có một cộng đồng lớn hơn kể từ khi đó là bản
tóm tắt gốc của Mean.js có ít động lực hơn nhưng tăng trưởng ổn định


Ở cấp độ cá nhân, tôi thích triết lý và sự cởi mở hơn của MeanJS và hơn nữa là cách tiếp cận lực kéo và mô-đun / gói của MeanIO. Cả hai đều tốt, và bạn có thể sẽ sửa đổi chúng, vì vậy bạn thực sự không thể chọn sai cái này hay cái khác. Chỉ cần lấy chúng làm điểm khởi đầu và như một bài tập học tập.


GIẢI PHÁP GIẢI PHÁP KHÁC

MEAN là một cách chung (được đặt ra bởi Valeri Karpov ) để mô tả một khung / khung lấy "Mongo + Express + Angular + Node" làm cơ sở của ngăn xếp. Bạn có thể tìm thấy các khung với ngăn xếp này sử dụng mệnh giá khác, một số trong số chúng thực sự tốt cho RAD (Phát triển ứng dụng nhanh) và xây dựng các SPA. Ví dụ:

Bạn cũng có Hackathon Starter . Nó không có A của MEAN (đó là 'MEN'), nhưng nó rung chuyển ..

Chúc vui vẻ!


5
Hey cảm ơn bạn đã phản hồi! hackathon-starter trông tuyệt vời! Có vẻ nhiều hơn cho những gì tôi đang tìm kiếm. Nó cũng chủ yếu là JS và có các xác thực đã được triển khai và đó là điều tôi nghĩ sẽ là phần khó nhất ... Tất cả đều nghĩ rằng tôi vẫn cảm thấy mình không biết tất cả các lựa chọn của mình ...: - Ngoài ra, nó cũng xuất hiện sau, hackathon-starter có Trình tạo giàn giáo và nồi hơi không? Nhưng vẫn cảm ơn bạn rất nhiều vì phản ứng tuyệt vời của bạn!
CMPSoares

7
Không có gì. Vâng, điều tôi cũng thích ở hackathon-starter là quản lý tài khoản và quy trình làm việc hoàn chỉnh (quên mật khẩu, email xác nhận, v.v.) và tích hợp với sendgrid, paypal, v.v ... Những điều mà cả MEAN.js và MEAN.io đều thiếu. Nó là một khởi đầu tuyệt vời cho các dự án loại nhất định.
joseldn

1
Đó chắc chắn là một điểm khởi đầu tốt đẹp cho các dự án nếu bạn không cần góc cạnh. Đừng lo lắng về các phần khác của nền tảng. Rất có thể bạn sẽ tìm thấy các gói nút plug & play làm được điều đó .. Tức là: gist.github.com/facultymatt/6370903 cho các vai trò
joseldn

1
Một tình huống tốt sẽ là sử dụng nó với SOA nơi bạn sử dụng API REST. Nếu bạn đang có một lịch trình chặt chẽ, sau đó thả góc. Đường cong học tập khá dốc ... Đó là một "tốt đẹp để có" cho front-end, nhưng không phải là một thành phần quan trọng. Bạn luôn có thể học song song và sử dụng nó trong dự án tiếp theo của bạn hoặc cắm nó sau này cho dự án này.
joseldn

2
Này các cậu! Tôi đã tìm thấy thứ bắt nguồn từ hackathon-starter nhưng cũng rất hay: Skeleton ! ;-)
CMPSoares

66

Trước hết, MEAN là từ viết tắt của M ongoDB, E xpress, A ngular và N ode.js.

thường xác định việc sử dụng kết hợp các công nghệ này trong một "ngăn xếp". Không có thứ gọi là " Khung MEAN".

Lior Kesos tại Linnovate đã tận dụng sự nhầm lẫn này. Anh ấy đã mua tên miền MEAN.io và đặt một số mã tại https://github.com/linnovate/mean

Họ may mắn nhận được rất nhiều sự công khai, và ngày càng có nhiều bài viết và video về MEAN. Khi bạn Google "mean framework", mean.io là người đầu tiên trong danh sách.

Thật không may, mã tại https://github.com/linnovate/mean dường như được thiết kế kém .

Tháng hai tôi đã rơi vào bẫy. Trang web mean.io có thiết kế lôi cuốn và repo Github có hơn 1000 ngôi sao. Ý tưởng đặt câu hỏi về chất lượng thậm chí không đi qua tâm trí tôi. Tôi bắt đầu thử nghiệm với nó nhưng không mất quá nhiều thời gian để vấp ngã những thứ không hoạt động và những đoạn mã khó hiểu.

Lịch sử cam kết cũng khá liên quan. Họ đã thiết kế lại cấu trúc mã và thư mục nhiều lần và việc hợp nhất các thay đổi mới là quá tốn thời gian.

Những điều hay về cả mã mean.io và mean.js là chúng đi kèm với tích hợp Bootstrap. Họ cũng đi kèm với xác thực Facebook, Github, Linkedin, vv thông qua PassportJs và một ví dụ về mô hình (Bài viết) về phần phụ trợ trên MongoDB đồng bộ hóa với mô hình frontend với AngularJS.

Theo trang web của Linnovate:

Linnovate là công ty nguồn mở hàng đầu ở Israel, với đội ngũ giàu kinh nghiệm nhất trong cả nước, chuyên tạo ra các giải pháp nguồn mở cao cấp. Linnovate là công ty duy nhất ở Israel cung cấp dịch vụ AZ cho các doanh nghiệp để xây dựng và duy trì dự án web tiếp theo của họ.

Từ trang web, có vẻ như bộ kỹ năng cốt lõi của họ là Drupal (một hệ thống quản lý nội dung PHP) và chỉ gần đây họ mới bắt đầu sử dụng Node.js và AngularJS.

Gần đây tôi đang đọc Blog Mean.js và mọi thứ trở nên rõ ràng hơn. Hiểu biết của tôi là nhà phát triển Javascript chính (Amos Haviv) đã rời Linnovate để làm việc trên Mean.js rời khỏi dự án MEAN.io với những người mới là nhà phát triển Node.js đang làm chậm hiểu cách mọi thứ hoạt động.

Trong tương lai mọi thứ có thể thay đổi nhưng bây giờ tôi sẽ tránh sử dụng mean.io. Nếu bạn đang tìm kiếm một bản tóm tắt cho một khởi động nhanh thì Mean.js có vẻ là một lựa chọn tốt hơn so với mean.io.


5
Xin chào Chris, Linnovate đã làm việc node.js / mongo trong hơn 3 năm, Chúng tôi chấp nhận các yêu cầu và ý tưởng kéo nếu bạn cảm thấy có gì đó kém kiến ​​trúc và bạn có ý tưởng xây dựng về cách cải thiện nó. Tôi nghi ngờ rằng bạn đã trải qua sự thay đổi mà chúng tôi đã làm trong dự án cốt lõi để hỗ trợ tiêm phụ thuộc, hỗ trợ gói và cli trung bình, chúng tôi đã chuyển dự án từ nồi hơi sang khung và có một số "cơn đau ngày càng tăng".
Lior Kesos

3
Tôi mời bạn xem lại dự án và xem xét hệ thống gói mới cho phép bạn mở rộng dự án của mình thông qua các gói trung bình. Tính năng này đã được cộng đồng chấp nhận rất tốt và là một trong những ví dụ đầu tiên của gói stack đầy đủ (cung cấp cả chức năng phía máy chủ và máy khách thông qua một gói trong khi mở rộng dự án cốt lõi).
Lior Kesos

7
Sau khi so sánh MEAN.io VS MEAN.js, bằng sự tăng trưởng thuần túy. mean.js đã nhận được 93 người đóng góp trong 1 năm với 700 lần cam kết trong khi mean.io nhận được 130 trong 3 năm và mức thấp đáng ngạc nhiên, 1200 lần cam kết. (chỉ bằng số liệu thống kê, hãy dùng nó với một hạt muối) Rõ ràng, MEAN.js đang bắt kịp thực sự nhanh chóng. Này, tôi chưa nhìn vào mã. nhưng về cơ bản, MEAN.io nghe giống như Apple đã mất Steve Jobs.
Ezeewei

19

Dưới đây là so sánh song song của một số trình khởi động / trình tạo ứng dụng và các công nghệ khác bao gồm MEAN.js, MEAN.io và smartstack. Tôi tiếp tục thêm các lựa chọn thay thế khi tôi tìm thấy thời gian và khi điều đó xảy ra, danh sách các lợi ích được cung cấp có khả năng tiếp tục tăng lên. Hôm nay lên tới khoảng 1600. Nếu bất cứ ai muốn giúp cải thiện tính chính xác hoặc hoàn thiện của nó, hãy nhấp vào liên kết tiếp theo và làm một câu hỏi về điều gì đó bạn biết.

So sánh dự án công nghệ ứng dụng

Từ cơ sở dữ liệu này, hệ thống tạo các báo cáo như sau:

Báo cáo đánh đổi giữa MeanJS và MeanIO


4
Đây là một tài liệu google khá hoành tráng mà bạn đã đặt cùng nhau.
honkskillet

Tôi đã thêm các trang riêng lẻ vào tài liệu với các so sánh trực tiếp. Có một so sánh MEAN.js và MEAN.io
Dan Cancro

1
"Bạn cần sự cho phép" - nó không thể truy cập được.
Mörre

Bây giờ là một kiến ​​thức hợp tác. Chỉ cần điền vào một bảng câu hỏi ở đây về một số công nghệ mà bạn biết và tôi sẽ cấp cho bạn quyền truy cập vào tài liệu dancancro.com/tĩ-questionnaires
Dan Cancro

13

Bảng khởi đầu thương mại của bảng tính so sánh của tôi có các so sánh trực tiếp toàn diện giữa mỗi máy phát. Vì vậy, không cần phải méo mó chọn những điều tuyệt vời để nói về yêu thích của bạn.

Đây là cái nằm giữa bộ tạo-angular-fullstack và MEAN.js. Tỷ lệ phần trăm là giá trị cho mỗi lợi ích dựa trên trọng số cá nhân của tôi, trong đó một trình tạo hoàn hảo sẽ là 100%

máy phát điện - angular- fullstack cung cấp 8% mà MEANJS.org không

  • Thử nghiệm đầu cuối từ phía khách hàng 1,9%
  • Nhà máy 0,6%
  • Nhà cung cấp 0,5%
  • SASS 0,4%
  • ÍT 0,4%
  • La bàn 0,4%
  • 0,4% trang trí
  • Bộ phát phụ điểm cuối 0,4%
  • 0,4% Bình luận
  • 0,3% Phông chữ
  • Chạy 0,3% máy chủ ở chế độ gỡ lỗi
  • 0,3% Lưu câu trả lời của trình tạo vào một tệp
  • Hằng số 0,2%
  • Kịch bản xây dựng phát triển 0,2%: ...... thay thế dep bên thứ 3 bằng các phiên bản CDN
  • Xác thực 0,2% - Cookie
  • Xác thực 0,2% - Mã thông báo web JSON (JWT)
  • Ghi nhật ký phía máy chủ 0,2%
  • Kịch bản xây dựng phát triển 0,1%: chạy các tác vụ song song để tăng tốc độ
  • Tập lệnh xây dựng phát triển 0,1%: Đổi tên tệp tài sản để ngăn bộ đệm của trình duyệt
  • Kịch bản xây dựng phát triển 0,1%: chạy thử nghiệm từ đầu đến cuối
  • Kịch bản xây dựng sản xuất 0,1%: tiền khai thác an toàn
  • Tập lệnh xây dựng sản xuất 0,1%: thêm tiền tố nhà cung cấp CSS
  • Tự động triển khai Heroku 0,1%
  • 0,1% giá trị
  • Ngọc 0,1%
  • Báo cáo 0,1%
  • Hạn chế tuyến đường xác thực 0,1%
  • Phiên bản 0,1% SASS của Twitter Bootstrap
  • Kịch bản xây dựng sản xuất 0,1%: nén hình ảnh
  • Tự động triển khai OpenShift 0,1%

NghĩaJS.org. cung cấp 9% mà máy phát điện góc đầy đủ không

  • 3,7% Nhóm người dùng chuyên dụng / có thể tìm kiếm: thời gian phản hồi chủ yếu dưới một ngày
  • Tạo 0,4% tuyến đường
  • Xác thực 0,4% - Oauth
  • Cấu hình 0,4%
  • 0,4% i18n, nội địa hóa
  • Hồ sơ ứng dụng đầu vào 0,4%
  • ĐẶC ĐIỂM 0,3% (còn gọi là mô-đun, thực thể, crud-mock)
  • Hệ thống thực đơn 0,3%
  • 0,3% Tùy chọn để tạo thành phần phụ
  • Kiểm tra 0,3% - phía khách hàng
  • Hiệu suất Javascript 0,3%
  • Kịch bản xây dựng sản xuất 0,3%: tạo các trang tĩnh cho SEO
  • Cài đặt nhanh 0,2%?
  • Nhóm người dùng chuyên dụng / tìm kiếm 0,2%
  • Tập lệnh xây dựng phát triển 0,1%: tải lại tệp xây dựng khi thay đổi
  • Tập lệnh xây dựng phát triển 0,1%: các tệp cà phê được biên dịch sang JS
  • Bộ điều khiển 0,1% - phía máy chủ
  • Mô hình 0,1% - phía máy chủ
  • Tuyến 0,1% - phía máy chủ
  • Kiểm tra 0,1% - phía máy chủ
  • Swig 0,1%
  • An toàn 0,1% từ giả mạo IP
  • Kịch bản xây dựng sản xuất 0,1%: xấu xí
  • Cách tiếp cận 0,0% cho lượt xem: URL bắt đầu bằng "#!"
  • Cách tiếp cận 0,0% đối với các dịch vụ frontend và các cuộc gọi ajax: sử dụng $ resource

Đây là một trong số giữa MEAN.io và MEAN.js ở định dạng dễ đọc hơn

<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
Tôi đề nghị bạn hợp nhất hai câu trả lời bạn đã đăng.
CMPSoares

8

Tôi ngạc nhiên không ai nhắc đến máy phát điện góc cạnh Yeoman . Đây là trình tạo cộng đồng Yeoman số một, hiện có 1490 sao trên trang trình tạo so với 81 sao của Mean.js (phải thừa nhận không phải là một so sánh công bằng khi đưa ra MEANJS mới như thế nào). Nó dường như được duy trì tích cực và nằm trong phiên bản 2.05 khi tôi viết bài này. Không giống như MEANJS, nó không sử dụng Swig để tạo khuôn mẫu. Nó có thể được giàn giáo với hộ chiếu được xây dựng trong.


Câu trả lời của @ SDude đã đề cập đến nó.
CMPSoares

Ở đâu? Tôi không thấy nó ở bất cứ đâu trong câu trả lời hoặc bình luận của anh ấy.
honkskillet

Có thể tôi đã hiểu nhầm câu trả lời của bạn ... Nhưng SDude đã đề cập rằng "Mean.js sử dụng Trình tạo Yeoman" cho giàn giáo.
CMPSoares

1
Tôi hoàn toàn quên mất điều này. Tôi thực sự đã tìm hiểu về MEAN.js trong các nhận xét github của máy phát điện-angular-fullstack từ lâu ... Tôi đã thêm nó vào câu trả lời.
joseldn

2
@CMPSoares ... Có nhiều máy phát Yeoman tạo ra các ngăn xếp MEAN. Angular-Fullstack và Mean.js chỉ là hai trong số nhiều người (được cho là hai người có nhiều xác thịt nhất?). Bạn có thể xem tất cả các trình tạo cộng đồng Yeoman tại đây ... Các trình tạo Yeoman
honkskillet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.