pxl*_*pxl 8 javascript magento prototypejs
以下是Magento默认加载的所有脚本的列表:
../js/prototype/prototype.js //prototype library
../js/prototype/validation.js //don't know what this does
../js/scriptaculous/builder.js //don't know what this does
../js/scriptaculous/effects.js //base scriptaculous effects library?
../js/scriptaculous/dragdrop.js //component of scriptaculous effects
../js/scriptaculous/controls.js //not sure?
../js/scriptaculous/slider.js //more scriptaculous effects
../js/varien/js.js //don't know what this is
../js/varien/form.js //form validation scripts?
../js/varien/menu.js //menu/drop down menu scripts
../js/mage/translate.js //don't know what this does
../js/mage/cookies.js //don't know what this does
Run Code Online (Sandbox Code Playgroud)
这些脚本总共有316.8K的javascript ...都处于各种缩小状态(例如,prototype.js没有缩小).
所以我的第一个问题:
1)除了prototype.js之外,还有其他所有需要的东西吗?
和
2)删除这些脚本的"正确"方法是什么?布局更新?或者在模板中硬编码?
我想尽可能减轻我的magento网站的负载.
谢谢!
回答第1部分 - 并非所有这些都是必需的,但大多数都是,这取决于你的主题.一个默认的magento主题全部使用它们,但是一个自定义的主题几乎肯定不需要所有的scriptaculous.
几乎总是需要varien,mage和prototype这些,创建一个主题,消除所有这些是非常非常,因为一些依赖于它们的页面javascript实际上不是来自主题而是来自核心php文件.
在简单的主题上,我有很好的结果删除了拖放和滑块,因为我没有使用产品缩放显示.如果你没有使用Magento菜单,你可以删除菜单,但只有当你准备制作虚拟js函数来捕获任何留下的调用时 - 菜单导航对象直接从需要的php层注入javascript函数被抓住(或者更好的是你可以滚动自己的类别导航对象,而不是这样做!).
对于第2部分 - 编辑主题page.xml布局以从<block type="page/html_head" name="head" as="head">
标记中删除它们
.我建议你把它们评论出去,然后测试每一个.
您可以通过将javascript标记添加到相应布局文件的head部分,将所需的javascript文件注入到需要它们的页面类型中.作为如何完成此操作的示例,请查看默认的sendfriend.xml布局文件,该文件仅将product.js文件添加到头部以用于需要它的页面.
如果你开始根据页面类型积极地添加/删除javascript,你还需要考虑Magento如何合并javascript文件.在配置屏幕的开发者区域中有一个设置来合并javascript文件,打开它是一件非常好的事情.这将合并使用"addJs"或"addItem"注入的头区域内的所有javascript文件,项目类型为"js"或"skin_js".
但正因如此,如果你开始逐页包含/排除脚本,你会发现你在不同的页面上生成不同的合并js文件 - 破坏了缓存单个大型js文件的大部分好处!
为了充分利用这两个世界你应该能够使用但不指定项目类型将js注入头部,从而阻止该文件被合并 - 但我还没有尝试过.如果这样可行,您将发现核心库已合并,并且您的每页自定义文件都是单独包含的,这意味着您可以缓存大文件,并且只下载更改的位.