Steren Giannini 在 “我的栈将比你的更持久”
我的栈不需要任何维护,具有完美的 Lighthouse 分数,永远不会有任何安全漏洞,基于开放标准,可移植,拥有即时开发循环,没有构建步骤并且... 将比任何其他栈更持久。
Jeremy Keith 在 “npm 毁了开发”
与其默认使用无所不能的全能工具链,我将 从一个无聊的基线开始。如果并且只有当这变得过于痛苦或难以驾驭时,我才会添加一个任务管理器。但每次我添加一个依赖项时,我都会限制项目的寿命。
我喜欢这两种观点。
Steren 的“栈”仅包含 HTML 和 CSS。HTML 和 CSS 是否会在网站在线并长时间运行的意义上“持久”?我认为当然可以。HTML 和 CSS 出现在我之前,正在积极开发,并且没有其他技术试图取代它们。最接近的威胁是原生平台,但它们非常分散、封闭,并且缺乏 URL 的全球实用性,因此任何原生平台都不太可能取代网络。更有可能的是(我们已经看到这种情况正在发生,即使它缓慢而充满挑战),原生平台会拥抱网络。
一个 HTML 和 CSS 网站是否会在 2041 年完美运行?我认为当然可以。我敢打赌。
Steren 的意思是 HTML 和 CSS 不仅仅是输出,而且根本没有工具。没有构建过程。没有模板。以下是他关于更新像跨页面导航这样的常见内容的说法
所以... 如果我不使用任何模板系统,如何更新我的页眉、页脚或导航?很简单,只需使用任何好的文本编辑器的“在文件中替换”功能。它们本来就不需要频繁更新。使用模板系统的益处不值得引入所需的工具的成本。
我承认这比我愿意接受的更进一步。这感觉就像用一种技术债务换取另一种。现在你需要编写脚本或精心设计的查找和替换正则表达式来完成你想做的事情,而不是使用某种形式的 HTML 包含, 有很多方法可以轻而易举地处理。
但我明白。尤其是当你确实添加了一种模板语言(或任何其他东西)时,继续向系统添加更多内容的诱惑很大,引入越来越多的责任,而对它们如何“限制项目的寿命”的考虑却越来越少。
我实际上并不认为栈有多重要。
在思考我正在(和曾经)开发的网站时,网站的持久性与栈没有太大关系。一点也没有。具有最长寿命的网站(像这个)之所以具有很长的寿命,是因为我关心它们,并且它们的栈中包含各种各样不同的部分。
我选择技术来帮助我完成我想做的事情。**如果我的需求发生变化,我会改变技术。我不会仅仅说,哦,我的栈出问题了,我猜我将永远关闭网站。**
如果我们谈论的是网站持久性,我认为不同因素的重要性排序更像是这样
- **80%** 我对网站的关注程度
- **10%** 网站不是经济负担
- **5%** 网站不是心理负担(“栈”只是其中很小的一部分)
- **5%** 我可以访问注册人,并且没有忘记在域名被抢注之前续费
这是一个权衡,保持 HTML 和 CSS 将使某些事情变得更容易,但会带来我们不再考虑的旧问题... 例如,如果不是构建一个基本作品集,而是一个网店,该怎么办?栈、框架等都是出于必要而诞生的,如果 HTML/CSS 足够的话,就不会有人使用它们。
我有点同意 Steren 的观点,但我仍然想使用一些便利设施:hugo 和 SASS 基本上为我解决了大多数模板和 CSS 问题,但仍然输出了一种永恒的 html+css+少量 js 的组合,这些 js 在需要时使用。
我喜欢简单,但我不想假装生活在 1999 年 :)
至少我需要某种形式的模板。即使 PHP 也能用一个
include
语句来实现——知道我可以在一个地方编辑页眉并使其在所有地方生效让我很安心!我从重构的角度来看待这个问题。对于第一次(甚至第二次)的功能,我并不担心向现有代码库或栈添加更多复杂性。保持简单和流畅。
一旦实例数量开始增长,适当地重构就成为保持简单、流畅和可管理的最佳方式。这可能意味着从添加一个小模板片段到添加最适合的依赖项,任何事情都有可能。
Space Jam 网站就是一个很好的网站持久性的案例研究。该网站将在宇宙热寂之前存活。
我觉得文章开头的广告是关于 AWS Amplify 的,这是一个框架的框架:) 总之,大多数框架都针对必须以某种方式解决的特定问题集。它们试图加快部署速度并防止重新发明特定的轮子,并希望许多轮子能符合它们的模具。更多的是同样的权衡。现在与将来。快速与可维护。每个都有自己的平衡和学习曲线。并且为项目增加了负担,增加了需要排除故障的断点。
感谢您的意见,即使我们现在的市场容量很小。很高兴看到更多开发人员这样想。
对于许多网站来说,持久性的问题实际上并不重要。
许多网站本质上是临时的,预计不会持续超过几年,甚至更短。
我曾经与许多寿命只有几个月(按设计)的网站合作过。
即使在寿命更长的平台中,网站接收的更新也并不罕见,这些更新的影响如此之大,以至于最终的结果在技术层面上与一个新网站几乎没有区别。
对于所有这些,栈的持久性并不是什么需要担心的事情。您使用的工具(或缺少工具)应该始终适应您正在开发的项目。
我喜欢探索新技术并使用它们。正因为如此,我才成为一名开发人员。