速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

Web 技术栈选择指南:JAMStack vs MEAN vs LAMP

  • 2019-10-25
  • 本文字数:3499 字

    阅读完需:约 11 分钟

Web技术栈选择指南:JAMStack vs MEAN vs LAMP

开发人员需要做的决策有很多。当 Web 应用程序的需求确定下来之后,就该选择效率最高的 Web 技术栈了。Web 技术栈是用于创建 Web 应用程序的技术工具集。一套 Web 技术栈由 OS(操作系统)、Web 服务器、数据库软件以及编程语言(通常前端和后端都需要自己的语言)组成。一些常见的编程语言 / 框架包括 PHP、JavaScript、Node.js、Java、ASP.NET 和 Python 等。对于构建网站或 Web 应用程序的场景而言,最常用的 Web 技术栈是 LAMP、MEAN 或 JAMStack 等。那么在 JAMStack、MEAN 与 LAMP 之间,你该如何做出选择呢?


JAMstack、MEAN 和 LAMP 都是用于构建应用程序的 Web 技术栈,各自都有独特的功能和优势。关键在于搞清楚哪个技术栈最适合你的 Web 应用程序需求。

什么是 JAMStack?


JAMStack 的 JAM 是 JavaScript、API 和 Markup 的首字母组合。这个技术栈可以说是所有技术栈中最轻量级的,因为它不需要真正与数据库交互,并且主要依赖第三方 API。


我们可以将其定义为基于上述三大技术组件的现代 Web 开发架构。JAMStack 非常适合开发静态网站,因为它几乎没有 DevOps 开销,并且可以由程序员轻松管理。


总而言之,JAMStack 非常适合构建你的第一个博客网站,甚至可以用来创建一些更复杂的网站,其中依赖第三方 SaaS 软件来执行某些更复杂的功能。

JAMStack 的优缺点

优点:

  • 专注于前端构建和交付:JAMStack 更专注于交付和 Web 应用程序的前端。简单来说,这意味着它会尽量限制对数据库后端的调用。图像之类的内容通常已经在 CDN 中,因此可以快速加载到页面里。如果你想要持续不断的交付,这个 Web 技术栈是你的最佳选择。此外,它提供的运行稳定性和对第三方 API 的利用也是很知名的。

  • 多个预构建的主题和网站生成器:JAMStack 最大的好处是其提供的各种预构建的网站生成器和主题,你可以从中找到最适合你需求的布局。

  • 安全性:它没有数据库,或者至少对数据库的需求有限,这意味着安全问题也是有限的,因为用它开发的网站将依赖静态网页并从 CDN 获取内容,这减少了恶意行为者攻击你网站的可行途径。

  • 廉价的托管和维护:JAMStack 的优点众多,其中一条是提供廉价的托管。另外,由于对 DevOps 开发人员的需求减少,你的团队就可以减少技术人员的数量来节省资金,每年可以节约数万甚至数十万美元。

  • 即时缓存失效:其即时缓存失效功能使用户可以在发布最新内容时立即查看内容。

  • 降低成本:JAMStack 高度依赖第三方系统,因此无需负担昂贵的内部开发人员成本。

缺点:

  • 缺乏对较重和动态功能的良好支持:使用 JAMStack 的主要限制之一是它不能很好地处理电子商务购物和登录等更加动态的功能。这是因为这些功能需要数据库才能管理交易。

  • 高度依赖第三方系统:高度依赖第三方系统意味着如果这些系统崩溃,那么 JAMStack 也会崩溃。

什么是 LAMP?


LAMP 被认为是最古老的,也是市场上最常用的 Web 技术栈。如果你在大学期间(React.js 和 Node.js 时代之前)上过 Web 开发 101 课程,那它可能就是你用来开发第一个网站的方法。


LAMP 的组件中,Linux 作为操作系统,Apache 是 Web 服务器,MySQL 是数据库软件,PHP 是编程语言。对某些人来说,这些组件每一个看起来似乎都像化石一样古老。但这些组件都是很可靠的,并且得到了很好的支持。


有人可能没有听说过 Apache Web Server 之类的组件,可它实际上占据了互联网一半的地盘。它充当一种导向器,可帮助将 HTTP 请求从前端路由到其对应的后端函数和控制器上。另外,尽管它的名称中包含“服务器”一词,但这并不意味着 Apache Web Server 是一个物理对象,它只是可以在服务器甚至笔记本电脑上运行的一种软件。


MySQL 是传统的关系型数据库,允许你对其包含的数据发出 SQL 请求。这使你可以轻松存储用户数据和交易。


