ChatGPT解决这个技术问题 Extra ChatGPT

MEAN.js 和 MEAN.io 的区别

我想使用 MEAN JavaScript 堆栈,但我注意到有两个不同的堆栈,它们有自己的网站和安装方法:mean.js 和 mean.io。所以我问自己这个问题:“我用哪一个?”。

所以为了回答这个问题,我问社区你是否可以解释这两者之间的区别是什么?如果可能的话利弊?因为他们看起来和我很相似。

既然 Meteor has released 1.0 and offers so much more out of the box,在 MEAN.io 和 MEAN.js 之间进行选择可能是一个有争议的问题。

s
sdude

它们本质上是相同的......它们都使用 swig 进行模板化,它们都使用 karma 和 mocha 进行测试、护照集成、nodemon 等。

为什么这么相似? Mean.js 是 Mean.io 的一个分支,这两项计划都是由 the same guy 发起的... Mean.io 现在隶属于 Linnovate 公司,看起来这个家伙 (Amos Haviv) 停止了与这家公司的合作,并且开始 Mean.js。您可以阅读有关原因 here 的更多信息。

现在......您现在可以看到的主要(或小)差异是:

脚手架和样板生成

Mean.io 使用名为“mean”的自定义 cli 工具 Mean.js 使用 Yeoman 生成器

模块化

Mean.io 使用更加独立的节点包模块化,在模块内包含客户端和服务器文件。 Mean.js 仅在前端使用模块(用于角度),并将它们与 Express 连接起来。虽然他们也在研究垂直模块......

构建系统

Mean.io 最近迁移到 gulp Mean.js 使用 grunt

部署

两者在各自的存储库中都有 Dockerfile,Mean.io 在 Google Compute Engine 上有一键安装,而 Mean.js 也可以使用 one-click install on Digital Ocean 部署。

文档

Mean.io 有好的文档 Mean.js 有很棒的文档

社区

Mean.io 拥有更大的社区,因为它是最初的样板

在个人层面上,我更喜欢 MeanJS 的哲学和开放性,更喜欢 MeanIO 的牵引力和模块/包方法。两者都很好,你可能最终会修改它们,所以你不会真的选择一个或另一个。只需将它们作为起点和学习练习即可。

替代“平均”解决方案

MEAN 是一种通用方式(由 Valeri Karpov 创造)来描述以“Mongo + Express + Angular + Node”作为堆栈基础的样板/框架。你可以找到这个堆栈使用其他面额的框架,其中一些非常适合 RAD(快速应用程序开发)和构建 SPA。例如:

流星。现在有了官方的 Angular 支持,代表了一个很棒的 MEAN 堆栈

StrongLoop Loopback(主要的 Node.js 核心贡献者和 Express 维护者)

生成器角全栈

Sails.js

聪明的堆栈

已部署等(还有更多)

您还有 Hackathon Starter。它没有 A of MEAN(它是'MEN'),但它摇滚..

玩得开心!


嘿,谢谢你的回复! hackathon-starter 看起来棒极了!它看起来更适合我正在寻找的东西。它也主要是 JS,并且已经实现了身份验证,这就是我认为最难的部分......所有人都认为我仍然觉得我不知道我所有的选择...... :-/ 后来也出现了, hackathon-starter 有脚手架和样板生成器吗?但仍然非常感谢您的精彩回复!
别客气。是的,我还喜欢 hackathon-starter 的是完整的帐户管理和工作流程(忘记密码、确认电子邮件等)以及与 sendgrid、paypal 等的集成...... MEAN.js 和 MEAN.io 都缺乏的东西。对于某些类型的项目来说,这是一个很酷的启动器。
如果您不需要 Angular,这对于项目来说无疑是一个不错的起点。不要担心平台的其他部分。您很可能会发现即插即用节点包可以做到这一点。即:gist.github.com/facultymatt/6370903 用于角色
一个好的情况是将它与使用 REST API 的 SOA 一起使用。如果您的日程安排很紧,请放弃角。学习曲线相当陡峭......对于前端来说,它是一个“不错的选择”,但不是关键组件。您始终可以并行学习它并在下一个项目中使用它,或者稍后将其插入到这个项目中。
大家好!我发现了一些源自 hackathon-starter 但也很好的东西:Skeleton! ;-)
C
Chuck Le Butt

