17611538698
webmaster@21cto.com

是时候和LAMP技术栈说再见,现在是拥抱MEAN的机会?

资讯 0 3062 2019-02-08 12:03:08

21CTO导读:是否在为你的下一个Web应用开发寻找新的技术栈?本文来了解MEAN在Web全栈开发的优势与缺点。


 
MEAN是神马意思?它是MangoDB,Express.js,Angular.js和Node.js的首字缩写。
 

mean-stacks-main.jpg


 
MongoDB是一个NoSQL数据库,提供一个灵活的数据存储层,Node.js持续运行在服务器端。它充分利用了现今互联网的潜力。Express.js提供了Web应用程序的标准化开发,Angular.js提供在Web应用程序的交互能力。
 
以上是为MEAN技术栈。
 
LAMP或LNMP(Linux,Nginx,MySQL和PHP)的历史足够悠久,到现今仍然显得不够灵活 ,有的技术目标不能特别满足需求,因此很多软件产品正在向MEAN技术栈迁移。
 
我们对两个技术栈做了总结和比较,请见如下表格:
 
1549581129020.jpg

MEAN技术栈


 
开发Web应用程序的人员都会选择最稳定的技术与框架。MEAN技术栈是在2014年推出,一经推出就改变了Web开发过程的方式。
 
1 MongoDB
 
这是一个文档型数据库,由后端应用程序将数据转换为JSON格式存储。
 
2 Express.js 
 
一个在Node.js上运行的后端Web应用程序框架。
 
3 AngularJS
 
一个Web前端应用程序框架。在用户浏览器侧运行JavaScript代码,让应用UI动态化。
 
4 Node.js
 
这是一个JavaScript运行环境,在JS中实现应用程序的后端支持。
 
MEAN技术栈本质上就是为后端与前端开发的提供相同的组件,并使用相同的编程语言。访问数据库是通过MongoDB的驱动程序。驱动程序使用典型的JavaScript概念(对象和异步执行),使用回调函数或Promise方式来促进交互。
 
下面我们在JavaScript数组中插入三个对象:
 

mean-stacks-node-js-code.jpg


 
数据库系统:MongoDB
 
MongoDB有两个优点。既有NoSQL的快速和可扩展的键值存储能力,也有关系数据库的丰富功能。
 
它和关系数据库不同,MongoDB使用活动模式,它使用BSON文档存储在其数据结构集合中。
 

mean-stacks-node-js-code.jpg


 
虽然MySQL之类的RDBMS将数据存储在特定的行和列中,但MongoDB的数据模型存储数据不用拘泥于数据结构如何,亦不用RDBMS现有的身份验证规则、数据访问或索引等功能。开发者可以不间断地主动调整架构。
 
后端框架:Express.js
 
Express是一个在后端执行的JavaScript框架。它是Node.js环境的一个模块,并在其下运行。
 
Express处理对应用程序的不同部分(或在同一环境中运行的各种应用程序)的请求分配。如下图:
 

The-backend-web-framework_-Express.jpg



Express执行负责业务逻辑的Web应用程序代码的一部分,并返回由Web浏览器识别的HTML文件。Express提供RESTful API,前端通过一行代码即可轻松访问。
 
前端框架:AngularJS
 
Angular在Web浏览器的环境中呈现JavaScript代码,为反应式用户界面(UI)腾出空间。与静态Web表单不同,人们必须填写表单并点击提交,而反应式UI界面中用户输入后不必刷新整个页面,但只对基本组件产生影响。
 
你可以将Web应用前端实现为一组组件。附加到HTML的JavaScript代码包含用于执行和使用JavaScript结果的回调,应用程序前端可以由许多简单或嵌套组件构建而成。
 

The-frontend-framework_-AngularJS.jpg


 
Angular应用的代码可以在后端服务器编译,而不必到前端浏览器,也可以作为本机桌面或移动应用程序编译。
 
后端运行时环境:Node.js
 
在Express,Node.js的帮助下,运行后端应用程序的JavaScript运行时环境是基于Google的V8引擎,该引擎支持Google Chrome和众多开源的基于Chromium类浏览器。它的许多模块对于在MEAN堆栈上部署Web应用程序至关重要 - 包括HTTP模块,都可以使用npm安装第三方模块。
 
The-backend-runtime-environment_-Node.jpg

 
Node.js为异步事件驱动。也就是说,应用程序在轮询不对请求进行确认。在此期间,它会同时执行其他任务。完成后回调请求会通知应用程序,启动其他任务可以获得最佳资源利用率,从而在扩展应用程序同时启用许多并行操作。MongoDB亦可异步工作,因此适用于Node.js应用程序。
 
如果你还没有在MEAN堆栈上搭建项目,我们来了解一下为什么你应该把它用于下一个Web开发项目。
 
一种统治两个平台的语言:JavaScript
 
MEAN堆栈中的每段代码都是JavaScript。而在LAMP或LNMP技术栈中,服务器端用PHP编码,客户端用JavaScript编码,查询用MySQL。如果使用MEAN,MongoDB等均可使用JavaScript/JSON的二进制版本。简而言之,MEAN使用同一种语言在客户端和服务器端工作通行无阻。
 
有成本效益,兼具快速开发并可扩展
 
JavaScript开发团队用MEAN技术栈可作为服务器端和客户端编码。所以,不必再为不同的技术栈雇用相应的团队。同一个开发人员可以在前端和后端开发人员之间切换角色,这将为公司节省很多成本。Web开发历史上第一次全栈开发人员只需要懂一种开发语言就可以工作。
 
Node.js的优点
 
Node.js是MEAN堆栈的关键部分,它是一个非常可扩展且强大的框架。Node.js是运行时环境,符合非阻塞输入和输出。因此能够有效地处理新查询。在LAMP技术栈中,客户端必须明确要创建查询的请求。如果使用Node.js,这一切都会自动发生。
 
MongoDB的优点
 
MongoDB是Web开发人员在管理大数据时需要的数据库。整个过程就像OOP开发一样,让人轻松有效地处理。
 
开源 - 编辑源,编译和安装
 
MEAN技术栈中所有的技术全部开源。也就是说,开发人员可以任意访问每个技术的源代码,对其进行修改以满足自己的个性化需求。但这些技术不会因使用和分发而降低成本。这些开源技术不仅可以将其用于个人用途,还可以将其安装在公司的工作空间中。
 
良好的开发者社区支持
 
很多个人和企业、赞助商的大型社区支持MEAN技术栈和其包含的技术。当你有无法令人头疼的代码问题时,会有很多热心的人们给你提供帮助。
 
 
 

作者:老夏
来源:21CTO社区(未经许可,请勿转载)


评论