最后,PHP 是一种服务端脚本语言。这意味着你可以用它从 MySQL 表中获取数据并将其推送到前端。如果你已经在程序设计领域工作了几年时间,你可能很熟悉 PHP 的许多缺点。但是你最喜欢的许多网站都运行在 PHP 上,其中包括所有的 Wordpress 网站。

LAMP 的优缺点

优点:

  • 非常适合动态 Web 应用开发:与 JAMStack 不同,这一 Web 技术栈可以平稳地提供登录、使用情况追踪和在线购物等复杂功能。

  • 完全开源:完全开源意味着它具备多样化、便宜、易于使用和访问等优势。

  • 开发人员的可靠起点:由于其可用性、设计和技术特性,LAMP 是非常可靠的 Web 技术栈,尤其适合资源有限的新手。

  • 用户可以轻松访问 LAMP 的数字文档:LAMP 允许用户轻松访问数字文档。此外,使用这套可靠软件的用户组成了一个大型社区,会为你提供每个步骤的指导。

缺点:

  • 难以使所有组件协同工作:开发人员新手很难让它的所有组件协同工作。这主要是因为 LAMP 的学习曲线太陡峭,意味着你只能凭经验学习。你必须逐一掌握所有的组件,想要一口气学会整套 Web 技术栈是做不到的。

  • 高流量网站上的性能问题:由于这一 Web 技术栈在用户体验方面也有所谓的“学习曲线”,因此你的最终产品很可能会遇到性能问题。这些性能问题可能涉及安全漏洞,或者难以同时应对大量用户。但这类问题主要发生在具有较高流量的 Web 应用程序上。

什么是 MEAN?


MEAN 的组件中,MongoDB 作为数据库层,Express.js 作为服务端应用程序框架,Angular.js 作为客户端应用程序框架,而 Node.js 作为服务端环境。它的最大优势是所有这些组件都是开源的,并且都基于 JavaScript。MongoDB、Express 和 Node 等组件在各自的领域中都是近年来的热门话题,因为它们都为 Web 开发工作提供了非常独特的优势。例如,MongoDB 是一个非常独特的数据库,因为它不像传统的关系型数据库那样通常需要 SQL 来与基础数据通信。MongoDB 使用的是 JavaScript(如一组调用)来提取数据并将数据存储在 JSON 与表中。如果你的网站像博客那样有大量文档需要处理,那么这种方法尤其合适。


JavaScript 通常只能在浏览器中运行。Node.js 则是一套基于 JavaScript 的运行时环境,使你可以在浏览器之外运行代码。这使开发人员能够从后端到前端全部使用 JavaScript 编程。


Express.js 在 Node.js 中的角色与 Flask 在 Python 中的相似。Express 帮助管理路由和传入的 HTTP 请求。这使开发 Web 应用程序变得更加容易,并且简化了你的项目中前后端之间的开发工作。

MEAN 的优缺点

优点:

  • 开发人员可以用 JavaScript 同时编写客户端和服务端代码:MEAN 主要用来开发基于 JavaScript 的 Web 应用程序,因此开发人员可以同时为服务端和客户端编程。

  • 最适合高流量和高容量的数据库:MEAN 是处理包含非关系数据的大型数据库时的绝佳选择。

缺点:

  • 对关系型数据不是很好的选择:尽管 MEAN 在处理包含非关系数据的大型数据库时表现很好,但在处理关系型数据时就没那么出色了,这是一个很大的局限。

  • 更新并不意味着更好:新框架的问题通常是类似的:社区知识更少、漏洞更多、安全问题更多,等等。尽管 MEAN 在许多方面都很容易上手(因为它几乎是 100%的 JavaScript/ JSON),但它还是有很多小坑,有些开发人员可能还迈不过去。

哪个技术栈的应用更广泛?

在 JAMStack、MEAN 和 LAMP 之间做选择时,选择正确的 Web 技术栈来构建 Web 应用程序是一个挑战,因为每个 Web 技术栈都提供了自己的很多好处。一般来说,LAMP 在易用性和可靠性方面的优势使其成为最常用的 Web 技术栈,这也得到了多年来无数开发人员的证明。

选择 Web 技术栈时要考虑的因素

尽管选择 Web 技术栈是一个艰难的决定,但这主要取决于你希望开发的内容和你的经验水平。下面给出的是在为 Web 应用程序选择正确的 Web 技术栈时应考虑的因素。


  • 应用程序的预期寿命:JAMStack 的预期寿命最短,主要是因为它依赖于第三方系统,这意味着如果那些第三方系统发生故障,那么整个 Web 应用程序也将发生故障。

  • 应用程序类型:每套 Web 技术栈都适合不同类型的 Web 应用程序。对于需要许多功能的更复杂的网站,LAMP 和 MEAN 技术栈表现很出色;诸如博客之类的简单网站可以在轻量级技术栈(如 JAMStack)上开发。

  • 预算和维护:如果你们是一家小公司,那么最好的选择是 LAMP,因为它包含上述所有要素,且成本很低。对于资源有限的开发人员来说这是最佳选择。

  • 你对每种工具的经验 / 知识积累:归根结底,选择技术栈的重点取决于你最喜欢哪种技术。例如,LAMP 和 MEAN 技术栈提供了许多类似的功能。你熟悉哪种就应该使用哪套技术栈。


