Web 堆栈选择指南:JAMStack vs MEAN vs LAMP

更新日期: 2019-10-13阅读: 2.4k标签: 指南

开发人员需要做的决策有很多。当 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


链接: https://fly63.com/article/detial/6120

Node.js 指南(迁移到安全的Buffer构造函数)

由于安全性和可用性问题,不建议使用 Buffer()和 new Buffer()构造函数,请改用 new Buffer.alloc()、Buffer.allocUnsafe()或 Buffer.from()构造方法。

JS对象的 rest/spread 属性指南

在ES5中,咱们合并对象通常使用Lodash的_.extend(target, [sources]) 方法,在ES6中咱们使用 Object.assign(target, [sources])来合并对象,当然现在最常用应该是使用 Rest/Spread(展开运算符与剩余操作符)。

Js闭包使用姿势指南

闭包就是指 能够访问另一个函数作用域的变量的函数 ,闭包就是一个函数,能够访问其他函数的作用域中的变量,js有一个全局对象,在浏览器下是window,node下是global,所有的函数都在这个对象下

使用JavaScript进行面向对象编程的指南

一切都从对象开始。对象,即我们相互交流的一个载体,有其属性和方法。对象是面向对象编程的核心,不仅用于JavaScript,而且还适用于Java、C语言、C++等。

AssemblyScript 入门指南

WebAssembly(Wasm)是 Web 浏览器中相对较新的功能,但它地扩展了把 Web 作为服务应用平台的功能潜力。对于 Web 开发人员来说,学习使用 WebAssembly 可能会有一个艰难的过程

程序员聊天指南,建议先码后看

很多接触过程序员的人,都有一种体会:程序员=聊天终结者。经常用简短有力的几个字结束掉你苦心经营的聊天氛围,比如:你现在忙不忙?忙。那我真的是打扰了

SVG入门指南

SVG,即可缩放矢量图形(Scalable Vector Graphics),是一种 XML 应用,可以以一种简洁、可移植的形式表示图形信息。目前,人们对 SVG 越来越感兴趣。大多数现代浏览器都能显示 SVG 图形,并且大多数矢量绘图软件都能导出 SVG 图形

JavaScript 类完整指南

JavaScript 使用原型继承:每个对象都从其原型对象继承属性和方法。在 JavaScript 中不存在 Java 或 Swift 等语言中所使用的作为创建对象 蓝图的传统类,原型继承仅处理对象。

Quill 实践指南

很多时候 <textarea> 并不能满足我们对文本输入的需求,当我们需要为输入的文本添加格式时,我们需要使用像 quill 这样的富文本编辑器来完成富文本的输入。本文将会详细的讲解如何使用 quill 定制一个自己的富文本编辑器。

RxJS响应式编程入门指南

RxJS 是 Reactive Extensions for JavaScript 的缩写,起源于 Reactive Extensions,是一个基于可观测数据流 Stream 结合观察者模式和迭代器模式的一种异步编程的应用库。RxJS 是 Reactive Extensions 在 JavaScript 上的实现

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!