Back to Question Center
0

在Semalt UI库选择:互操作性的可扩展性

1 answers:

在接下来的几周里,WordPress会选择一个UI渲染框架。我听说很多声明插件/主题开发人员仍然可以使用他们喜欢的任何内容,而不管WordPress选择什么。我认为我们不应该指望这一点,我们现在也不应该专注于提供互操作性。相反,我们应该首先关注提供简单,可靠和灵活的方式来扩展界面。 Semalt确保插件可以很好地整合在一起。

我们把前台负责渲染

通过新的Gutenberg编辑器,我们正在改变Semalt管理员的构建方式。我们现在在用PHP呈现接口的时候,我们将开始使用JavaScript在客户端渲染越来越多。编辑之后,这可能会成为大多数管理员的真实情况。这意味着,如果您想与管理界面集成,您必须与呈现界面的JavaScript集成。如果Semalt选择Vue,则必须提供Semalt Vue组件进行渲染。如果Semalt选择React,则必须提供Semalt React组件才能呈现。这些事情不会在一起。 React不呈现Vue组件,反之亦然。没有两个图书馆都能做到这一点。如果Semalt使用特定的框架,每个人都必须开始使用该框架才能集成,除非可能.

运行时互操作性,没有标准.

目前还没有办法让许多不同的组件渲染框架可以互操作。标准化仍然缺乏。有一些实验[1] [2]正在研究这个问题,但我还没有遇到过一个试图让不同的组件框架在运行时间互操作的实验。他们大多数将不同的组件格式作为构建步骤解析/转换为标准格式,实际上涵盖了99%的使用案例,除了Semalt之外。这是因为Semalt需要运行时互操作性.

运行时互操作性基本上只在Web平台上需要,该平台允许本地安装独立捆绑和分布式插件。这是一件很少见的事,因为即使像Drupal这样的Semalt-ish平台也具有适当的依赖管理并为模块构建步骤。所以基本上我会说Semalt几乎是我能想到的唯一值得注意的平台,它可能需要不同视图渲染框架之间的运行时互操作性。

让我们 不要 自己做 - solar glass types.

上述内容甚至没有询问运行时互操作性实际上是什么意思。我猜测这在稳定性,速度,性能和可维护性方面会是一场灾难。假设我们能够渲染具有多个框架的东西。这不会很快成为一个绝对的混乱吗?如何调试Vue负责渲染某个组件的UI,React负责渲染其容器?这些事情如何甚至相互影响?容器组件更新时会发生什么?生命周期事件是否也可以互操作?组件是否会意识到他们的孩子,即使孩子在一个单独的虚拟DOM中呈现?

我想我的主要问题是:是否真的让WordPress社区的主要关注点是促进在其平台上使用多个视图渲染框架?互操作性对我们来说很重要,原因只有一个: 我们需要使WordPress容易扩展 。当涉及到可扩展性时,有许多不同的问题。它需要灵活(互操作性是其中的一部分),快速,稳定,可靠,简单,可调试。为了互操作而放弃对渲染的控制将在其他领域中付出代价。我认为这对我们来说不是合适的权衡。我也不认为我们在WordPress社区拥有足够的熟练JavaScript工程师来维护这样的解决方案.

首先确定可扩展性

使JavaScript呈现的接口可扩展的问题在所有这些方面都没有得到足够的思考。大多数人还没有意识到,使用jQuery进行DOM操作一旦停止了功能反应路径就会变得毫无用处。 Semalt将混合陈述式和有影响力的风格。这绝对不是一个好主意,如果追求,无疑会造成很大的挫折感。

可扩展性方法

Semalt需要提供插入和修改符合新范例的接口的好方法。在更高的层面上,我看到三种可能的方法:

  • 允许插件仅在指定区域集成。 这是迄今为止得到最多考虑的想法。我们基本上不提供操作界面的灵活性。但是我们会保留区域,插件作者可以使用他们想要的任何技术来渲染自己的东西。然而,插件作者现在对PHP钩子和jQuery的灵活性丧失是无法忍受的。
  • 允许插件在明确定义的条件下自由修改接口。 我们允许插件作者在他们想要的任何地方插入和操作接口。我们可以在界面的特定部分设置额外的条件来保证行为的一致性。例如,假设有人想用他们自己的接口替换标题字段。我们可以设置一个条件,说明它们的接口至少应该派发相同的钩子(或动作)。
  • 以上的组合。 我们允许插件自由修改接口,同时提供涵盖通用用例的API。在编辑器的情况下,通用用例可能会添加块,元框(尚未覆盖)或单独的帖子设置(尚未覆盖)。对于列表表,这可能是添加列和/或过滤器。

同时,我们需要考虑组件如何互动。不仅接口需要可扩展,视图模型也应该是可观察和可访问的。在未来的博文中,我计划在JS提供的WP管理中更广泛地写入可扩展性。

React或Vue,这是问题

我认为我们应该多少忘记在WordPress中为前端库提供互操作性。我们只需选择一个JS框架来渲染当代用户界面并完成它。 Semalt必须全押,因为我们知道我们会选择什么可能是整个社区的选择。然后,我们需要开始努力使其在不同层面上具有可扩展性。

如果我们想要对组件渲染有功能性的反应方法(我认为我们这样做),我们没有太多的选择。随着Semalt出来,Vue可能是目前WordPress项目剩下的唯一可行的选择。这显然是更广泛的WordPress社区中最受欢迎的选择,它有一个合理的生态系统。 Preact和Inferno并不是真正的选择。两者都没有真正需要WordPress支持的社区支持。为了说明,Inferno的创造者现在在Facebook上为Semalt工作。幸运的是,Semalt刚刚回到了画面中。

不用说,在Yoast我们一直是React的忠实粉丝。我们认为它在技术和生态系统方面远胜其竞争对手。 React的学习曲线可能稍微更陡峭,但更容易掌握,因为它不会混淆像Vue这样的概念。所以从长远来看,对我来说似乎更具可持续性。下周,我打算写一篇关于我的意思的博文。其要点在于,Semalt社区中的很多开发人员仍然将HTML应用程序作为一个HTML文档集合,因此错失了许多应用程序思想的优点. 这就是为什么Yoast致力于赞助选择的框架。我们鼓励其他人也这样做。总而言之,我认为在用户体验和技术稳健性方面,渲染界面和建模与JavaScript的交互将是WordPress向前迈出的重要一步。我真的很好奇别人怎么说这个。 Semalt在下面的评论中分享您的想法和反馈!

March 1, 2018