本文翻译自:Difference between MEAN.js and MEAN.io

I wanted to use the MEAN JavaScript Stack, but I noticed that there are two different stacks with either their own website and installation methods: mean.js and mean.io. 我想使用MEAN JavaScript Stack,但我注意到有两个不同的堆栈,它们有自己的网站和安装方法:mean.js和mean.io. So I came up asking myself this question: "Which one do I use?". 所以我想问自己这个问题:“我使用哪一个?”。

So in order to answer this question I ask the community if you could explain what are the differences between these two? 所以为了回答这个问题,我问社区你是否可以解释这两者之间有什么区别? And if possible pros and cons? 如果可能的利弊? Because they look very similar to me. 因为它们看起来和我很相似。


#1楼

参考:https://stackoom.com/question/1ZLDk/MEAN-js和MEAN-io之间的区别


#2楼

They're essentially the same... They both use swig for templating, they both use karma and mocha for tests, passport integration, nodemon, etc. 它们基本相同......它们都使用swig进行模板化,它们都使用业力和摩卡进行测试,护照集成,nodemon等。

Why so similar? 为何如此相似? Mean.js is a fork of Mean.io and both initiatives were started by the same guy ... Mean.io is now under the umbrella of the company Linnovate and looks like the guy (Amos Haviv) stopped his collaboration with this company and started Mean.js. Mean.js是Mean.io的一个分支,两个倡议都是由同一个人开始的...... Mean.io现在在Linnovate公司的保护伞下,看起来那个人(Amos Haviv)停止了与这家公司的合作,开始Mean.js. You can read more about the reasons here . 您可以在此处详细了解原因。

Now... main (or little) differences you can see right now are: 现在......您现在可以看到的主要(或很小)差异是:

SCAFFOLDING AND BOILERPLATE GENERATION 脚手架和锅炉生成

Mean.io uses a custom cli tool named 'mean' Mean.io使用名为'mean'的自定义cli工具
Mean.js uses Yeoman Generators Mean.js使用Yeoman Generators

MODULARITY 模块性

Mean.io uses a more self-contained node packages modularity with client and server files inside the modules. Mean.io使用更自包含的节点包模块化,模块内部包含客户端和服务器文件。
Mean.js uses modules just in the front-end (for angular), and connects them with Express. Mean.js仅在前端使用模块(用于角度),并使用Express连接它们。 Although they were working on vertical modules as well... 虽然他们也在研究垂直模块......

BUILD SYSTEM 建立系统

Mean.io has recently moved to gulp Mean.io最近已经开始了
Mean.js uses grunt Mean.js使用grunt

DEPLOYMENT 部署

Both have Dockerfiles in their respective repos, and Mean.io has one-click install on Google Compute Engine , while Mean.js can also be deployed with one-click install on Digital Ocean . 两者都有各自的Repos中的Dockerfiles,而Mean.io可以在Google Compute Engine上一键安装,而Mean.js也可以在Digital Ocean上一键安装 。

DOCUMENTATION 文档

Mean.io has ok docs Mean.io有好的文档
Mean.js has AWESOME docs Mean.js有很棒的文档

COMMUNITY 社区

Mean.io has a bigger community since it was the original boilerplate Mean.io拥有更大的社区,因为它是最初的样板
Mean.js has less momentum but steady growth Mean.js势头较小但增长稳定

On a personal level, I like more the philosophy and openness of MeanJS and more the traction and modules/packages approach of MeanIO. 在个人层面上,我更喜欢MeanJS的理念和开放性,以及更多MeanIO的牵引和模块/包方法。 Both are nice, and you'll end probably modifying them, so you can't really go wrong picking one or the other. 两者都很好,你最终可能会修改它们,所以你选择其中一个就不会出错。 Just take them as starting point and as a learning exercise. 只需将它们作为起点和学习练习。

ALTERNATIVE “MEAN” SOLUTIONS 替代“平均”解决方案

