3

好的,我已经做了一段时间的 JS 合并,但仍然无法弄清楚成功合并背后的逻辑。它归结为在合并列表上向上和向下重新定位库。有时 jquery 必须在顶部,有时则不是。有时fancybox需要添加为addJs,有时需要添加为addItem。

那么,当您使用 Magento 的合并 JS 时,导致 JS 库崩溃的经验是什么?成功合并有什么规则吗?

更新:刚才在我的 local.xml 我从

<action method="addItem"><type>skin_js</type><name>js/magiczoomplus.js</name></action>

<action method="addJs"><script>jquery/magiczoomplus.js</script></action>

这解决了我在页面上遇到的 magiczoomplus 错误。怎么会这样?

我正在尝试理解这个问题,以便将来更好地解决它

4

5 回答 5

7

您需要了解这里的核心原则 javascript 库之间有什么冲突,什么没有。

在 jQuery 和 Prototype 冲突的情况下以及在 Magento 中:

  • 始终在页面上的任何其他脚本之前包含 jQuery,在必须使用原型之前
  • 添加 jQuery.noConflict(); 直接调用到你的 jQuery 库文件的末尾
  • 确保所有基于 jQuery 的脚本都没有使用 $ 作为方法名称(这里的冲突本质)
于 2012-06-27T13:21:09.320 回答
2

如果启用 Javascript 合并后有任何问题,我总是尝试用这些文件的非最小化版本替换最小化的 Javascript 文件。它总能解决问题。(不知道为什么最小化文件有问题)

于 2012-10-30T19:43:44.480 回答
1

实际修复合并的选项并不多,但是

1.)group在 local.xml 文件中使用 -ing 以确保更好的合并。

http://fishpig.co.uk/blog/why-you-shouldnt-merge-javascript-in-magento.html

2.) 完全放弃 Magento 的内置合并,Fooman_Speedster转而使用。

http://www.magentocommerce.com/magento-connect/fooman-speedster.html

到目前为止,第二个对我来说效果很好。我正在使用 jQuery 库甚至更多(Handlebars 等),我没有任何问题。

于 2012-06-29T22:45:05.830 回答
1

对我有用的是在原型之后移动 jQuery 包含并添加 jQuery.noConflict(); 在 jQuery 包含之后。

于 2013-02-28T22:49:19.393 回答
1

经过这么长时间对我有用的是:

  1. 始终将 jQuery 放在首位,然后是 noConflict
  2. 在包含的 JS 的压缩版本和未压缩版本之间切换(如果启用 gzip 压缩,则不必担心最终大小 - 它将以一种或另一种方式压缩)
  3. 在 addItem 和 addJs 包含方法之间切换
  4. 随机重新定位错误库
于 2013-03-01T11:06:14.387 回答