更新 (2019 年 5 月 2 日):添加了一段文字来阐明与其他框架的兼容性(不暗示零和博弈),并删除了一些关于 AMP 被误解的语言,这些语言对于传达观点来说并非必需。
最近读过一篇比较流行框架的博文?参与过前端工具调查?我几乎可以保证 AMP 不在列表中。考虑到数百万个运行它的域名,这让我觉得很奇怪。那么,为什么呢?
我们如何走到这里:HTML 与 JS 框架、作为分发格式的认知以及配对 AMP
AMP 未被视为框架的首要原因是 AMP 不是一个JavaScript框架。它是一个用 JS编写的框架,但你的创作语言是 HTML,所以从技术上来说,它是一个HTML 框架。HTML 框架的概念并不新鲜,但它们仍然相当罕见,因此它们通常不被视为一种严肃的替代方案。
第二个原因是,许多人将 AMP 与 RSS 进行比较,媒体将其定位为某些其他大公司的围墙花园媒体格式的竞争对手。这种说法肯定没有帮助,而且就其价值而言,我们 AMP 团队从未喜欢过这种比较(但我们也尽了自己的一份力,用诸如运行时和AMPHTML 格式之类的复杂词语让人们感到困惑)。网页已经是一种出色的分发格式,而 AMP 只是通过加速通过 AMP 缓存进行传输并进一步捆绑主要内容(例如通过内联 CSS)来对其进行改进。
第三,当今大多数 AMP 网站都使用配对 AMP,我们允许使用这种技术将现有的非 AMP 网页连接到 AMP 等效项。连接现有的非 AMP 网页到 AMP 等效项。看,配对 AMP 可能很有用,因为最初的投资要低得多:如果我收拾好行李,后来意识到我想装更多东西,我可以再收拾一个,然后带着两个旅行,但这真的会让人很烦恼。配对 AMP 也是如此。随着时间的推移,维护这两个版本非常困难,而配对 AMP 从来都不是最终状态。(这就是为什么我们现在在WordPress 的 AMP中将其称为过渡模式)。
从加速移动页面到 AMP
甚至我们的名字也一直是造成混乱的原因。我一直在努力正确解释 AMP是什么,尤其对于那些熟悉其长格式:加速移动页面的人。现实情况是我们早已超越了自己的名字
- AMP 不仅仅是加速,它还附带各种内置的 UX 优势(例如,禁止插页式广告,强制使用空闲主线程以实现流畅的交互)。
- AMP 不仅适用于移动设备,它不仅适用于包括台式机和平板电脑在内的多种设备类型,还附带超级方便的响应式设计功能
- 而且 AMP 不再仅仅为页面提供支持 - 现在,您可以使用它来构建广告、电子邮件和故事。
那么,解决方案是什么?很简单:正如AMP 技术负责人 Malte 在 AMP 会议上宣布的那样,AMP 现在只是 AMP,不再代表 Accelerated Mobile Pages(加速移动页面)(如果您必须使用扩展形式,那么Awesome Magical Power(强大的魔力)怎么样?)。
从页面到网站:优先使用 AMP 以及将 AMP 作为一项服务使用

我们 AMP 团队希望 AMP 成为现代内容网站的网络开发的自然选择,并且希望您选择 AMP 作为框架,因为它确实可以提高您的工作效率。这代表了我们今年的核心任务,我们已经在amp.dev上推出了我们的新网站(以及大量新内容和适合初学者的课程),以帮助您完成此任务。那么,当您将 AMP 作为开发框架(除了显而易见的速度、用户体验、易于使用的组件之外)时,您会得到什么?
首先,您将更多地关注布局、样式和内容,而较少关注样板代码。网络开发变得越来越困难,选择合适的抽象级别比以往任何时候都更加重要,并且必须具有适合您用例的灵活性。我们将负责维护所有组件的 JS,并将每两周发布一次向后兼容的更新。我们将这种降低维护负担的方式称为“AMP as a Service(AMP 作为一项服务)”(观看Naina 关于该主题的精彩演讲)。
现在,您只需通过将您的 AMP 设为规范或所谓的“AMP 优先”来维护每个页面的一个版本,这意味着您的页面将受益于 AMP 在台式机、移动设备及其他方面的性能和用户体验优化。
Bento:在非 AMP 页面上混合和匹配 AMP 组件,与其他框架互操作
AMP 优先并不意味着您网站的所有页面都必须是 AMP - 有时您可能需要最大的灵活性,而分发并不是一个大问题,例如仅限会员的区域或复杂的购物车。在这种情况下,您可以使用香草 JavaScript 或其他框架为体验的那一部分提供支持。
为了让您能够重复使用使用 AMP 组件构建的现有模板,我们正在开发我们称之为Bento AMP的功能,该功能可以在“非托管”方式下使用 AMP 组件,而无需加载 AMP 的主 JS 文件 (v0.js),并且与同一页面上的其他 Web 组件和框架共存。
此功能与 Next.js 等框架相结合,增加了对服务器端渲染 AMP 和amp-script的支持,即在 Web 工作程序中运行自定义 JavaScript 的能力,这意味着 AMP 和其他框架可以和平共存,并且可以相互增强,我们对此感到非常兴奋。
加速开发,支持 JS 并运行 AMP 组件(AMP 外部)
当然,您现在放弃所有内容并在 AMP 中重新实施您的网站可能没有意义,但这没关系!我只想让您知道我们已经成长了很多,当您开始重新设计或创建新内容时,AMP 将在此帮助您取得成功。
借助amp-bind的动态状态绑定功能、amp-list的动态数据获取功能以及通过amp-script使用自定义 JavaScript 的能力,内容网站的可能性现在是无穷无尽的。并且随着新的开放项目治理的实施,AMP 的未来对每个人都是开放的——每个人都希望 Web 继续蓬勃发展。
发布者:Paul Bakaus,AMP 开发者 Avocado