Shopify Liquid中如何合并两个UNLESS条件避免重复初始化JQuery
结论
你第一种单unless的写法完全可用,不需要使用后面冗余的嵌套写法。
逻辑优先级验证
Liquid中的逻辑运算符优先级和绝大多数开发语言一致:and的优先级高于or,因此你写的代码:
{% unless template contains 'cart' or template contains 'product' and product.variants.size > 1 %} {{ 'jquery-2.2.3.min.js' | asset_url | script_tag }} {% endunless %}
会被自动解析为等价逻辑:除非(是购物车模板 或者(是产品模板且产品变体数量大于1)),否则加载jQuery,完全匹配你的需求:只有既不是购物车模板,也不是多变体产品模板的时候才初始化jQuery,不会出现重复加载的问题。
第二种写法的问题
你提供的第二种嵌套写法完全没必要,甚至会违背你的需求:两段完全相同的嵌套逻辑会导致满足加载条件时,jQuery被重复加载两次。
可选优化(提升可读性)
如果担心后续维护的同事不了解运算符优先级,你可以手动添加括号明确逻辑分组,效果和原有写法完全一致:
{% unless template contains 'cart' or (template contains 'product' and product.variants.size > 1) %} {{ 'jquery-2.2.3.min.js' | asset_url | script_tag }} {% endunless %}
内容的提问来源于stack exchange,提问作者Simonski
相关产品推荐
相关产品推荐

