WordPress 探索了一种与 JavaScript 框架无关的方法来构建 Gutenberg 块
已发表: 2017-09-23
在下周的会议之前,关于 WordPress 的 JavaScript 框架选择的讨论将在#core-js Slack 频道中继续进行。 最近的主题之一是 Gutenberg 的框架无关块渲染的可能性,这将允许开发人员使用他们喜欢的任何 JS 库来扩展新的编辑器。 这意味着 Gutenberg 块(俗称“Gutenblocks”)可以使用 Vue、React、Preact、Angular 或任何开发人员觉得舒服的方式构建。
这个想法的支持者认为,追求更灵活的方法会使 WordPress 的核心 JS 框架决策变得不那么重要。 在#core-js 频道上回答问题时,Gary Pendergast 解释了如何构建 Gutenberg 以保持分离。
“当我说这个决定无关紧要时,我真的不是在开玩笑,即使对于为古腾堡做出贡献的人来说也是如此,”彭德加斯特说。 “在 #2463 中,该库完全被视为实用程序库,就像我们使用 lodash 一样。 它执行少量任务,并且可以相对容易地取出并用完全不同的东西替换,而不会中断代码库的其余部分。 对于为 Gutenberg 做出贡献的人来说,他们贡献的是 Gutenberg 编码风格,而不是我们碰巧导入的任何库的风格。”
当被问及何时做出决定以及考虑哪些因素的时间表时,Pendergast 回答说没有时间表,有兴趣参与的人应该在博客上讲述他们的经历并写下他们可以使用他们的 JS 框架构建的东西的示例熟悉。
“既没有路线图,也没有时间表,也不需要,”彭德加斯特说。 “正如 Matt 提到的,这实际上只是一个技术决定——对于更广泛的社区来说,重要的决定是选择‘不 React’。 不幸的是,这个决定被夸大了,并且与“我可以用什么 JS 库来构建我的插件?”严重混为一谈。 有时“Gutenberg 块将类似于 JS 库的实践?”两者都不相关。 将其视为赛马的推文和帖子以这种方式没有帮助。”
Pendergast 说,无论选择什么库,都将“继续被 WordPress 元素包装,不会暴露底层库”。 Gutenberg 团队正在努力从其组件中删除所有库依赖项,以便插件开发人员可以使用他们选择的任何库。
但是,其他社区成员并不那么急于将选择作为核心的 JS 库降级为简单的技术决策或实用程序库。
“大多数开发人员都明白,他们的插件不受为 core/Gutenberg 选择的框架的约束,”Kevin Hoffman 说。 “但这并没有削弱这个决定的重要性。 如果我们想鼓励更多的贡献者,我们最好选择一个让绝大多数人感到有能力和自信的框架。 如果大多数人都在用一个框架开发插件,并且必须学习另一个框架才能为核心做出贡献,那么我们就会限制潜在贡献者的数量。”
Peter Booker 认为,无论 Gutenberg 的分离多么优雅,对核心库的正确理解都会影响开发人员深入解决某些问题的能力。
布克说:“我认为我们不应该对这个选择如此不屑一顾,因为这是一个次要的技术决定。” “了解 PHP、JavaScript 和 Backbone(以及其他东西)的工作原理对于正确调试 WordPress 问题至关重要。 为 Gutenberg 选择的 JS 框架将影响很多人,即使我们不是核心贡献者。 能够全面解决问题将是必不可少的知识。 这个决定将影响更多的人,而不仅仅是古腾堡团队。”

提供一种灵活的、与框架无关的方法来构建 Gutenblocks 意味着什么?
Jason Bahl 询问是否有人尝试将 React、Preact、Vue 和 Angular 混合在一个应用程序中,看看它是否是“性能噩梦的秘诀”。 他提出了一个示例场景,其中 Gravity Forms 构建基于 Vue 的 Gutenblocks,Yoast 具有基于 React 的块,WooCommerce 使用 Preact 构建块,另一个插件使用 Ember。
Bahl 说:“灵活并允许人们使用任何东西听起来不错,但也可能会导致最佳实践的大量分歧,以及潜在的性能问题。” “我们将看到如何在 Vue、React、Preact、Ember、Vanilla JS 等中构建 Gutenblocks 的教程弹出,这看起来很酷,但也令人困惑,并可能导致社区中的进一步分歧和公认的最佳实践. 灵活性在一定程度上很好,但在一定程度上有强烈的意见也很好。”
Gravity Forms 的联合创始人 Carl Hancock 认为,提供一种与框架无关的方法来构建 Gutenblocks 对扩展项目的开发人员几乎没有影响。 不能通过提供更大的灵活性来降低决定的重要性,因为开发人员将不可避免地采用 WordPress 核心使用的任何内容。
“尽管有些人声称彩虹和蝴蝶与创建抽象层有关,以便插件/主题开发人员可以使用他们想要的任何东西,但人们最终会在大多数情况下采用任何核心用途,”汉考克说。 “这意味着核心框架最终变得多么复杂,将对插件和主题开发人员的进入壁垒产生直接影响。 迄今为止,进入门槛一直处于历史低位,并且直接促成了 WordPress 作为自托管 CMS 的发展。 大幅提高进入门槛并不一定是坏事。 例如,Gravity Forms 将使用 Preact、Vue 等,因为我们有足够的人力和技能来这样做,因为一旦核心做出决定,我们就可以最终决定这样做。”
WordPress 推动网络发展的机会
据 W3 Techs 称,WordPress 目前为 28% 的网站提供支持,无论它选择什么框架,都会对许多开发人员决定学习哪个库产生重大影响,以扩展软件并推进他们的职业生涯。
Matias Ventura 是 Gutenberg 项目的技术负责人之一,他鼓励讨论的参与者放眼大局,并抓住机会共同合作,共同开发一个将推动网络发展的 WordPress 解决方案。 该团队与来自竞争框架的代表合作的努力在一个通常分散且易怒的生态系统中脱颖而出。
“我很高兴我们有机会在 JavaScript UI 表示方面推进 Web 开发,就像过去十年 WordPress 如何推动 Web 标准一样,”Ventura 说。 “这也是我认为我们作为一个项目有责任的地方,因为人们将继续通过 WP 学习 Web 开发。 许多人通过 WordPress 接触 PHP,最初只是与 WP 函数和 API 交互,最终根据需要更深入地研究该语言。 我确实看到我们的核心仍然接近于 JS 这种语言,因为它提供了最有意义的学习工具,跨越所有框架和库。”
文图拉向正在进行的讨论中的参与者保证,古腾堡团队正在倾听并努力制定一个能够推动网络向前发展的解决方案。
“我们完全清楚,我们如何构建以及通过 Gutenberg 提供的内容将影响开发社区,我们不会掉以轻心——恰恰相反,”文图拉说。 “我一直在与 Evan (Vue) 和 Jason (Preact) 交谈,因为这似乎是一个合作并推动网络向前发展的机会,而不是‘选择你的框架’竞赛。”
