Shopify API - ScriptTag依赖管理?

时间:2012-08-24 03:57:29

标签: shopify

我有一个Shopify应用程序,在安装后立即通过API添加ScriptTag。该脚本依赖于jQuery和Shopify jQuery AJAX库。如果可能的话,我想避免强迫商家编辑多个主题文件。

据我所知:

  • 不保证这些依赖性出现在每个主题或正确的顺序中。
  • 我无法直接从API中引用Shopify CDN或主题脚本(因为它仅适用于远程脚本)。
  • 自API添加* .liquid assets only have access to the settings object以来,将所有脚本代码合并到scripts.liquid资产不起作用。

我不情愿地倾向于单独提供一个片段,并指示商家在</head>之前粘贴它。

是否存在使用ScriptTag我想要的Shopify预期模式?

2 个答案:

答案 0 :(得分:8)

您无法真正依赖主题中可用的任何内容,商店所有者可以自定义他们想要的任何内容,而您几乎无法控制它。您的选择是:

  1. 要求您的客户拥有或添加jQuery到他们的主题。
  2. 使用纯javascript编写代码,不需要任何其他库依赖项。
  3. 将您需要的库嵌入到您自己的脚本中。确保将它包装在一个闭包中,这样如果它们已经有了库,它们就不会发生冲突。
  4. 我建议自己做#3,但我可能会选择一个更轻量级的库,它可以满足您的需要(例如,如果你真的不需要遍历jQuerys选择器引擎是一个很大的代码,你可以做到没有)。如果你四处搜寻,那里有很多。

答案 1 :(得分:4)

我已经开始创建这个示例文件作为您与ScriptTag一起使用的起点:http://gist.github.com/carolineschnapp/5397337它将向您展示如果jQuery未定义或太旧而无需破坏,如何加载jQuery商店的主题。您需要使用jQuery.noConflict。它可以很容易地完成而不会造成附带损害。

我还写了以下这是一篇可怕的读物,可能是我文档生涯中写的最糟糕的事情,但它充满了智慧:http://docs.shopify.com/api/tutorials/using-javascript-responsibly我希望它能说服你坚持使用ScripTag。

至于加载Shopify jQuery AJAX库,我完全不会。我使用自己的代码,使用jQuery,做我需要做的任何事情。我讨厌说它但是使用你自己的代码太简单了,它确实是这样。你根本不需要帮助文件,这是不必要的膨胀,并且通过使用它你会遇到可能的冲突情况,因为主题也可能正在使用它。如果主题使用它来使用Ajax来购买购物车或加载产品,它将重新定义辅助文件中定义的一些回调函数。您只需再次加载文件即可中断所有这些回调。人们会在购物车中添加商品,突然会在他们的页面上显示警报,或者不是通过Ajax在页面上加载的产品突然主题会显示警告“我们现在拥有所有信息您询问了产品X“没有将产品添加到页面中。使用jquery.api.js的任何应用程序都没有好处。