“堆栈”一词是指相互堆叠以创建Web服务器环境的技术 。
他们依靠两种不同的技术来实现后端语言,数据库和服务器环境。
随着技术和后端语言的发展, Web堆栈已经发展了数十年。
如果您不熟悉Web技术,或者只是想了解这两个堆栈,那么本指南将提供您所需的一切。
哪种类型的项目将从这两种选择中受益最多?
每个堆栈在哪里都有优势?
在本文中,我想通过查看它们的技术选择(优缺点)来阐明这两个Web堆栈。
传统的LAMP开发
所有这些都是独立的软件包,这些软件包组合在一起构成了通用的服务器解决方案。
LAMP代表Linux,Apache,MySQL和PHP 。
大多数开发人员应该了解传统的LAMP堆栈,因为它早在Web时代就已经存在。
它已经存在了数十年,并且是托管网站的一种行之有效的方法。
坚持使用LAMP的最大原因是安全性和广泛的支持 。
WordPress,Drupal和Joomla都在PHP / MySQL上运行。
此外,您还可以访问最受欢迎的CMS引擎 。
如果您使用LAMP堆栈,则基本上可以在任何地方托管。
所有后端技术(例如PHP和MySQL)都是众所周知的,并受到每个主要托管服务提供商的支持 。

您还可以在Windows服务器上以WAMP堆栈的形式运行变体。
LAMP体系结构中有一些可自定义的选项 ,例如LEMP用nginx替换Apache。
这就是为什么Linux在服务器环境中最有意义,这就是LAMP经受了现代Web开发时间的考验的原因。
但是,所有核心软件(包括Apache,MySQL和PHP) 都是开源的 ,并且主要是针对Linux制作的。
例如,您可以查看此ServerFault问题以获取更多信息。
您将在论坛上找到很多支持,这些支持涵盖了配置LAMP环境和对LAMP环境进行故障排除所需的一切。
大多数开发人员都选择这条路线,因为这是使网站在线的最简单方法 。
带有MEANJavaScript后端
节点为MEAN堆栈提供了动力 ,并提供了一个主要优势:一切都以一种语言运行 。
Node.js是开发人员的最新技术,他们决心运行使用JavaScript构建的可伸缩应用程序。
MEAN堆栈可以在任何OS上运行 ,并且Node甚至带有自己的服务器来处理后端的JS。
该首字母缩写词对服务器操作系统或服务器软件没有要求。
MEAN代表MongoDB , Express.js , Angular ,当然还有Node.js。

您可以在MeanJS网站上找到许多文档和支持。
尽管此堆栈已引起了广泛的关注,但与传统的LAMP堆栈相比,它仍然远远没有达到稳定的支持量。
全栈JavaScript的使用还可以改善开发,因为一种语言适用于所有前端和后端工作。
MongoDB是一个NoSQL数据库 ,可以优化查询。
因为它最终更快 , 更容易扩展 。
那么,为什么有人会选择MEAN?
例如,可以将MEAN切换到MEEN堆栈,将Angular替换为Ember 。
加上许多其他JS框架作为稳定的解决方案投放市场。

这样可以更轻松地组织JavaScript Web应用程序,使其在自然环境中运行 。
程序员会喜欢MEAN堆栈,因为它可以分离代码以实现可维护性和增长性 。
但是,如果您喜欢Node,并且想在JavaScript上运行所有程序,那是值得的。
学习管理MEAN应用程序所需的所有技术可能需要几个月的时间。
在这个问题上有很多东西要学习,这可能是新开发人员进入的最大障碍。
以下是一些初学者的入门指南。
PHP与节点
许多Web开发人员从(或最终学习)PHP开始,因为它在Web平台和托管提供程序中占主导地位。
PHP从90年代中期开始出现,并且确实是最流行的后端语言。
您今天使用的许多Web应用程序都可以使用带有NPM的 Node.js作为事实上的程序包管理器,其中包括强大的前端框架(例如Angular) 。
Node.js现在无处不在。

