我们应该在WordPress项目中使用预绑定的javascript文件吗?

我们应该在WordPress项目中使用预绑定的javascript文件吗?,wordpress,module,webpack,requirejs,bundle,Wordpress,Module,Webpack,Requirejs,Bundle,最近我尝试在我的wordpress项目中使用requirejs/browserify/webpack等模块系统,主要目的是捆绑资产(javascript、css文件等) 但有一个问题让我感到困惑:我们应该在WordPress主题/插件项目中使用预绑定的javascript文件吗 预绑定脚本的优点是减少请求和提高性能,那么为什么这是一个问题呢 因为通常一个wordpress网站不只是使用一个主题,而是使用许多插件。如果wordpress模块(主题/插件)使用了预绑定的脚本,可能会导致不同模块加载相

最近我尝试在我的wordpress项目中使用requirejs/browserify/webpack等模块系统,主要目的是捆绑资产(javascript、css文件等)

但有一个问题让我感到困惑:我们应该在WordPress主题/插件项目中使用预绑定的javascript文件吗

预绑定脚本的优点是减少请求和提高性能,那么为什么这是一个问题呢

因为通常一个wordpress网站不只是使用一个主题,而是使用许多插件。如果wordpress模块(主题/插件)使用了预绑定的脚本,可能会导致不同模块加载相同的脚本,用户没有选择将其退出队列

例如:

预捆绑 我的主题
A
使用一个预绑定的脚本文件
bundle.js
,其中包括lodash、主干、jquery、carousel插件、bootstrap…,一个用户在他们的网站上使用了我的主题,并激活了许多插件,一些插件将主干、bootstrap或其他相同的插件排入队列。即使我们可以解决冲突问题,网站也会多次加载相同的库/插件,从而导致页面不必要的额外加载时间

邮包 如果我们使用WordPress way
wp\u enqueue\u script()
wp\u enqueue\u style()
分别加载脚本并实现资产依赖性。当不同的模块中使用相同的脚本时,用户可以使用
wp\u dequeue\u script()
退出脚本,并且用户可以使用一些minfiy/merge插件来合并所有脚本,我称之为post bundle


所以,再次提出问题,我们应该在WordPress项目中使用预绑定的javascript文件吗?或者,对于WordPress项目中组织脚本的最佳方式,您有什么建议

是的,这确实是你应该做的事情。我在WordPress方面没有太多的经验,因此不太清楚如何实现这一点,因为脚本列表是针对每个请求动态评估的

我相信有一件事是可能的,那就是为特定的脚本集创建一个静态包,比如
foo.js
bar.js
qux.js
,然后按照以下思路做一些事情:

  • 在HTML输出中呈现所有脚本之前,请对其进行求值
  • 对于每个脚本,检查它是否是捆绑包的一部分
  • 如果是这样,请将脚本出列,将捆绑包标记为已包含
  • 最后,将应包含的所有捆绑包排队

显然,这需要大量的工具和在PHP和JS之间共享数据,而且这不是您可以轻易地放入WP实例的东西,因为您可能需要进行一些手动更改,比如每次插件列表更改时。尽管如此,由于您可以完全控制捆绑包,因此除了大多数WP所有者所接受的简单的“获取HTML响应、提取脚本、连接和缩小、转换响应”方法之外,您当然可以实现更大的优化。

Hi,您找到了适合您的案例的解决方案吗?我现在也有同样的问题。