总而言之,想要选择完美的技术工具来构建 Web 应用程序,就应该提前仔细考虑并作出计划。完美的 Web 技术栈需要与网站的使用场景、团队的技术知识、资源和整体预算相适应。这样一来,无论你选择哪种 Web 技术栈都不会妨碍你的业务需求和增长。


原文链接https://buttercms.com/blog/jamstack-vs-mean-vs-lamp-your-guide-to-picking-one


2019-10-25 20:213973
用户头像
王文婧 InfoQ编辑

发布了 126 篇内容, 共 73.0 次阅读, 收获喜欢 275 次。

关注

评论 2 条评论

发布
用户头像
我用的应该叫gvpn:
vue.js+graphql api+prisma orm+node.js
2019-10-25 22:28
回复
prisma 国内用的真的太少了,不过这个项目是真的牛
2020-04-03 17:00
回复
没有更多了
发现更多内容

分配时间戳和生成水位线

小知识点

scala 大数据 flink

技术解读丨分布式缓存数据库Redis大KEY问题定位及优化建议

华为云开发者联盟

云计算 华为 技术

OpenResty 项目脚手架

铁匠

lua nginx openresty

手把手带你玩转 openEuler | 如何安装 openEuler

openEuler

Linux 开源 操作系统 openEuler

面向对象编程会被抛弃吗?这五大问题不容忽视

Java架构师迁哥

腾讯技术官又曝神作,两份堪称‘千古绝唱’操作系统笔记现已被全网疯传

编程 操作系统 计算机

推荐一款MySQL开源客户端,免费+跨平台+使用便捷!

王磊

MySQL

Python 疑难问题:[] 与 list() 哪个快?为什么快?快多少呢?

Python猫

Python 学习 编程 程序员

极客时间架构师培训 1 期 - 第 4 周总结

Kaven

打通Docker镜像发布容器运行流程

架构师修行之路

Docker 容器 分布式 微服务

随机森林原理介绍与适用情况(综述篇)

计算机与AI

数据挖掘 学习 数据科学 随机森林

Kubeless 函数部署遇到了问题,如何 Debug? | 玩转 Kubeless

donghui

Serverless kubeless

容器技术为什么会这么流行

架构师修行之路

Docker 容器 分布式 微服务

技术心得丨一种有效攻击BERT等模型的方法

华为云开发者联盟

学习 AI

详细分析定制企业应用的价格

Philips

敏捷开发 快速开发

甲方日常 30

句子

工作 随笔杂谈 日常 心情

Tensorflow2.0安装使用

MySQL从删库到跑路

人工智能 tensorflow Anaconda Jupyter Notebook

后疫情时代,华为云会议如何定义未来会议?

华为云开发者联盟

视频 会议

华为丁耘,解读百尺竿头的中国5G

脑极体

UBBF2020:智能联接,共创行业价值新增长

DT极客

图解 K8S 源码 - QoS 篇

郭旭东

Kubernetes Kubernetes源码

netfilter/iptables 原理

为为

Service Mesh Linux Kenel

Anaconda安装使用和akshare库使用

MySQL从删库到跑路

Python 数据分析 Windows 10 Anaconda akshare

远程触发Jenkins的Pipeline任务的并发问题处理

小Q

Java 学习 编程 架构 并发

优秀开源项目、博客、书籍整理

铁匠

收藏教程 资源汇总

解释一下==和equals的区别,你以为就这么简单?那你就草率了

小Q

Java 学习 架构 面试 基础

华为云专家带你解读文本情感分析任务

华为云开发者联盟

内容 数据 分析

BATJ内部Java求职面试宝典,尤其应届生如果还没有学过那后悔去吧,也许你已经错过N多家大厂offer;

Java架构师迁哥

详细讲解:python中的lambda与sorted函数

计算机与AI

Python

「红黑树」背了又忘?深入本质,他也不过是一棵二叉树

小松漫步

Underlay网络:如何立住可靠又支持大规模无收敛的“人设”

华为云开发者联盟

云服务 交换机

Web技术栈选择指南:JAMStack vs MEAN vs LAMP_大前端_Ben Rogojan_InfoQ精选文章