随着技术和后端语言的发展, Web堆栈已经发展了数十年。 当前最流行的两个Web堆栈是LAMP和MEAN 。 他们依靠两种不同的技术来实现后端语言,数据库和服务器环境。 “堆栈”一词是指相互堆叠以创建Web服务器环境的技术

在本文中,我想通过查看它们的技术选择(优缺点)来阐明这两个Web堆栈。 每个堆栈在哪里都有优势? 哪种类型的项目将从这两种选择中受益最多? 如果您不熟悉Web技术,或者只是想了解这两个堆栈,那么本指南将为您提供所需的一切。

传统的LAMP开发

大多数开发人员应该了解传统的LAMP堆栈,因为它早在Web时代就已经存在。 LAMP代表Linux,Apache,MySQLPHP 。 所有这些都是独立的软件包,这些软件包组合在一起构成了通用的服务器解决方案。

坚持使用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上运行所有程序,那是值得的。

以下是一些初学者的入门指南。

  • Node.js绝对入门指南
  • Express.js简介
  • 学习使用MEAN构建现代Web应用
  • Node.js,Express和MongoDB入门

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现在比以往任何时候都更好。

图像:Stackoverflow

因此,语言辩论取决于您的个人选择 。 您真的喜欢编写JavaScript吗? 那么具有MEAN堆栈的Node可能值得考虑。

如果您已经了解PHP,并且想坚持自己的知识,那么LAMP也是一条可行的路线。

总体利弊:

每个Web堆栈都有多个要比较的 ,包括操作系统,服务器软件,数据库和后端语言。

  1. MEAN堆栈包括Angular ,这是一个前端框架。 LAMP堆栈中没有任何必需的框架,但是您始终可以将自己的框架添加到所构建的任何应用程序中。
  2. 关于操作系统,LAMP堆栈寻找Linux的派生版本。 无论堆栈如何, Linux通常都是服务器环境的最佳选择 ,MEAN也是如此。
  3. 现在,服务器的操作系统只是计算机软件,而不是Web服务器软件 。 为此,您需要一个类似Apache或nginx的程序。 LAMP使用Apache,因为它是可用的最稳定的选择之一。
  4. MEAN使用Node.js服务器 ,它是Node软件包的一部分 。 它仍然是相当新的,尽管那里有很多支持,但是Node的社区规模与Apache差不多。
  5. 另外,节点服务器需要JavaScript后端 (无扩展名)。 Apache 支持大多数后端语言 ,并且有许多免费扩展以提供更好的支持。 但是到目前为止,Apache尚无Node支持。
  6. 数据库管理是您发现最大差异的地方 。 LAMP使用MySQL进行关系数据存储,而MEAN使用MongoDB这是一个非关系数据库 。 非关系型数据库的速度要快得多 ,并且提供了一种更轻松的扩展方式以提供更高的流量。
  7. 请记住, PHP不仅限于MySQL 。 它可以使用MongoDB和其他替代方法,例如PostgreSQL或SQLite。 只是大多数PHP开发人员都知道MySQL,因此它是典型LAMP堆栈的主要竞争者。
  8. MEAN堆栈通常运行速度更快规模更大 ,但是需要更多的时间和服务器知识来学习系统。 LAMP堆栈经过了反复试验 ,它们开箱即用,具有最安全的基础架构和可想象的最广泛的支持。
  9. 编程语言在这两个堆栈之间有很大的不同。 LAMP主要在包含WordPress和Laravel框架PHP上工作。 MEAN在后端使用ExpressJS / NodeJS,而在前端使用AngularJS。
  10. 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)堆栈

翻译自: https://www.hongkiat.com/blog/mean-vs-lamp-stacks/

