MEAN.js和MEAN.io之间的区别
我想使用MEAN JavaScript Stack,但是我注意到有两个不同的栈,它们有自己的网站和安装方法:mean.js和mean.io。 于是我问自己这个问题:“我用哪一个?”。
所以为了回答这个问题,我问社区你们能否解释这两者之间的区别? 如果可能的话,利弊呢? 因为他们看起来和我很相似。
他们本质上是一样的…他们都使用swig模板,他们都使用业力和摩卡进行testing,护照整合,nodemon等。
为什么这么相似? Mean.js是Mean.io的一个分支,两个计划都是由同一个人开始的…… Mean.io现在在Linnovate公司的保护下,看起来像是这个人(Amos Haviv)停止了与这家公司的合作,开始了Mean.js. 你可以阅读更多关于这里的原因。
现在,你现在可以看到的主要(或小的)差异是:
脚手架和锅炉发电
Mean.io使用名为“mean”的自定义cli工具,
Mean.js使用Yeoman发生器
模块性
Mean.io在模块内部使用了一个更为独立的节点包模块化客户端和服务器文件。
Mean.js仅在前端使用模块(用于angular度),并将它们与Express连接起来。 虽然他们也在研究垂直模块,
构build系统
Mean.io最近已经搬走了
Mean.js使用咕噜声
部署
两个版本都有Dockerfiles,而且Mean.io在Google Compute Engine上有一键安装,而Mean.js也可以在Digital Ocean上一键安装 。
文档
Mean.io确定文档
Mean.js有很棒的文档
社区
Mean.io有一个更大的社区,因为它是最初的样板
Mean.js动力较less但增长稳定
在个人层面上,我更喜欢MeanJS的理念和开放性,更多的是MeanIO的牵引和模块/包装方法。 两者都很好,你可能会修改它们,所以你不能错误地select一个或另一个。 只要把它们作为出发点和学习练习。
替代的“平均”解决scheme
MEAN是一种通用的方法(由Valeri Karpov创造)来描述以“Mongo + Express + Angular + Node”为基础的样板/框架。 您可以find使用其他面额的这个堆栈的框架,其中一些非常适合RAD(快速应用程序开发)和构buildSPA。 例如:
- meteor 。 现在有了官方的Angular支持 ,代表了一个很棒的MEAN堆栈
- StrongLoop Loopback (主要的Node.js核心贡献者和Express维护者 )
- 发电机angular度叠堆
- Sails.js
- Cleverstack
- Deployd等(还有更多)
你也有Hackathon Starter 。 它没有平均值(这是“男人”),但它的岩石。
玩的开心!
首先, MEAN是M ongoDB, E xpress, A ngular和N ode.js的首字母缩写词。
它通常在“堆栈”中标识这些技术的组合使用。 没有“MEAN框架”这样的东西。
Linnovate的Lior Kesos利用了这个混乱。 他购买了域名MEAN.io,并在https://github.com/linnovate/mean上添加了一些代码;
他们幸运地得到了很多的宣传,而且越来越多的文章和关于平均的video。 当你的谷歌“意味着框架”,mean.io是在列表中的第一个。
不幸的是, https://github.com/linnovate/mean上的代码似乎devise不佳 。
二月份,我陷入了陷阱。 该网站mean.io有一个吸引人的devise和Github回购1000多颗星。 质疑质量的想法甚至没有经过我的思想。 我开始试验它,但是没有太长的时间去绊倒那些不起作用的东西,以及令人费解的代码片段。
提交历史也相当关注。 他们多次重新devise了代码和目录结构,合并新的更改太耗时。
关于mean.io和mean.js代码的好处是它们都带有Bootstrap集成。 他们还通过PassportJs与Facebook,Github,Linkedin等身份validation以及MongoDB后端模型(Article)的示例(与AngularJS的前端模型同步)。
根据Linnovate的网站:
Linnovate是以色列领先的开源公司,拥有全国最有经验的团队,致力于开发高端开源解决scheme。 Linnovate是以色列唯一一家为企业build立和维护下一个Web项目提供AZ服务的公司。
从网站上看,他们的核心技能是Drupal(一个PHP内容pipe理系统),最近才开始使用Node.js和AngularJS。
最近我正在阅读Mean.js博客 ,事情变得更加清晰。 我的理解是,主要的JavaScript开发人员(Amos Haviv)离开Linnovate去处理Mean.js,而留下MEAN.io项目的人是那些新手Node.js开发人员,他们正在慢慢理解事情应该如何工作。
在将来的事情可能会改变,但现在我会避免使用mean.io. 如果你正在寻找一个快速入门的样板,Mean.js似乎比mean.io更好的select。
下面是几个应用程序启动器/发生器以及其他技术的并行比较,包括MEAN.js,MEAN.io和cleverstack。 随着时间的推移,我不断添加替代scheme,并且随着时间的推移,可能提供的福利列表也在不断增长。 今天是1600左右。如果有人想帮助提高准确性或完整性,请点击下一个链接,并对您所知道的问题进行问卷调查。
比较应用技术项目
从这个数据库中,系统生成如下的报告:
MeanJS vs MeanIO折衷报告
我的比较电子表格的入门者权衡表在每个生成器之间进行了全面的一对一比较。 所以不用再歪曲樱桃挑选伟大的事情说你最喜欢的。
这是发生器angular度全堆和MEAN.js之间的一个。 百分比是基于我个人权重的每个利益的价值,其中完美的发电机将是100%
generator-angular-fullstack提供了8%,MEANJS.org没有
- 1.9%客户端端到端testing
- 0.6%的工厂
- 0.5%的供应商
- 0.4%SASS
- 减less了0.4%
- 0.4%指南针
- 0.4%装饰者
- 0.4%端点子发生器
- 0.4%的评论
- 0.3%的FontAwesome
- 0.3%在debugging模式下运行服务器
- 0.3%保存生成器对文件的回答
- 0.2%恒定
- 0.2%开发构build脚本:……用CDN版本replace第三方代码
- 0.2%authentication – Cookie
- 0.2%身份validation – JSON Web令牌(JWT)
- 0.2%服务器端日志logging
- 0.1%开发构build脚本:并行运行任务以加快速度
- 0.1%开发构build脚本:重命名资产文件以防止浏览器caching
- 0.1%开发构build脚本:运行端到端testing
- 0.1%生产build立脚本:安全的预缩小
- 0.1%生产构build脚本:添加CSS供应商前缀
- 0.1%Heroku部署自动化
- 0.1%的价值
- 0.1%玉
- 0.1%Coffeescript
- 0.1%Serversideauthentication的路线限制
- 0.1%SASS版本的Twitter Bootstrap
- 0.1%生成构build脚本:压缩图像
- 0.1%的OpenShift部署自动化
MeanJS.org。 提供了9%的发电机angular度全堆不
- 3.7%专用/可search的用户组:响应时间大多在一天之内
- 0.4%生成路线
- 0.4%的authentication – Oauth
- 0.4%configuration
- 国内0.4%,国内
- 0.4%input应用程序configuration文件
- 0.3%function(aka模块,实体,crud-mock)
- 0.3%菜单系统
- 0.3%制造子部件的选项
- 0.3%的testing – 客户端
- 0.3%的Javascript性能的事情
- 0.3%生成构build脚本:为SEO做静态页面
- 0.2%快速安装?
- 0.2%专用/可search的用户组
- 0.1%开发构build脚本:更改时重新加载构build文件
- 0.1%开发构build脚本:编译为JS的咖啡文件
- 0.1%的控制器 – 服务器端
- 0.1%模式 – 服务器端
- 0.1%的路由 – 服务器端
- 0.1%的testing服务器端
- 0.1%Swig
- 来自IP欺骗的0.1%安全
- 0.1%生产build立脚本:uglification
- 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> * 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 (aka 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 (aka 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>
我很惊讶没有人提到Yeoman发电机angular – 满铺 。 这是最大的Yeoman社区发电机,目前发电机页面上有1490颗恒星,而Mean.js的81颗星星(毫无疑问,新的MEANJS是如何不公平的比较)。 我写这篇文章似乎是积极维护和版本2.05。 与MEANJS不同,它不使用Swig进行模板化。 它可以用护照内置脚手架。