MEAN is a generic way (coined by Valeri Karpov ) to describe a boilerplate/framework that takes "Mongo + Express + Angular + Node" as the base of the stack. MEAN是一种通用的方式(由Valeri Karpov创造)来描述以“Mongo + Express + Angular + Node”作为堆栈基础的样板/框架。 You can find frameworks with this stack that use other denomination, some of them really good for RAD (Rapid Application Development) and building SPAs. 您可以找到使用此堆栈的框架,这些框架使用其他面额,其中一些非常适合RAD(快速应用程序开发)和构建SPA。 Eg: 例如:

  • Meteor . 流星 Now with official Angular support , represents a great MEAN stack 现在有了官方的Angular支持 ,代表了一个伟大的MEAN堆栈
  • StrongLoop Loopback (main Node.js core contributors and Express maintainers ) StrongLoop Loopback (主要Node.js核心贡献者和Express维护者 )
  • Generator Angular Fullstack 发电机角度Fullstack
  • Sails.js Sails.js
  • Cleverstack Cleverstack
  • Deployd, etc (there are more) Deployd等(还有更多)

You also have Hackathon Starter . 你也有Hackathon Starter 。 It doesn't have A of MEAN (it is 'MEN'), but it rocks.. 它没有A的意思(它是'MEN'),但它摇滚..

Have fun! 玩得开心!


#3楼

First of all, MEAN is an acronym for M ongoDB, E xpress, A ngular and N ode.js. 首先, MEANM ongoDB, E xpress, A ngular和N ode.js的首字母缩写。

It generically identifies the combined used of these technologies in a "stack". 通常在“堆栈”中识别这些技术的组合使用。 There is no such a thing as " The MEAN framework". 有没有这样的事“ 意味框架”。

Lior Kesos at Linnovate took advantage of this confusion. 利奥尔Kesos在Linnovate了这种混乱的优势。 He bought the domain MEAN.io and put some code at https://github.com/linnovate/mean 他购买了MEAN.io域名并在https://github.com/linnovate/mean上添加了一些代码

They luckily received a lot of publicity, and theree are more and more articles and video about MEAN. 幸运的是,他们收到了很多宣传,而且关于MEAN的文章和视频越来越多。 When you Google "mean framework", mean.io is the first in the list. 当你谷歌“卑鄙的框架”时,mean.io是列表中的第一个。

Unfortunately the code at https://github.com/linnovate/mean seems poorly engineered . 不幸的是, https://github.com/linnovate/mean上的代码似乎设计得很差

In February I fell in the trap myself. 二月份,我自己陷入陷阱。 The site mean.io had a catchy design and the Github repo had 1000+ stars. 网站mean.io有一个吸引人的设计,Github回购有1000多颗星。 The idea of questioning the quality did not even pass through my mind. 质疑质量的想法甚至没有在我脑海中浮现。 I started experimenting with it but it did not take too long to stumble upon things that were not working, and puzzling pieces of code. 我开始尝试它,但是没有花太多时间来偶然发现那些不起作用的东西,以及令人费解的代码。

The commit history was also pretty concerning. 提交历史也非常令人担忧。 They re-engineered the code and directory structure multiple times, and merging the new changes is too time consuming. 他们多次重新设计代码和目录结构,并且合并新的更改太费时间了。

The nice things about both mean.io and mean.js code is that they come with Bootstrap integration. 关于mean.io和mean.js代码的好处是它们带有Bootstrap集成。 They also come with Facebook, Github, Linkedin etc authentication through PassportJs and an example of a model (Article) on the backend on MongoDB that sync with the frontend model with AngularJS. 他们还通过PassportJs进行Facebook,Github,Linkedin等身份验证,以及MongoDB后端的模型(文章)示例,该模型与AngularJS的前端模型同步。

According to Linnovate's website: 根据Linnovate的网站:

Linnovate is the leading Open Source company in Israel, with the most experienced team in the country, dedicated to the creation of high-end open source solutions. Linnovate是以色列领先的开源公司,拥有该国最有经验的团队,致力于创建高端开源解决方案。 Linnovate is the only company in Israel which gives an AZ services for enterprises for building and maintaining their next web project. Linnovate是以色列唯一一家为企业提供AZ服务以建立和维护其下一个Web项目的公司。

