什么是MEAN堆栈? JavaScript Web应用程序

MEAN堆栈,已定义

MEAN堆栈是一个软件堆栈-即构成现代应用程序的一组技术层-完全用JavaScript构建。 MEAN将JavaScript的出现表示为一种“ 全栈开发 ”语言,从前端到后端运行应用程序中的所有内容。 MEAN中的每个缩写都代表堆栈中的一个组件:

  • MongoDB:使用JSON (JavaScript对象表示法)查询并以二进制JSON格式存储数据结构的数据库服务器
  • Express:服务器端JavaScript框架
  • Angular:客户端JavaScript框架
  • Node.js: JavaScript运行时

[ InfoWorld的2020年度技术奖获奖者:年度最佳软件开发,云计算,数据分析和机器学习产品 ]

MEAN吸引力的很大一部分是一致性,这源于它一直以来都是JavaScript。 对于开发人员而言,生活更简单,因为应用程序的每个组件(从数据库中的对象到客户端代码)都以相同的语言编写。

与Web应用程序开发人员长期以来经常使用的LAMP的大杂烩形成鲜明对比。 与MEAN一样,LAMP是堆栈中使用的组件(Linux,Apache HTTP Server,MySQL以及PHP,Perl或Python)的首字母缩写。 堆栈的每个部分与其他任何部分都没有共同之处。

这并不是说LAMP堆栈很差。 它仍然被广泛使用,并且堆栈中的每个元素仍然受益于活跃的开发社区。 但是MEAN提供的概念一致性是一个福音。 如果在堆栈的各个级别使用相同的语言和许多相同的语言概念,则开发人员可以更轻松地一次掌握整个堆栈。

大多数MEAN堆栈具有所有四个组件-数据库,前端,后端和执行引擎。 这并不意味着堆栈由这些元素组成,而是它们构成了核心。

MongoDB

与其他NoSQL数据库系统一样 ,MongoDB使用无模式设计。 数据以JSON格式的文档进行存储和检索,该文档可以具有任意数量的嵌套字段。 这种灵活性使MongoDB非常适合处理快速变化的需求时的快速应用程序开发。

使用MongoDB有很多警告。 首先,MongoDB在默认情况下是不安全的。 如果将其部署在生产环境中,则必须采取措施保护它 。 对于来自关系数据库甚至其他NoSQL系统的开发人员,您需要花一些时间来了解MongoDB及其工作方式。 InfoWorld的Martin Heller 在InfoWorld的评论中深入研究了MongoDB 4 ,在其中他谈到了MongoDB的内部结构,查询和缺点。

与任何其他数据库解决方案一样,您将需要某种中间件才能在MongoDB和JavaScript组件之间进行通信。 MEAN堆栈的一种常见选择是Mongoose 。 Mongoose不仅提供连接性,而且还提供对象建模,应用程序侧验证以及您不希望为每个新项目重新发明而烦恼的许多其他功能。

Express.js

Express可以说是Node.js使用最广泛的Web应用程序框架。 Express仅提供一小部分基本功能-本质上是最小的可编程Web服务器-但可以通过插件进行扩展。 这种简洁的设计有助于保持Express的轻便性和高性能。

[ 也在InfoWorld上:21个热门编程趋势-21个趋冷 ]

没有人说必须通过Express将MEAN应用直接提供给用户,尽管这肯定是常见的情况。 另一种体系结构是在Express前面部署另一个Web服务器(例如Nginx或Apache)作为反向代理。 这允许将负载平衡之类的功能卸载到单独的资源中。

由于Express是故意最小的,因此它没有太多的概念开销。 Expressjs.com上教程可让您快速概览基础知识,以连接数据库及其他。

角度的

Angular (以前称为AngularJS )用于构建MEAN应用程序的前端。 Angular使用浏览器JavaScript来格式化HTML模板中服务器提供的数据的格式,因此渲染网页的许多工作都可以卸载到客户端。 前端使用Angular构建了许多单页Web应用程序。

一个重要的警告:开发人员通过使用TypeScript (一种类似于JavaScript的类型化语言,可以编译为JavaScript)进行编写来使用Angular。 对于某些人来说,这违反了MEAN堆栈的基本概念之一,即JavaScript随处可见且专门使用。 但是,TypeScript是JavaScript的近亲,因此两者之间的过渡不像其他语言那样令人讨厌。

为了深入探究Angular,InfoWorld的Martin Heller为您服务。 在他的Angular教程中,他将引导您完成现代Angular Web应用程序的创建。

Node.js

