我想使用 MEAN JavaScript 堆栈,但我注意到有两个不同的堆栈,它们有自己的网站和安装方法:mean.js 和 mean.io。所以我问自己这个问题:“我用哪一个?”。
所以为了回答这个问题,我问社区你是否可以解释这两者之间的区别是什么?如果可能的话利弊?因为他们看起来和我很相似。
它们本质上是相同的......它们都使用 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'),但它摇滚..
玩得开心!
首先,MEAN 是 MongoDB、Express、Angular 和 Node.js 的首字母缩写。
它通常标识“堆栈”中这些技术的组合使用。没有“MEAN 框架”之类的东西。
Linnovate 的 Lior 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 更好。
这是几个应用程序启动器/生成器和其他技术的并排比较,包括 MEAN.js、MEAN.io 和cleverstack。当我找到时间时,我会不断添加替代方案,并且在这种情况下,可能提供的好处列表也在不断增长。今天它达到了 1600 左右。如果有人想帮助提高其准确性或完整性,请单击下一个链接并就您知道的事情进行问卷调查。
Compare app technologies project
从这个数据库中,系统生成如下报告:
MeanJS vs MeanIO trade-off report
我的比较电子表格的 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() 控制 b>: * 前端代码加载方法,使用 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 或其他) |
我很惊讶没有人提到 Yeoman 生成器 angular-fullstack。它是排名第一的 Yeoman 社区生成器,目前在 generator page 上有 1490 颗星,而 Mean.js 有 81 颗星(考虑到 MEANJS 的新情况,这当然不是一个公平的比较)。它似乎得到了积极的维护,在我写这篇文章时它的版本是 2.05。与 MEANJS 不同,它不使用 Swig 进行模板化。它可以用内置的护照搭建。
不定期副业成功案例分享