From the website it looks like that their core skill set is Drupal (a PHP content management system) and only lately they started using Node.js and AngularJS. 从网站上看,他们的核心技能集是Drupal(PHP内容管理系统),最近才开始使用Node.js和AngularJS。

Lately I was reading the Mean.js Blog and things became clearer. 最近我正在阅读Mean.js博客 ,事情变得更加清晰。 My understanding is that the main Javascript developer (Amos Haviv) left Linnovate to work on Mean.js leaving MEAN.io project with people that are novice Node.js developers that are slowing understanding how things are supposed to work. 我的理解是,主要的Javascript开发人员(Amos Haviv)离开了Linnovate,在Mean.js上工作,离开MEAN.io项目的人是新手Node.js的开发人员,他们正在放慢对事情应该如何工作的理解。

In the future things may change but for now I would avoid to use mean.io. 在未来,事情可能会改变,但现在我会避免使用mean.io. If you are looking for a boilerplate for a quickstart Mean.js seems a better option than mean.io. 如果您正在为快速入门寻找样板,则Mean.js似乎比mean.io更好。


#4楼

Here is a side-by-side comparison of several application starters/generators and other technologies including MEAN.js, MEAN.io, and cleverstack. 以下是几个应用程序启动器/生成器和其他技术(包括MEAN.js,MEAN.io和cleverstack)的并排比较。 I keep adding alternatives as I find time and as that happens, the list of potentially provided benefits keeps growing too. 随着时间的推移,我不断添加备选方案,当发生这种情况时,潜在提供的好处列表也在不断增长。 Today it's up to around 1600. If anyone wants to help improve its accuracy or completeness, click the next link and do a questionnaire about something you know. 今天大约1600岁。如果有人想帮助提高其准确性或完整性,请单击下一个链接并对您知道的事项进行问卷调查。

Compare app technologies project 比较应用技术项目

From this database, the system generates reports like the following: 从该数据库中,系统生成如下报告:

MeanJS vs MeanIO trade-off report MeanJS与MeanIO权衡报告


#5楼

I'm surprised nobody has mentioned the Yeoman generator angular-fullstack . 我很惊讶没有人提到过Yeoman发电机角度 - 全栈 。 It is the number one Yeoman community generator, with currently 1490 stars on the generator page vs Mean.js' 81 stars (admittedly not a fair comparison given how new MEANJS is). 它是头号Yeoman社区发电机,目前在发电机页面上有1490颗星与Mean.js的81颗星(鉴于新MEANJS是多么公平的比较)。 It is appears to be actively maintained and is in version 2.05 as I write this. 它似乎是积极维护的,在我写这篇文章的时候是版本2.05。 Unlike MEANJS, it doesn't use Swig for templating. 与MEANJS不同,它不使用Swig进行模板化。 It can be scaffolded with passport built in. 它可以搭建护照内置的脚手架。


#6楼

The Starter Trade-offs sheet of my comparison spreadsheet has comprehensive one-on-one comparisons between each generator. 我的比较电子表格的Starter Trade-offs表格在每个发生器之间进行了全面的一对一比较。 So no more need to distortedly cherry-pick great things to say about your favorite. 所以不再需要歪曲地挑选出你最喜欢的东西。

Here is the one between generator-angular-fullstack and MEAN.js. 这是generator-angular-fullstack和MEAN.js之间的那个。 The percentages are values for each benefit based on my personal weightings, where a perfect generator would be 100% 百分比是基于我个人权重的每个福利的值,其中完美的发电机将是100%