最后但并非最不重要的一点是Node.js — JavaScript运行时为MEAN Web应用程序的服务器端提供了动力。 Node基于Google的V8 JavaScript引擎,该引擎与Chrome Web浏览器中运行JavaScript引擎相同。 Node是跨平台的,可以在服务器和客户端上运行,并且与传统的Web服务器(例如Apache)相比具有某些性能优势。

与传统的Web服务器相比,Node.js采用不同的方法来服务Web请求。 在传统方法中,服务器产生一个新的执行线程,甚至派生一个新进程来处理请求。 生成线程比派生进程更有效,但是两者都涉及大量开销。 大量线程可能导致负载沉重的系统在线程调度和上下文切换上花费宝贵的时间,从而增加了延迟,并对可伸缩性和吞吐量施加了限制。

Node.js的效率要高得多。 Node运行在系统中注册的单线程事件循环来处理连接,每个新连接都会触发JavaScript回调函数。 回调函数可以处理具有非阻塞I / O调用的请求,并且如有必要,可以从池中生成线程以执行阻塞或CPU密集型操作并在CPU内核之间实现负载平衡。

[ 同样在InfoWorld上:什么是敏捷方法论? [现代软件开发讲解 ]

与大多数具有线程伸缩能力的竞争性架构(包括Apache HTTP Server,ASP.NET,Ruby on Rails和Java应用程序服务器)相比,Node.js需要更少的内存来处理更多的连接。 因此,Node已成为构建Web服务器,REST API和实时应用程序(如聊天应用程序和游戏)的极受欢迎的选择。 如果有一个定义MEAN堆栈的组件,那就是Node.js。

有关Node.js的介绍, 请参见Martin Heller的解释器 。 要开始使用Node进行开发,请参阅他的Node.js教程

MEAN堆栈的优点和好处  

这四个组成部分并不能一并解决所有问题,但它们无疑在当代发展中占据了一席之地。 IBM 分解了MEAN堆栈符合要求的区域 。 由于MEAN堆栈具有可扩展性并且可以同时处理大量用户,因此对于云原生应用程序而言,它是一个特别好的选择。 Angular前端也是单页应用程序的绝佳选择。 示例包括:

  • 费用追踪应用
  • 新闻汇总网站
  • 地图和位置应用

曼恩vs曼恩

有时使用缩写词“ MERN”来描述使用React.js代替Angular的MEAN堆栈。 React是一个框架,而不是像Angular这样的功能完善的库,将React交换到基于JavaScript的堆栈中有其优点和缺点 。 简而言之,React易于学习,并且大多数开发人员比编写和测试成熟的Angular应用程序可以更快地编写和测试React代码。 React还产生了更好的移动前端。 另一方面,Angular代码更稳定,更简洁且性能更高。 通常,Angular是企业级开发的选择。

但是,您可以选择该选项这一事实表明,MEAN并不是开发人员的束缚。 您不仅可以将不同的组件交换为规范的四层之一; 您也可以添加补充组件。 例如,可以在Express中使用诸如Redis或Memcached之类的缓存系统来加快对请求的响应。

MEAN堆栈开发人员

要具备成为MEAN堆栈开发人员的技能,基本上就需要成为一名全栈开发人员 ,重点是我们在这里讨论过的特定JavaScript工具集。 但是,MEAN堆栈的普及意味着许多招聘广告将针对具有MEAN特定技能的全栈开发人员。 Guru99 分解了获取这些工作之一的先决条件 。 除了熟悉基本的MEAN堆栈组件之外,MEAN堆栈开发人员还应该对以下方面有充分的了解:

  • 前端和后端流程
  • HTML和CSS
  • 编程模板和体系结构设计准则
  • Web开发,持续集成和云技术
  • 数据库架构
  • 软件开发生命周期(SDLC)以及在敏捷环境中进行开发的感觉

MEAN堆栈开发人员的薪水是多少? 尽管总有一些基于经验和雇主的范围,但这绝对是一个有利可图的领域。 Neuvoo.com表示,截至2019年12月,MEAN堆栈开发人员可以期望的中位薪水约为每年125,000美元 。 的确,Indeed.com将MEAN堆栈开发人员与更全面的开发人员混为一谈,并将典型的年薪定在112,000美元左右

[ 通过InfoWorld Daily新闻通讯了解软件开发,云计算,数据分析和机器学习方面的最新发展 ]

MEAN堆栈教程

您是否熟悉技术基础知识并准备好学习MEAN堆栈? 有许多免费的教程可以帮助您入门。 Angular Templates网站有一个特别详尽的教程 ,可以指导您完成使用MEAN堆栈构建简单网站的过程。 TutorialsPoint 使用MEAN堆栈构建单页Web应用程序提供了很好的指南 。 祝您手部变脏,祝您好运!

From: https://www.infoworld.com/article/3319786/what-is-the-mean-stack-javascript-web-applications.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值