因此,为了回答这个问题,我问社区是否可以解释这两者之间的区别?以及是否有利弊?因为它们看起来和我非常相似。
#1 楼
它们本质上是相同的...他们都使用swig进行模板制作,都使用业力和摩卡咖啡进行测试,护照集成,nodemon等。为什么如此相似? Mean.js是Mean.io的一个分支,这两个计划都是由同一个人发起的... Mean.io现在处于Linnovate公司的保护下,看起来这个人(Amos Haviv)停止了与该公司的合作,启动Mean.js。您可以在此处详细了解原因。
现在...您现在可以看到的主要(或很小)区别是:
脚手架和锅炉生成
Mean.io使用名为'mean'的自定义cli工具。
Mean.js使用Yeoman Generators
模块化
Mean.io使用更自包含的节点程序包具有模块内部的客户端和服务器文件的模块化。尽管他们也正在开发垂直模块...
构建系统
Mean.io最近已迁移到gulp
Mean.js使用grunt
部署
两者都在各自的存储库中都有Dockerfile,Mean.io在Google Compute Engine上具有一键安装,而Mean.js也可以在Windows上一键安装数字海洋。 br />Mean.io具有更大的社区,因为它是原始样板文件。
Mean.js的动力较小,但稳定增长
在个人层面上,我更喜欢MeanJS的理念和开放性,以及MeanIO的吸引力和模块/封装方法。两者都很不错,而且您可能最终会修改它们,因此选择一个或另一个确实不会出错。只需将它们作为起点并作为学习练习。
替代的“均值”解决方案
MEAN是一种通用方法(由Valeri Karpov提出),用于描述以“ Mongo + Express + Angular + Node”作为堆栈基础的样板/框架。您可以在此堆栈中找到使用其他面额的框架,其中一些框架对于RAD(快速应用程序开发)和构建SPA非常有用。例如:
流星。现在有了正式的Angular支持,代表了一个出色的MEAN堆栈
StrongLoop回送(主要的Node.js核心贡献者和Express维护者)
Generator Angular Fullstack
Sails.js
Cleverstack
已部署等(还有更多)
您还拥有Hackathon Starter。它没有A MEAN(它是'MEN'),但是很摇晃。
评论
嘿,谢谢您的回应! hackathon-starter看起来很棒!它看起来更符合我的需求。它也主要是JS并且已经实现了身份验证,这就是我认为将是最困难的部分...所有以为我仍然觉得我不知道我的所有选择...:-/另外, hackathon-starter是否具有脚手架和样板生成器?但是,仍然非常感谢您的出色答复!
–CMPSoares
2014年4月22日0:08
别客气。是的,我也很喜欢hackathon-starter,它是完整的帐户管理和工作流程(忘记密码,确认电子邮件等)以及与sendgrid,paypal等的集成……MEAN.js和MEAN.io都缺少这些东西。对于某些类型的项目,它是一个不错的启动器。
–sdude
2014年4月22日在0:16
如果您不需要角度介绍,对于项目来说,这当然是一个不错的起点。不用担心平台的其他部分。您最有可能会找到可以做到这一点的即插即用节点程序包。即:gist.github.com/facultymatt/6370903
–sdude
2014年4月22日0:30
一个好的情况是将其与使用REST API的SOA一起使用。如果您的日程安排很紧,请放下角度。学习曲线非常陡峭...对于前端来说这是“不错的”,但不是关键组成部分。您总是可以并行学习它,并在下一个项目中使用它,或者稍后将其插入该项目。
–sdude
2014年4月22日在0:42
大家好!我发现了一些来自黑客马拉松启动程序的东西,但也非常好:骨架! ;-)
–CMPSoares
2014年6月10日在2:42
#2 楼
首先,MEAN是MongoDB,Express,Angular和Node.js的首字母缩写。它通常标识“堆栈”中这些技术的组合使用。没有这样的东西“ MEAN框架”。
Linnovate的Lior Kesos利用了这种混乱。他购买了MEAN.io网域,并在https://github.com/linnovate/mean
放了一些代码。幸运的是,他们得到了很多宣传,并且这三篇关于MEAN的文章和视频越来越多。当您使用Google“平均值框架”时,mean.io是列表中的第一个。
2月,我本人陷入了陷阱。网站mean.io的设计引人注目,Github回购网站上有1000颗星。对质量提出质疑的想法甚至都没有想到。我开始尝试它,但是花了很短的时间才偶然发现不起作用的事情,并使代码感到困惑。
提交历史也很令人担忧。他们多次重新设计了代码和目录结构,并且合并新的更改太耗时。 。他们还通过PassportJs进行了Facebook,Github,Linkedin等身份验证,并在MongoDB的后端上与AngularJS的前端模型同步的模型示例(文章)。 br />
Linnovate是以色列领先的开源公司,在以色列拥有最富有经验的团队,致力于创建高端开源解决方案。 Linnovate是以色列唯一一家为企业的建设和维护提供A-Z服务的公司
下一个Web项目。
从网站上看,他们的核心技能是Drupal(一种PHP内容管理系统),直到最近他们才开始使用Node.js和AngularJS。
最近我在阅读Mean.js博客,事情变得更清楚了。我的理解是,主要的Java语言开发人员(Amos Haviv)离开Linnovate从事Mean.js的工作,离开了MEAN.io项目,他们是Node.js新手开发人员,他们正在缓慢地理解事物的工作原理。 br />将来情况可能会发生变化,但现在我会避免使用mean.io。如果您正在寻找快速入门的样板,那么Mean.js似乎比mean.io更好。
评论
克里斯,您好,Linnovate从事node.js / mongo的工作已经超过3年了,如果您觉得某些东西的架构不佳,并且对如何进行改进有建设性的想法,我们会接受请求请求和想法。我怀疑您经历了我们在核心项目中所做的转变,以支持依赖项注入,程序包支持和平均cli,我们一直在将项目从样板转移到框架,并且遇到了一些“麻烦”。
– Lior Kesos
2014-4-26 21:44
我邀请您重新访问该项目并查看新的软件包系统,该系统使您可以通过普通软件包扩展项目。该功能已被社区很好地接受,并且是完整堆栈软件包的第一个示例(通过扩展软件包同时提供服务器和客户端功能,同时扩展了核心项目)。
– Lior Kesos
14年4月26日在21:54
比较MEAN.io VS MEAN.js之后,通过纯粹的增长。 mean.js在1年内收到93个贡献者,共进行了700次提交,而mean.io在3年中获得了130个贡献者,令人惊讶的低至1200次提交。 (根据统计数据,不妨一salt而就)显然,MEAN.js正在迅速赶上。嘿,我还没有研究代码。但基本上,MEAN.io听起来像是失去了史蒂夫·乔布斯的苹果。
– Ezeewei
2015年4月30日18:27
#3 楼
这是几种应用程序启动器/生成器和其他技术(包括MEAN.js,MEAN.io和cleverstack)的并排比较。我会在寻找时间时不断添加替代方法,并且随着时间的推移,潜在提供的好处的列表也在不断增长。如今大约是1600年。如果有人想帮助提高其准确性或完整性,请单击下一个链接并就您所知道的事做一份调查表。比较应用程序技术项目
系统从该数据库中生成如下报告:
MeanJS与MeanIO权衡报告
评论
这是您编写的精美的Google文档。
–honkskillet
2014年7月23日在10:12
我在文档中添加了单独的页面,并进行了正面对比。有一个比较MEAN.js和MEAN.io
– Dan Cancro
2014年9月4日17:38
“您需要许可”-无法访问。
–莫尔
2015年6月6日14:19在
现在是知识合作社。只需在此处填写有关您知道的某些技术的调查表,我将授予您使用doc dancancro.com/technology-questionnaires的权限。
– Dan Cancro
2015年6月7日15:58
#4 楼
我的比较电子表格的“初学者权衡”工作表在每个生成器之间进行了全面的一对一比较。因此,您无需再扭曲挑剔的话来谈论您的最爱。这里是generator-angular-fullstack和MEAN.js之间的一个。百分比是基于我个人权重的每种收益的值,其中理想的生成器为100%
1.9%的客户端端到端测试
0.6%的工厂
0.5%的提供者
0.4%的SASS
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 Web令牌(JWT)
0.2%服务器端日志记录
0.1%开发构建脚本:并行运行任务加快速度
0.1%开发构建脚本:重命名资产文件以防止浏览器缓存
0.1%开发opment构建脚本:运行端到端测试
0.1%生产构建脚本:安全的最小化
0.1%生产构建脚本:添加CSS供应商前缀
0.1% Heroku部署自动化
0.1%值
0.1%Jade
0.1%Coffeescript
0.1%SASS版本的Twitter Bootstrap
0.1%生产构建脚本:压缩图像
0.1%OpenShift部署自动化br />
MeanJS.org。提供9%的generator-angular-fullstack不提供的功能
3.7%专用/可搜索的用户组:响应时间大部分在一天之内
0.4%生成路线
0.4%身份验证-Oauth
0.4%config
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%的生产构建脚本:uglification
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> * Dedicated/searchable user group for questions, using github issues<br> * There's a book about it<br><b>File Organization</b>:<br> * Basic sourcecode organization, module(->submodule)->side<br> * Module directories hold directives<br><b>Code Modularization</b>:<br> * Approach to AngularJS modules, Only one module definition per file<br> * Approach to AngularJS modules, Don’t alter a module other than where it is defined<br><b>Model</b>:<br> * Object-relational mapping<br> * Server-side validation, server-side example<br> * Client side validation, using Angular 1.3<br><b>View</b>:<br> * Approach to AngularJS views, Directives start with "data-"<br> * Approach to data readiness, Use ng-init<br><b>Control</b>:<br> * Approach to frontend routing or state changing, URLs start with '#!'<br> * Approach to frontend routing or state changing, Use query parameters to store route state<br><b>Support for things</b>:<br> * Languages, LESS<br> * Languages, SASS<br><b>Syntax, language and coding</b>:<br> * JavaScript 5 best practices, Don't use "new"<br><b>Testing</b>:<br> * Testing, using Mocha<br> * End-to-end tests<br> * End-to-end tests, using Protractor<br> * Continuous integration (CI), using Travis<br><b>Development and debugging</b>:<br> * Command line interface (CLI), using Yeoman<br><b>Build</b>:<br> * Build configurations file(s)<br> * Deployment automation, using Azure<br> * Deployment automation, using Digital Ocean, screencast of it<br> * Deployment automation, using Heroku, screencast of it<br><b>Code Generation</b>:<br> * Input application profile<br> * Quick install?<br> * Options for making subcomponents<br> * config generator<br> * controller (client side) generator<br> * directive generator<br> * filter generator<br> * route (client side) generator<br> * service (client side) generator<br> * test - client side<br> * view or view partial generator<br> * controller (server side) generator<br> * model (server side) generator<br> * route (server side) generator<br> * test (server side) generator<br><b>Implemented Functionality</b>:<br> * Account Management, Forgotten Password with Resetting<br> * Chat<br> * CSV processing<br> * E-mail sending system<br> * E-mail sending system, using Nodemailer<br> * E-mail sending system, using its own e-mail implementation<br> * Menus system, state-based<br> * Paypal integration<br> * Responsive design<br> * Social connections management page<br><b>Performance</b>:<br> * Creates a favicon<br><b>Security</b>:<br> * Safe from IP Spoofing<br> * Authorization, Access Contol List (ACL)<br> * Authentication, Cookie<br> * 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> * Sponsoring company<br><b>Help</b>:<br> * Docs with flatdoc<br><b>Code Modularization</b>:<br> * Share code between projects<br> * Module manager<br><b>View</b>:<br> * Approach to data readiness, Use state.resolve()<br><b>Control</b>:<br> * Approach to frontend code loading, Use AMD with Require.js<br> * Approach to frontend code loading, using wiredep<br> * Approach to error handling, Server-side logging<br><b>Client/Server Communication</b>:<br> * Centralized event handling<br> * Approach to XHR calls, using $http and $q<br><b>Syntax, language and coding</b>:<br> * JavaScript 5 best practices, Wrap code in an IIFE (SEAF, SIAF)<br><b>Development and debugging</b>:<br> * API introspection report and testing interface, using Swagger<br> * Command line interface (CLI), using Independent command line interface<br><b>Build</b>:<br> * Development build, add IIFEs (SEAF, SIAF) to executable copies of code<br> * Deployment automation<br> * Deployment automation, using Heroku<br><b>Code Generation</b>:<br> * Scaffolding undo (mean package -d <name>)<br> * FEATURE (a.k.a. module, entity) generator, Menu items added for new features<br><b>Implemented Functionality</b>:<br> * Admin page for users and roles<br> * Content Management System (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> * File Upload<br> * i18n, localization<br> * Menus system, submenus<br> * Search<br> * Search, actually works with backend API<br> * Search, using Elastic Search<br> * Styles, using Bootstrap, using UI Bootstrap AngularJS directives<br> * Text (WYSIWYG) Editor<br> * Text (WYSIWYG) Editor, using medium-editor<br><b>Performance</b>:<br> * Instrumentation, server-side<br><b>Security</b>:<br> * Serverside authenticated route restriction<br> * Authentication, using Oauth, Link multiple Oauth strategies to one account<br> * 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> * Version Control, using git<br><b>Platforms</b>:<br> * Client-side JS Framework, using AngularJS<br> * Frontend Server/ Framework, using Node.JS<br> * Frontend Server/ Framework, using Node.JS, using Express<br> * API Server/ Framework, using NodeJS<br> * API Server/ Framework, using NodeJS, using Express<br><b>Help</b>:<br> * Dedicated/searchable user group for questions<br> * Dedicated/searchable user group for questions, using Google Groups<br> * Dedicated/searchable user group for questions, using Facebook<br> * Dedicated/searchable user group for questions, response time mostly under a day<br> * Example application<br> * Tutorial screencast in English<br> * Tutorial screencast in English, using Youtube<br> * Dedicated chatroom<br><b>File Organization</b>:<br> * Basic sourcecode organization, module(->submodule)->side, with type subfolders<br> * Module directories hold controllers<br> * Module directories hold services<br> * Module directories hold templates<br> * Module directories hold unit tests<br> * Separate route configuration files for each module<br><b>Code Modularization</b>:<br> * Modularized Functionality<br> * Approach to AngularJS modules, No global 'app' module variable<br> * Approach to AngularJS modules, No global 'app' module variable without an IIFE<br><b>Model</b>:<br> * Setup of persistent storage<br> * Setup of persistent storage, using NoSQL db<br> * Setup of persistent storage, using NoSQL db, using MongoDB<br><b>View</b>:<br> * No XHR calls in controllers<br> * Templates, using Angular directives<br> * Approach to data readiness, prevents Flash of Unstyled/compiled Content (FOUC)<br><b>Control</b>:<br> * Approach to frontend routing or state changing, example of it<br> * Approach to frontend routing or state changing, State-based routing<br> * Approach to frontend routing or state changing, State-based routing, using ui-router<br> * Approach to frontend routing or state changing, HTML5 Mode<br> * Approach to frontend code loading, using angular.bootstrap()<br><b>Client/Server Communication</b>:<br> * Serve status codes only as responses<br> * Accept nested, JSON parameters<br> * Add timer header to requests<br> * Support for signed and encrypted cookies<br> * Serve URLs based on the route definitions<br> * Can serve headers only<br> * Approach to XHR calls, using JSON<br> * Approach to XHR calls, using $resource (angular-resource)<br><b>Support for things</b>:<br> * Languages, JavaScript (server side)<br> * Languages, Swig<br><b>Syntax, language and coding</b>:<br> * JavaScript 5 best practices, Use 'use strict'<br><b>Tool Configuration/customization</b>:<br> * Separate runtime configuration profiles<br><b>Testing</b>:<br> * Testing, using Jasmine<br> * Testing, using Karma<br> * Client-side unit tests<br> * Continuous integration (CI)<br> * Automated device testing, using Live Reload<br> * Server-side integration & unit tests<br> * Server-side integration & unit tests, using Mocha<br><b>Development and debugging</b>:<br> * Command line interface (CLI)<br><b>Build</b>:<br> * Build-time Dependency Management, using npm<br> * Build-time Dependency Management, using bower<br> * Build tool / Task runner, using Grunt<br> * Build tool / Task runner, using gulp<br> * Development build, script<br> * Development build, reload build script file upon change<br> * Development build, copy assets to build or dist or target folder<br> * Development build, html page processing<br> * Development build, html page processing, inject references by searching directories<br> * Development build, html page processing, inject references by searching directories, injects js references<br> * Development build, html page processing, inject references by searching directories, injects css references<br> * Development build, LESS/SASS/etc files are linted, compiled<br> * Development build, JavaScript style checking<br> * Development build, JavaScript style checking, using jshint or jslint<br> * Development build, run unit tests<br> * Production build, script<br> * Production build, concatenation (aggregation, globbing, bundling) (If you add debug:true to your config/env/development.js the will not be <br>uglified)<br> * Production build, minification<br> * Production build, safe pre-minification, using ng-annotate<br> * Production build, uglification<br> * Production build, make static pages for SEO<br><b>Code Generation</b>:<br> * FEATURE (a.k.a. module, entity) generator (README.md<br>feature css<br>routes<br>controller<br>view<br>additional menu item)<br><b>Implemented Functionality</b>:<br> * 404 Page<br> * 500 Page<br> * Account Management<br> * Account Management, register/login/logout<br> * Account Management, is password manager friendly<br> * Front-end CRUD<br> * Full-stack CRUD<br> * Full-stack CRUD, with Read<br> * Full-stack CRUD, with Create, Update and Delete<br> * Google Analytics<br> * Menus system<br> * Realtime data sync<br> * Realtime data sync, using socket.io<br> * Styles, using Bootstrap<br><b>Performance</b>:<br> * Javascript performance thing<br> * Javascript performance thing, using lodash<br> * One event-loop thread handles all requests<br> * Configurable response caching (Express plugin<br><b>https</b>://www.npmjs.org/package/apicache)<br> * Clustered HTTP sessions<br><b>Security</b>:<br> * JavaScript obfuscation<br> * https<br> * Authentication, using Oauth<br> * Authentication, Basic (With Passport or others)<br> * Authentication, Digest (With Passport or others)<br> * Authentication, Token (With Passport or others)<br></td></tr></tbody></table>
评论
我建议您合并发布的两个答案。
–CMPSoares
2014年7月24日13:00
#5 楼
我很惊讶没有人提到Yeoman生成器angular-fullstack。它是Yeoman社区生成器的第一名,目前生成器页面上有1490颗星,而Mean.js的是81颗星(考虑到新的MEANJS是)。在撰写本文时,它似乎正在积极维护中,并处于2.05版中。与MEANJS不同,它不使用Swig做模板。它可以用内置的护照架起来。
评论
@SDude的答案提到了它。
–CMPSoares
2014年7月23日下午13:27
哪里?我在他的回答或评论中都看不到它。
–honkskillet
2014年7月24日在1:50
也许我误解了您的答案...但是SDude提到“ Mean.js使用Yeoman Generators”进行脚手架。
–CMPSoares
14年7月24日在1:55
我完全忘记了这一点。实际上,我很早以前就在generator-angular-fullstack的github注释中了解了MEAN.js ...我已将其添加到答案中。
–sdude
2014年7月24日在21:18
@CMPSoares ...有多个Yeoman生成器支撑MEAN堆栈。 Angular-Fullstack和Mean.js只是其中的两个(可以说是充实的两个?)。您可以在此处查看所有Yeoman社区生成器... Yeoman Generators
–honkskillet
2014年7月25日在2:47
评论
鉴于Meteor已发布1.0并提供了更多现成的功能,在MEAN.io和MEAN.js之间进行选择可能是一个有争议的问题。