什么';shopify中.js和.js.liquid的区别是什么?

什么';shopify中.js和.js.liquid的区别是什么?,shopify,Shopify,在“资产”部分中,有名称为.js和.js.liquid的文件 如果我想在主题中包含一个js文件,那么应该使用哪一个呢 这现在在一个.js.liquid文件中。我想构造一个由液体变量组成的字符串。当我将这个字符串附加到DOM元素中时,它似乎没有显示出来 var someString = ''; {%for line in order.line_items%} someString += 'q='+{{line.quantity}}+'&p='+{{line.product.id}}

在“资产”部分中,有名称为
.js
.js.liquid
的文件

如果我想在主题中包含一个js文件,那么应该使用哪一个呢

这现在在一个.js.liquid文件中。我想构造一个由液体变量组成的字符串。当我将这个字符串附加到DOM元素中时,它似乎没有显示出来

var someString = '';
  {%for line in order.line_items%}
  someString += 'q='+{{line.quantity}}+'&p='+{{line.product.id}}+'&pp='+{{line.price}}+'&w='+{{line.grams}}+'&i='+{{line.product.featured_image|product_img_url|url_param_escape}}+'&n='+{{line.product.title|url_param_escape}}+'&';
  {%endfor%}

$('body').append(someString);

您可以在
.js.liquid
文件中使用liquid,但
.js
文件仅为javascript

如果包含常规js文件,请使用扩展名
.js
。如果文件中也有液体,则需要使用
.js.liquid

编辑:

我认为
订单
不能在
.js.liquid
文件中访问:

可以通过订单电子邮件模板、结帐的感谢页面以及订单打印机等应用程序访问订单对象

另见:

只能在液化资产中使用液体过滤器和全局设置对象

它的工作原理是这样的:无论何时编辑.js.liquid文件的.css.liquid,还是无论何时编辑主题设置,都会创建一个新的.css或.js文件,然后存储在我们的资产服务器上。以任何其他方式更新您的店铺都不会更新这些文件

鉴于上述情况,Shopify无法公开这些文件中的存储信息(可能会更改)


谢谢如上所示,我在
.js.liquid
中使用了liquid变量,但是我没有正确读取
liquid
变量。
liquid
对象根本没有显示。我很确定,当您使用
|asset\u url
调用文件时,不应该将
.liquid
添加到扩展名中。它甚至可能导致404错误。Steph说得对,它允许您在JS中使用liquid,只要确保调用实际文件时不使用
.liquid
。Good point@graygilmore。您可以使用
{{“file.js”| asset|url | script|tag}}调用
file.js.liquid
。@guest请参阅我在上面对未显示液体变量的编辑。简而言之:.js.liquid和.css.liquid文件是静态的,而不是动态的。从.js.liquid和.css.liquid文件创建的已编译js&css资产仅在shop settings.json更改时才会更改,因此无法访问任何动态的店铺、客户或会话信息。动态javascript必须存在于代码段或主题文件中的脚本标记中。