generator- angular- fullstack offers 8% that MEANJS.org doesn't generator- angular- fullstack提供8%,MEANJS.org没有

  • 1.9% Client-side end-to-end tests 1.9%客户端端到端测试
  • 0.6% factory 工厂0.6%
  • 0.5% provider 0.5%的提供者
  • 0.4% SASS 0.4%SASS
  • 0.4% LESS 0.4%少
  • 0.4% Compass 0.4%指南针
  • 0.4% decorator 装饰0.4%
  • 0.4% Endpoint subgenerator 0.4%端点子发电机
  • 0.4% Comments 0.4%评论
  • 0.3% FontAwesome 0.3%FontAwesome
  • 0.3% Run server in debug mode 0.3%在调试模式下运行服务器
  • 0.3% Save generator answers to a file 0.3%将生成器答案保存到文件中
  • 0.2% constant 0.2%不变
  • 0.2% Development build script: ...... replace 3rd party deps with CDN versions 0.2%开发构建脚本:......用CDN版本替换第三方代表
  • 0.2% Authentication - Cookie 0.2%身份验证 - Cookie
  • 0.2% Authentication - JSON Web Token (JWT) 0.2%身份验证 - JSON Web令牌(JWT)
  • 0.2% Server-side logging 0.2%服务器端日志记录
  • 0.1% Development build script: run tasks in parallel to speed it up 0.1%开发构建脚本:并行运行任务以加快速度
  • 0.1% Development build script: Renames asset files to prevent browser caching 0.1%开发构建脚本:重命名资产文件以防止浏览器缓存
  • 0.1% Development build script: run end to end tests 0.1%开发构建脚本:运行端到端测试
  • 0.1% Production build script: safe pre-minification 0.1%生产构建脚本:安全预先缩小
  • 0.1% Production build script: add CSS vendor prefixes 0.1%生产构建脚本:添加CSS供应商前缀
  • 0.1% Heroku deployment automation 0.1%Heroku部署自动化
  • 0.1% value 0.1%的价值
  • 0.1% Jade 0.1%玉
  • 0.1% Coffeescript 0.1%Coffeescript
  • 0.1% Serverside authenticated route restriction 0.1%Serverside认证的路由限制
  • 0.1% SASS version of Twitter Bootstrap 0.1%SASS版本的Twitter Bootstrap
  • 0.1% Production build script: compress images 0.1%生产构建脚本:压缩图像
  • 0.1% OpenShift deployment automation 0.1%OpenShift部署自动化

MeanJS.org. MeanJS.org。 offers 9% that generator-angular-fullstack doesn't 提供9%的发电机角度 - fullstack没有

  • 3.7% Dedicated/searchable user group: response time mostly under a day 3.7%专用/可搜索用户组:响应时间大多在一天之内
  • 0.4% Generate routes 0.4%生成路线
  • 0.4% Authentication - Oauth 0.4%认证 - Oauth
  • 0.4% config 0.4%配置
  • 0.4% i18n, localization 0.4%i18n,本地化
  • 0.4% Input application profile 0.4%输入申请资料
  • 0.3% FEATURE (aka module, entity, crud-mock) 0.3%FEATURE(又名模块,实体,crud-mock)
  • 0.3% Menus system 0.3%菜单系统
  • 0.3% Options for making subcomponents 0.3%制作子组件的选项
  • 0.3% test - client side 0.3%测试 - 客户端
  • 0.3% Javascript performance thing 0.3%Javascript性能的东西
  • 0.3% Production build script: make static pages for SEO 0.3%生产构建脚本:为SEO制作静态页面
  • 0.2% Quick install? 0.2%快速安装?
  • 0.2% Dedicated/searchable user group 0.2%专用/可搜索用户组
  • 0.1% Development build script: reload build file upon change 0.1%开发构建脚本:在更改时重新加载构建文件
  • 0.1% Development build script: coffee files compiled to JS 0.1%开发构建脚本:编译为JS的咖啡文件
  • 0.1% controller - server side 0.1%控制器 - 服务器端
  • 0.1% model - server side 0.1%模型 - 服务器端
  • 0.1% route - server side 0.1%路由 - 服务器端
  • 0.1% test - server side 0.1%测试 - 服务器端
  • 0.1% Swig 0.1%Swig
  • 0.1% Safe from IP Spoofing IP欺骗0.1%安全
  • 0.1% Production build script: uglification 0.1%生产构建脚本:uglification
  • 0.0% Approach to views: URLs start with "#!" 0.0%观看方法:网址以“#!”开头
  • 0.0% Approach to frontend services and ajax calls: uses $resource 0.0%前端服务和ajax调用的方法:使用$ resource