首先,MEAN 是 MongoDB、Express、Angular 和 Node.js 的首字母缩写。

它通常标识“堆栈”中这些技术的组合使用。没有“MEAN 框架”之类的东西。

LinnovateLior Kesos 利用了这种混乱。他购买了域名 MEAN.io 并将一些代码放在 https://github.com/linnovate/mean

幸运的是,他们得到了很多宣传,关于 MEAN 的文章和视频也越来越多。当你用谷歌搜索“平均框架”时,mean.io 是列表中的第一个。

不幸的是,https://github.com/linnovate/mean 的代码似乎设计不佳

二月,我自己掉进了陷阱。网站 mean.io 有一个吸引人的设计,Github repo 有 1000 多颗星。质疑质量的想法甚至没有出现在我的脑海中。我开始尝试它,但没过多久就发现了一些不起作用的东西,以及令人费解的代码片段。

提交历史也很令人担忧。他们多次重新设计代码和目录结构,合并新的更改太耗时了。

mean.io 和 mean.js 代码的优点在于它们带有 Bootstrap 集成。他们还通过 PassportJs 提供 Facebook、Github、Linkedin 等身份验证,以及 MongoDB 后端模型(文章)的示例,该模型与带有 AngularJS 的前端模型同步。

根据 Linnovate 的网站:

Linnovate 是以色列领先的开源公司,拥有该国最有经验的团队,致力于打造高端开源解决方案。 Linnovate 是以色列唯一一家为企业提供 AZ 服务以构建和维护其下一个 Web 项目的公司。

从网站上看,他们的核心技能似乎是 Drupal(一个 PHP 内容管理系统),并且直到最近他们才开始使用 Node.js 和 AngularJS。

最近我在阅读Mean.js Blog,事情变得更加清晰。我的理解是,主要的 Javascript 开发人员 (Amos Haviv) 离开 Linnovate 去研究 Mean.js,而将 MEAN.io 项目留给了一些 Node.js 开发新手,他们正在减慢对事物应该如何工作的理解。

将来事情可能会改变,但现在我会避免使用 mean.io。如果您正在寻找快速入门的样板,Mean.js 似乎比 mean.io 更好。


嗨,克里斯,Linnovate 从事 node.js/mongo 工作已经 3 年多了,如果您觉得某些东西的架构很差,并且您对如何改进它有建设性的想法,我们会接受拉取请求和想法。我怀疑你经历了我们在核心项目中所做的转变,以支持依赖注入、包支持和平均 cli,我们一直在将项目从样板转移到框架,并且遇到了一些“成长的痛苦”。
我邀请您重新访问该项目并查看新的包系统,该系统可让您通过平均包扩展您的项目。该功能已被社区很好地接受,并且是全栈包的首批示例之一(通过包提供服务器端和客户端功能,同时扩展核心项目)。
在比较 MEAN.io VS MEAN.js 之后,纯增长。 mean.js 在 1 年内收到了 93 名贡献者,提交了 700 次,而 mean.io 在 3 年内收到了 130 次,而且提交数量惊人的低,只有 1200 次。 (仅凭统计数据,持保留态度)显然,MEAN.js 正在迅速赶上。嘿,我还没有研究代码。但基本上,MEAN.io 听起来像是失去了史蒂夫乔布斯的苹果。
D
Dan Cancro

这是几个应用程序启动器/生成器和其他技术的并排比较,包括 MEAN.js、MEAN.io 和cleverstack。当我找到时间时,我会不断添加替代方案,并且在这种情况下,可能提供的好处列表也在不断增长。今天它达到了 1600 左右。如果有人想帮助提高其准确性或完整性,请单击下一个链接并就您知道的事情进行问卷调查。

Compare app technologies project

从这个数据库中,系统生成如下报告:

MeanJS vs MeanIO trade-off report


我在文档中添加了单独的页面,并进行了头对头比较。有一个比较 MEAN.js 和 MEAN.io
“您需要许可” - 无法访问。
它现在是一个知识合作社。只需在此处填写一份关于您了解的某些技术的调查问卷,我就会授予您访问文档的权限dancancro.com/technology-questionnaires
D
Dan Cancro

我的比较电子表格的 The Starter Trade-offs sheet 对每个生成器进行了全面的一对一比较。因此,不再需要歪曲地挑选好话来谈论您的最爱。

