Magento Javascript合并 - 为什么它会在某些情况下中断?

时间:2012-06-27 13:05:11

标签: magento

好的,我已经做了一段时间的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错误。怎么样?

我正在努力理解这个问题,以便将来更好地解决这个问题

5 个答案:

答案 0 :(得分:6)

你需要在这里理解核心原则javascript库之间有什么冲突。

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

  • 在Prototype必须
  • 之前,总是在页面上的任何其他脚本之前包含jQuery
  • 添加jQuery.noConflict();直接调用jQuery库文件的末尾
  • 确保您的基于jQuery的脚本都没有使用$作为方法名称(此处冲突的本质)

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

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等),我没有任何问题。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

在这段时间之后对我有用的是:

  1. 始终将jQuery置于顶部,然后是noConflict
  2. 在包含JS的压缩版本和未压缩版本之间切换(如果启用gzip压缩,则不应该担心最终大小 - 它将以某种方式压缩)
  3. 在addItem和addJs包含方法之间切换
  4. 随机重新定位错误库