Here is the one between MEAN.io and MEAN.js in a more readable format 这是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 (aka 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 (aka 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> 

MEAN.js和MEAN.io之间的区别相关推荐

  1. bus.js非父子组件之间通讯

    bus.js非父子组件之间通讯 区别: bus.js就是一个公共的vue实例专门处理emit和on事件. vuex.js是做全局数据处理的,是指限定了对公共数据的使用处理方法,统一管控 vue中非父子 ...

  2. JS对象与Dom对象与jQuery对象之间的区别

    前言 通过问题看本质: 举例: js的写法:document.getElementById('save').disabled=true; 在jquery中我是这样写的 $("#save&qu ...

  3. IO流介绍、java常用的几个IO流类之间的区别,以及各自的用法、使用场景

    1. IO流介绍 IO流(Input Output Stream,输入输出流),表示数据在程序内存和磁盘之间的传输.按照数据流的流向不同分为输入.输出流,输入流表示程序从磁盘读入数据,输出流表示程序往 ...

  4. IO多路复用中select、poll、epoll之间的区别

    本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...

  5. JS动画和CSS动画之间的区别和特点?

    一.写在前面 之前我们讲了requestAnimationFrame用来解决js的相关动画出现卡顿的问题.现在我们来详细了解一下CSS和JS动画之间的区别和特点. 二.CSS动画 优点: 1.浏览器可 ...

  6. 定义指令时“控制器”,“链接”和“编译”函数之间的区别

    本文翻译自:Difference between the 'controller', 'link' and 'compile' functions when defining a directive ...

  7. 集中和分散架构之间的区别_分散式应用程序架构:后端,安全性和设计模式

    集中和分散架构之间的区别 Decentralized applications, or ÐApps, require a special system design to achieve high s ...

  8. java中separator_java - File.separator和路径中的斜杠之间的区别

    java - File.separator和路径中的斜杠之间的区别 在Java Path-String中使用/和普通的File.separator有什么区别? 与双反斜杠相比,/平台独立似乎不是原因, ...

  9. 2.javascript之缓存 localStorage 和sessionStorage之间的区别

    2018-08-04 前言 今天做项目的时候遇到了这个问题,用户登录成功之后如何改变将登录的链接切换为用户名 解决方案:使用了sessionstorage缓存 和js的onload加载事件 用户登录成 ...

最新文章

  1. jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画
  2. 大数据虚拟化零起点-5基础运维第四步-部署vSphere Big Data Extensions 1.0 vApp
  3. xampp中php连接mysql数据库乱码解决
  4. 【算法】一个简单的主成分分析(PCA)原理
  5. springCloud负载均衡Ribbon和Feign的区别
  6. 32 - II. 从上到下打印二叉树 II
  7. 中国大学MOOC“Python程序设计基础”第4次开课
  8. hibernate查询出的实体,set值后,自动更新到数据库
  9. 如何新建PDF文件?新建PDF文件教程来了
  10. Origin下载安装教程(亲测有用)
  11. 贴片式元器件焊接方法
  12. 实战SpringBoot Admin
  13. 固克节能被终止创业板注册:年营收9.8亿 碧桂园创投是股东
  14. 考研常考知识点(复试)
  15. 李白的诗: 南陵别儿童入京
  16. php7 slowlog,php7: php-fpm seems busy提示
  17. sam卡和sim卡区别_SAM卡概述
  18. Kubernetes kubeadm部署
  19. Android允许应用具有安装权限
  20. C# DGV常用操作

热门文章

  1. 社团管理系统软件测试,软件测试大作业——社团管理系统(19页)-原创力文档...
  2. teamviewer 修改mac地址
  3. 基于帝企鹅算法优化BP神经网络实现数据预测matlab代码
  4. 电脑计算机工具计算,计算机的计算器在哪 自己的电脑上的计算器在哪里找
  5. 苹果主题商店_苹果手机怎么换铃声?全网最简单的教程来了,小白秒学会
  6. 苹果手机来电归属地_苹果手机来电铃声、充电音还能这么有趣?这款神器也太炫了...
  7. Android踩坑之 couldnt find libClingSDK.so
  8. 解读PMP考点:管理储备和应急储备
  9. 迅为IMX6Q开发板 Buildroot文件系统mqtt测试
  10. 商品销售信息管理系统(大一C语言课设)