这是 generator-angular-fullstack 和 MEAN.js 之间的一个。百分比是基于我个人权重的每个收益的值,其中完美的生成器将是 100%

generator- angular- fullstack 提供了 MEANJS.org 没有的 8%

1.9% 客户端端到端测试

0.6% 工厂

0.5% 供应商

0.4%

少 0.4%

0.4% 指南针

0.4% 装饰剂

0.4% 端点子生成器

0.4% 评论

0.3% 字体真棒

0.3% 在调试模式下运行服务器

0.3% 将生成器答案保存到文件中

0.2% 恒定

0.2% 开发构建脚本:......用 CDN 版本替换 3rd 方部门

0.2% 认证 - Cookie

0.2% 身份验证 - JSON Web 令牌 (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 版本的 Twitter Bootstrap

0.1% 生产构建脚本:压缩图像

0.1% OpenShift 部署自动化

MeanJS.org。提供 generator-angular-fullstack 没有的 9%

3.7% 专用/可搜索用户组:响应时间大多在一天之内

0.4% 生成路线

0.4% 认证 - Oauth

0.4% 配置

0.4% i18n,本地化

0.4% 输入应用配置文件

0.3% FEATURE(又名模块、实体、crud-mock)

0.3% 菜单系统

0.3% 制作子组件的选项

0.3% 测试 - 客户端

0.3% Javascript 性能

0.3% 生产构建脚本:为 SEO 制作静态页面

0.2% 快速安装?

0.2% 专用/可搜索用户组

0.1% 开发构建脚本:更改时重新加载构建文件

0.1% 开发构建脚本:coffee文件编译成JS

0.1% 控制器 - 服务器端

0.1% 模型 - 服务器端

0.1% 路由 - 服务器端

0.1% 测试 - 服务器端

0.1% 痛饮

0.1% 免受 IP 欺骗

0.1% 生产构建脚本:丑化

0.0% 访问方法:URL 以“#!”开头

0.0% 前端服务和 ajax 调用的方法:使用 $resource

这是 MEAN.io 和 MEAN.js 之间的一个更易读的格式



MeanJS.org。 MEAN.io 提供了这些好处。不



帮助
    * 使用 github 问题的专用/可搜索用户组
     * 有一本关于它的书
文件组织
    * 基本源代码组织,模块(->子模块)-> ;side
    * 模块目录保存指令
代码模块化:
    * AngularJS 模块的方法,只有一个每个文件的模块定义
    * AngularJS 模块的方法,不要更改定义位置以外的模块
模型
     * 对象关系映射
    * 服务器端验证,服务器端示例
    * 客户端验证,使用 Angular 1.3
视图
    * AngularJS 视图的方法,指令以“data-”开头
    * 方法数据准备就绪,使用 ng-init
Control:
    * 前端路由或状态改变的方法,URL 以 '#! '
    * 前端路由或状态改变的方法,使用查询参数存储路由状态
支持的东西:
    ; * 语言,LESS
    * 语言,SASS
语法、语言和编码
    * JavaScript 5 最佳实践,不要使用“新”
测试
    * 测试,使用 Mocha
     ;* 端到端测试
    * 端到端测试,使用 Protractor
    * 持续集成 (CI),使用 Travis< br>开发和调试
    * 命令行界面 (CLI),使用 Yeoman
构建
  ;   * 构建配置文件
    * 部署自动化,使用 Azure
    * 部署自动化,使用 Digital Ocean,它的截屏视频
    * 部署自动化,使用Heroku,它的截屏
代码生成
    * 输入应用程序配置文件
    * 快速安装?
    * 制作子组件的选项
    * 配置生成器
    * 控制器(客户端)生成器
    * 指令生成器
    * 过滤器生成器
    * 路由(客户端)生成器
   ;  * 服务(客户端)生成器
    * 测试 - 客户端
    * 查看或查看部分生成器
     * 控制器(服务器端)生成器
    * 型号(服务器端)生成器
    * 路由(服务器端)生成器< br>    * 测试(服务器端)生成器
实现的功能
    * 帐户管理,忘记密码并重置< br>    * 聊天
    * CSV 处理
    * 邮件发送系统
     *邮件发送系统,使用Nodemailer
    *邮件发送系统,使用自己的邮件实现
    *菜单系统,基于状态
    * Paypal 集成
    * 响应式设计
    * 社交连接管理页面
性能
    * 创建网站图标
安全
     * 免受 IP 欺骗
    * 授权、访问控制列表 (ACL)
    * 身份验证、Cookie
     ;* Websocket 和 RESTful http 共享安全策略




MEAN.io。提供 MeanJS.org 的这些好处。不



质量
    *赞助公司
帮助
    * 带有 flatdoc 的文档
代码模块化
    * 在项目之间共享代码
    ; * 模块管理器
视图
    * 数据准备方法,使用 state.resolve()
控制:
    * 前端代码加载方法,使用 AMD 和 Require.js
    * 前端代码加载方法,使用wiredep
    * 错误处理方法、服务器端日志记录
客户端/服务器通信
    * 集中事件处理
    * XHR 调用方法,使用 $http 和 $q
语法、语言和编码
    * JavaScript 5 个最佳实践,在 IIFE(SEAF、SIAF)中包装代码
开发和调试
    * API自省报告和测试界面,使用 Swagger
    * 命令行界面 (CLI),使用独立命令行界面
Build:
   ;  * 开发构建,将 IIFE(SEAF、SIAF)添加到代码的可执行副本
    * 部署自动化
    * 部署自动化,使用 Heroku
代码生成
    * 脚手架撤消    (mean package -d <name>)
  ;   * FEATURE(又名模块,实体)生成器,为新功能添加的菜单项
实现的功能
    * 管理页面对于用户和角色
    * 内容管理系统    (在模板中使用特殊的数据绑定指令。
切换到编辑模式,您可以编辑值就在你看到它们的地方)
    * 文件上传
    * i1 8n、本地化
    * 菜单系统、子菜单
    * 搜索
    * 搜索,实际上与后端一起使用API
    * 搜索,使用 Elastic Search
    * 样式,使用 Bootstrap,使用 UI Bootstrap AngularJS 指令
     ;* 文本 (WYSIWYG) 编辑器
    * 文本 (WYSIWYG) 编辑器,使用中等编辑器
性能
     * 仪表,服务器端
安全
    * 服务器端经过身份验证的路由限制
    * 身份验证,使用 Oauth,将多个 Oauth 策略链接到一个帐户
    * 身份验证,JSON Web 令牌 (JWT)




MEAN.io。和 MeanJS.org。两者都提供这些好处



质量
    * 版本控制,使用 git
平台:
    * 客户端 JS 框架,使用 AngularJS
    * 前端服务器/框架,使用 Node.JS
     * 前端服务器/框架,使用 Node.JS,使用 Express
    * API 服务器/框架,使用 NodeJS
    * API 服务器/ 框架,使用 NodeJS,使用 Express
帮助
    * 专用/可搜索用户组的问题
     * 问题专用/可搜索用户组,使用 Google 群组
    * 问题专用/可搜索用户组,使用 Facebook
    * 专用/可搜索用户问题分组,响应时间大多在一天内
    * 示例应用程序
    * 英语教程截屏h
    * 使用 Youtube 的英文教程截屏视频
    * 专用聊天室
文件组织
    * 基本源代码组织,模块(->子模块)->side,类型为子文件夹
    * 模块目录保存控制器
   ;  * 模块目录保存服务
    * 模块目录保存模板
    * 模块目录保存单元测试
     * 为每个模块单独的路由配置文件
代码模块化
    * 模块化功能
     * AngularJS 模块的方法,没有全局“app”模块变量
    * AngularJS 模块的方法,没有 IIFE 的没有全局“app”模块变量
模型:
    * 持久存储设置
    * 设置持久存储,使用 NoSQL db
    * 设置持久存储,使用 NoSQL db,使用 MongoDB
查看
     * 控制器中没有 XHR 调用
    * 模板,使用 Angular 指令
    * 数据准备方法,防止 Flash 无样式/编译内容( FOUC)
控制
    *前端路由或状态改变的方法,例子
    *方法到前端路由或状态改变,基于状态的路由
    * 前端路由或状态改变的方法,基于状态的路由,使用ui-router
     ;* 前端路由或状态更改的方法,HTML5 模式
    * 前端代码加载的方法,使用 angular.bootstrap()
客户端/服务器通信 :
    * 仅提供状态代码作为响应
     * 接受嵌套的 JSON 参数
    * 向请求添加计时器标头
    * 支持签名和加密的 cookie
     * 根据路由定义提供 URL
    * 只能提供标头
    * 使用 JSON 的 XHR 调用方法
     * XHR 调用方法,使用 $resource (angular-resource)
对事物的支持
    * 语言,JavaScript (服务器端)
    * 语言、Swig
语法、语言和编码
    * JavaScript 5 最佳实践, 使用 'use strict'
工具配置/自定义
    * 单独的运行时配置文件
测试:< br>    * 使用 Jasmine 进行测试
    * 使用 Karma 进行测试
    * 客户端单元测试
     ;* 持续集成 (CI)
    * 使用 Live Reload 进行自动化设备测试
    * 服务器端集成 &单元测试
    * 服务器端集成 &单元测试,使用 Mocha
开发和调试
    * 命令行界面 (CLI)
构建:< br>    * 构建时依赖管理,使用 npm
    * 构建时依赖管理,使用 bower
     * 构建工具/任务运行器,使用 Grunt
    * 构建工具/任务运行器,使用 gulp
    * 开发构建,脚本
     * 开发构建,更改时重新加载构建脚本文件
    * 开发构建,将资产复制到构建或 dist 或目标文件夹
     ;* 开发构建,html 页面处理
    * 开发构建,html 页面处理,通过搜索目录注入引用
    * 开发构建,html 页面处理,通过搜索目录注入引用,注入js引用
    *德velopment 构建,html 页面处理,通过搜索目录注入引用,注入 css 引用
    * 开发构建,LESS/SASS/etc 文件被 lint,编译
     * 开发构建,JavaScript 样式检查
    * 开发构建,JavaScript 样式检查,使用 jshint 或 jslint
    * 开发构建,运行单元测试
    * 生产构建、脚本
    * 生产构建、连接(聚合、通配、捆绑)    (如果你将 debug:true 添加到您的 config/env/development.js 将不会
丑化)
    * 生产构建,缩小
    *生产构建,安全预压缩,使用 ng-annotate
    * 生产构建,丑化
    * 生产构建,为 SEO 制作静态页面
代码生成
    * FEATURE(又名模块,实体)生成器    (README.md
功能 css
路由
控制器
查看
附加菜单item)
实现的功能
    * 404 页
    * 500 页
     * 帐户管理
    * 帐户管理,注册/登录/注销
    * 帐户管理,密码管理器友好
  ;   * 前端 CRUD
    * 全栈 CRUD
    * 全栈 CRUD,带读取功能
    * 全栈 CRUD,具有创建、更新和删除功能
    * 谷歌分析
    * 菜单系统
    * 实时数据同步
    * 实时数据同步,使用 socket.io
    * 样式,使用 Bootstrap< br>性能
    ; * Javascript 性能方面
    * Javascript 性能方面,使用 lodash
    * 一个事件循环线程处理所有请求
     * 可配置的响应缓存    (Express 插件
https://www.npmjs.org/package/apicache)
   ;  * 集群 HTTP 会话
安全性
    * JavaScript 混淆
    * https
    * 身份验证,使用 Oauth
    * 身份验证,基本    (使用 Passport 或其他)
    ; * 身份验证,摘要    (使用 Passport 或其他)
    * 身份验证,令牌    (使用 Passport 或其他)


我建议您合并您发布的两个答案。
h
hughc

我很惊讶没有人提到 Yeoman 生成器 angular-fullstack。它是排名第一的 Yeoman 社区生成器,目前在 generator page 上有 1490 颗星,而 Mean.js 有 81 颗星(考虑到 MEANJS 的新情况,这当然不是一个公平的比较)。它似乎得到了积极的维护,在我写这篇文章时它的版本是 2.05。与 MEANJS 不同,它不使用 Swig 进行模板化。它可以用内置的护照搭建。


@SDude 的回答提到了它。
在哪里?我在他的回答或评论中看不到任何地方。
也许我误解了你的回答......但 SDude 提到“Mean.js 使用 Yeoman Generators”作为脚手架。
我完全忘记了这一点。实际上,我很久以前在 generator-angular-fullstack 的 github 评论中了解了 MEAN.js ......我已将其添加到答案中。
@CMPSoares ...有多个 Yeoman 生成器可以搭建 MEAN 堆栈。 Angular-Fullstack 和 Mean.js 只是其中的两个(可以说是最充实的两个?)。您可以在此处查看所有 Yeoman 社区生成器...Yeoman Generators