JavaScript是MEAN堆栈上所有内容的根本,因此,如果您喜欢JS,那么您将非常喜欢构建MEAN Web应用程序。
Node的另一个好处是它带有自己的Web服务器 。
PHP最初是网站的通用解决方案,后来Swift发展为一个庞大的不相关功能的库。
许多开发人员认为PHP是一种设计不良的语言,因为创建者Rasmus Lerdorf实际上并未将其设计为语言。
但是,随着PHP 7尝试修复该语言的许多错误,以及使用OOP框架(例如Laravel) ,PHP现在比以往任何时候都更好。

那么具有MEAN堆栈的Node可能值得考虑。
您真的喜欢编写JavaScript吗?
所以语言辩论取决于您的个人选择 。
如果您已经了解PHP,并希望坚持自己的知识,那么LAMP也是一条可行的途径。
总体利弊:
每个Web堆栈都有多个要比较的层 ,包括操作系统,服务器软件,数据库和后端语言。
- MEAN堆栈还包括Angular ,这是一个前端框架。 LAMP堆栈中没有任何必需的框架,但是您始终可以将自己的框架添加到所构建的任何应用程序中。
- 关于操作系统,LAMP堆栈寻找Linux的派生版本。 无论堆栈如何, Linux通常都是服务器环境的最佳选择 ,MEAN也是如此。
- 现在,服务器的操作系统只是计算机软件,而不是Web服务器软件 。 为此,您需要一个类似Apache或nginx的程序。 LAMP使用Apache,因为它是可用的最稳定的选择之一。
- MEAN使用Node.js服务器 ,它是Node软件包的一部分 。 它仍然是相当新的,并且尽管那里有很多支持,但是Node的社区规模与Apache差不多。
- 另外,节点服务器需要JavaScript后端 (无扩展名)。 Apache 支持大多数后端语言 ,并且有许多免费扩展以提供更好的支持。 但是截至目前,Apache尚无节点支持。
- 数据库管理是您发现最大差异的地方 。 LAMP使用MySQL进行关系数据存储,而MEAN使用MongoDB这是一个非关系数据库 。 非关系型DB的速度要快得多 ,并且提供了一种更轻松的扩展方式以提供更高的流量。
- 请记住, PHP不仅限于MySQL 。 它可以使用MongoDB和其他替代方法,例如PostgreSQL或SQLite。 只是大多数PHP开发人员都知道MySQL,因此它是典型LAMP堆栈的主要竞争者。
- MEAN堆栈通常运行速度更快 , 规模更大 ,但需要更多的时间和服务器知识来学习系统。 LAMP堆栈尝试和真实的 ,他们来外的开箱即用的最安全的基础设施和最广泛的支持可想而知。
- 编程语言在两个堆栈之间有很大的不同。 LAMP主要在包含WordPress和Laravel框架的PHP上工作。 MEAN在后端使用ExpressJS / NodeJS,而在前端使用AngularJS。
- MEAN是全栈式JavaScript ,您需要学习很多才能使其运行。 新创业公司经常选择愿意突破Web应用程序开发的界限。 LAMP更传统, 前端为JS,后端为PHP 。 它是为只希望使网站在线而又无需过多担心的人而设计的 。


包起来
MEAN仍在增长,并且也有大量的支持,但是可能比大多数人想要处理的技术更多。
我想说大多数网站倾向于LAMP堆栈,因为它已经过测试,并且在Google中有很多有用的问答线程。
可以将这两个安装程序本地安装在您的计算机上,并在不使用远程服务器的情况下基于它们进行构建。
随意尝试一下,亲自体验一下。
而且,如果您要在任一堆栈上查找更多信息,我在下面收集了一组方便的链接。
- 了解如何使用MEAN构建现代Web应用 (thinkster.io)
- Docker LAMP堆栈管理员 (jessesnet.com)
- 如何在Debian 8 (digitalocean.com) 上安装Linux,Apache,MySQL,PHP(LAMP)堆栈