随着技术和后端语言的发展, Web堆栈已经发展了数十年。 当前最流行的两个Web堆栈是LAMP和MEAN 。 他们依靠两种不同的技术来实现后端语言,数据库和服务器环境。 “堆栈”一词是指相互堆叠以创建Web服务器环境的技术 。
在本文中,我想通过查看它们的技术选择(优缺点)来阐明这两个Web堆栈。 每个堆栈在哪里都有优势? 哪种类型的项目将从这两种选择中受益最多? 如果您不熟悉Web技术,或者只是想了解这两个堆栈,那么本指南将为您提供所需的一切。
传统的LAMP开发
大多数开发人员应该了解传统的LAMP堆栈,因为它早在Web时代就已经存在。 LAMP代表Linux,Apache,MySQL和PHP 。 所有这些都是独立的软件包,这些软件包组合在一起构成了通用的服务器解决方案。
坚持使用LAMP的最大原因是安全性和广泛的支持 。 它已经存在了数十年,并且是托管网站的一种行之有效的方法。
所有后端技术(例如PHP和MySQL)都是众所周知的,并受到每个主要托管服务提供商的支持 。 如果您使用LAMP堆栈,则基本上可以在任何地方托管。 此外,您还可以访问最受欢迎的CMS引擎 。 WordPress,Drupal和Joomla都在PHP / MySQL上运行。
LAMP体系结构中有一些可自定义的选项 ,例如LEMP用nginx替换Apache。 您还可以在Windows服务器上以WAMP堆栈的形式运行变体。
但是,所有核心软件(包括Apache,MySQL和PHP) 都是开源的 ,并且主要是针对Linux制作的。 这就是为什么Linux在服务器环境中最有意义,这就是LAMP经受了现代Web开发时间的考验的原因。
大多数开发人员都选择这条路线,因为这是使网站在线的最简单方法 。 您将在论坛上找到很多支持,这些支持涵盖了配置LAMP环境和对LAMP环境进行故障排除所需的一切。 例如,您可以查看此ServerFault问题以获取更多信息。
带有MEANJavaScript后端
Node.js是开发人员的最新技术,他们决心运行使用JavaScript构建的可伸缩应用程序。 节点为MEAN堆栈提供了动力 ,并提供了一个主要优势:一切都以一种语言运行 。
MEAN代表MongoDB , Express.js , Angular ,当然还有Node.js。 该首字母缩写词对服务器操作系统或服务器软件没有要求。 MEAN堆栈可以在任何OS上运行 ,并且Node甚至带有自己的服务器来处理后端的JS。
您可以在MeanJS网站上找到许多文档和支持。
尽管此堆栈已引起了广泛的关注,但与传统的LAMP堆栈相比,它仍然远远没有达到稳定的支持量。
那么,为什么有人会选择MEAN? 因为它最终更快 , 更容易扩展 。 MongoDB是一个NoSQL数据库 ,可以优化查询。 全栈JavaScript的使用还可以改善开发,因为一种语言适用于所有前端和后端工作。
加上许多其他JS框架作为稳定的解决方案投放市场。 例如,可以将MEAN切换到MEEN堆栈,将Angular替换为Ember 。
程序员会喜欢MEAN堆栈,因为它为保持可维护性和增长而将代码分开 。 这样可以更轻松地组织JavaScript Web应用程序,使其在自然环境中运行 。
在这个问题上有很多东西要学习,这可能是新开发人员进入的最大障碍。 学习管理MEAN应用程序所需的所有技术可能需要几个月的时间。 但是,如果您喜欢Node,并且想在JavaScript上运行所有程序,那是值得的。
以下是一些初学者的入门指南。
PHP与节点
PHP从90年代中期开始出现,并且确实是最流行的后端语言。 许多Web开发人员从(或最终学习)PHP开始,因为它在Web平台和托管提供商中占主导地位。
Node.js现在无处不在。 您今天使用的许多Web应用程序都可以使用带有NPM的 Node.js作为事实上的软件包管理器,其中包括强大的前端框架(例如Angular) 。
Node的另一个好处是它带有自己的Web服务器 。 JavaScript是MEAN堆栈上所有内容的根本,因此,如果您喜欢JS,那么您将非常喜欢构建MEAN Web应用程序。
许多开发人员认为PHP是一种设计不良的语言,因为创建者Rasmus Lerdorf实际上并未将其设计为语言。 PHP最初是网站的通用解决方案,后来Swift发展为一个庞大的不相关功能的库。
但是,随着PHP 7尝试修复该语言的许多错误,以及使用OOP框架(如Laravel) ,PHP现在比以往任何时候都更好。
因此,语言辩论取决于您的个人选择 。 您真的喜欢编写JavaScript吗? 那么具有MEAN堆栈的Node可能值得考虑。
如果您已经了解PHP,并且想坚持自己的知识,那么LAMP也是一条可行的路线。
总体利弊:
每个Web堆栈都有多个要比较的层 ,包括操作系统,服务器软件,数据库和后端语言。
- MEAN堆栈还包括Angular ,这是一个前端框架。 LAMP堆栈中没有任何必需的框架,但是您始终可以将自己的框架添加到所构建的任何应用程序中。
- 关于操作系统,LAMP堆栈寻找Linux的派生版本。 无论堆栈如何, Linux通常都是服务器环境的最佳选择 ,MEAN也是如此。
- 现在,服务器的操作系统只是计算机软件,而不是Web服务器软件 。 为此,您需要一个类似Apache或nginx的程序。 LAMP使用Apache,因为它是可用的最稳定的选择之一。
- MEAN使用Node.js服务器 ,它是Node软件包的一部分 。 它仍然是相当新的,尽管那里有很多支持,但是Node的社区规模与Apache差不多。
- 另外,节点服务器需要JavaScript后端 (无扩展名)。 Apache 支持大多数后端语言 ,并且有许多免费扩展以提供更好的支持。 但是到目前为止,Apache尚无Node支持。
- 数据库管理是您发现最大差异的地方 。 LAMP使用MySQL进行关系数据存储,而MEAN使用MongoDB这是一个非关系数据库 。 非关系型数据库的速度要快得多 ,并且提供了一种更轻松的扩展方式以提供更高的流量。
- 请记住, PHP不仅限于MySQL 。 它可以使用MongoDB和其他替代方法,例如PostgreSQL或SQLite。 只是大多数PHP开发人员都知道MySQL,因此它是典型LAMP堆栈的主要竞争者。
- MEAN堆栈通常运行速度更快 , 规模更大 ,但是需要更多的时间和服务器知识来学习系统。 LAMP堆栈经过了反复试验 ,它们开箱即用,具有最安全的基础架构和可想象的最广泛的支持。
- 编程语言在这两个堆栈之间有很大的不同。 LAMP主要在包含WordPress和Laravel框架PHP上工作。 MEAN在后端使用ExpressJS / NodeJS,而在前端使用AngularJS。
- MEAN是全栈式JavaScript ,您需要学习很多才能使其运行。 新创业公司经常选择愿意突破Web应用程序开发的界限。 LAMP更传统, 前端为JS,后端为PHP 。 它是为那些只希望使网站在线而不必担心太多的人而设计的 。
结语
我想说大多数网站都倾向于LAMP堆栈,因为它已经过测试,并且在Google中有很多有用的问答线程。 MEAN仍在增长,并且也有足够的支持,但可能比大多数人想要处理的技术更多。
随意尝试两者,并亲自体验一下。 可以将这两个安装程序本地安装在您的计算机上,并在不使用远程服务器的情况下基于它们进行构建。
而且,如果您要在任一堆栈上查找更多信息,我在下面收集了一组方便的链接。
- 了解如何使用MEAN构建现代Web应用 (thinkster.io)
- Docker LAMP Stack管理员 (jessesnet.com)
- 如何在Debian 8 (digitalocean.com) 上安装Linux,Apache,MySQL,PHP(LAMP)堆栈