std::stack_MEAN vs. LAMP Stack:优点和缺点相关推荐

  1. c++stack容器介绍

    c++stack(堆栈)是一个容器的改编,它实现了一个先进后出的数据结构(FILO) 使用该容器时需要包含#include<stack>头文件: 定义stack对象的示例代码如下: sta ...

  2. C++ STL : 模拟实现STL中的容器适配器stack和queue

    目录 什么是容器适配器 stack stack的文档介绍-(来自cplusplus) stack的实现 queue queue的文档介绍-(来自cplusplus) queue的实现 什么是容器适配器 ...

  3. 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename...

    一.缺省模板参数 回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: temp ...

  4. STL源码剖析 stack 栈 概述->(使用deque双端队列 / list链表)作为stack的底层容器

    Stack是一种先进后出的数据结构,他只有一个出口 stack允许 新增元素.移除元素.取得最顶端的元素,但是无法获得stack的内部数据,因此satck没有遍历行为 Stack定义的完整列表 (双端 ...

  5. programming review (c++): (1)vector, linked list, stack, queue, map, string, bit manipulation

    编程题常用知识点的review. most important: 想好(1)详尽步骤(2)边界特例,再开始写代码. I.vector #include <iostream> //0.头文件 ...

  6. ZH奶酪:Ubuntu 14.04配置LAMP(Linux、Apache、MySQL、PHP)

    ZH奶酪:Ubuntu 14.04安装LAMP(Linux,Apache,MySQL,PHP) 之前已经介绍过LAMP的安装,这边文章主要讲解一下LAMP的配置. 1.配置Apache (1)调整Ke ...

  7. armbian搭建php环境,N1刷armbian后搭建lamp环境+可道云管理

    没成功,,,斐讯N1,刷了armbian ubuntu 18.04,,不知道怎么搞,,硬盘空间够大. +------------------------------------------------ ...

  8. C++queue队列与stack栈

    queue队列: 调用头文件: #include<queue> using namespace std; 详细用法(部分): queue<Type> k;      ----- ...

  9. STL库:stack和queue

    STL库:stack和queue 文章目录 STL库:stack和queue 1.STL库中stack的官方介绍 2.stack的常用接口 3.stack的模拟实现 4.STL库中queue的官方介绍 ...

最新文章

  1. C语言之随机数和字符串输入输出
  2. 路径前缀是什么意思_Trie 树是什么样的数据结构?有哪些应用场景?
  3. vue 如何将参数放到连接上_通过Vue路由传参的两种方式及Vue组件中接收参数的方式...
  4. julia自然常数_Julia中的Sys.KERNEL常数
  5. Android TextView跑马灯效果与设置文字阴影
  6. 用U盘给苹果电脑装Win7系统教程
  7. 计算机网络即时通信系统设计_天天玩微信,Spring Boot 开发私有即时通信系统了解一下...
  8. 大楼通信综合布线系统_什么是网络综合布线系统组成?网络综合布线系统如何选择线缆?...
  9. python3.0与2.x之间的区别
  10. 反序列化对象列表发生异常_Apache Thrift系列详解:序列化机制
  11. 跨库事务处理 spring+hibernate+struts2+jta
  12. 粒子效果的开始和结束颜色属性
  13. 用slub track调试use after free问题
  14. 硬核!高频Linux命令大总结,建议收藏~
  15. RGB与HSB之间的转换公式
  16. JavaSE数组基础练习题
  17. 优化网页加载各项的讨论
  18. 2位8421bcd码相加实验
  19. 织梦图集php,采集功能的使用方法 --- 图片集(一)
  20. 减少不必要的App运营成本,是2022年中小开发者要留心的

热门文章

  1. JavaScript高级语法之一等公民——函数(高阶函数)
  2. 计算机初次使用怎样配置网络,如何设置宽带连接 最详细的设置教程【图文教程】...
  3. 2023第八届少儿模特明星盛典 小超模张娣菘 担任全球赛形象大使
  4. 如何设计一个秒杀程序及避免超卖问题
  5. html 中radio展示原理,htmlradio动态赋值
  6. 关于面向对象 女神告诉你什么是三大特性
  7. 作为初学者如何学会调弦呢?
  8. 一文简介 CPIM 消息格式
  9. JAVA程序员平常加班严重,如何有效率的提升自己?
  10. com.aspose.cad.cadexceptions.ImageSaveException: Image export failed. 解决方案