Within a product page, I am trying to display a custom Vue component. For brevity, the component displays some information from a Firebase database based on the given product id.
I originally tried to make this a Shopify app so I could access their APIs. I implemented OAuth and can retrieve the required information. However, actually including the component within the store has been unsuccessful.
What is the best way of including Vue inside Shopify?
I have tried including the script files directly inside the template files, inside snippets, and included them within the global scripts tag. But nothing I have tried has been able to render even a simple component.
Inside product.liquid:
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script> <div id="app"> {{ message }} </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) </script>
Inside Vue developer tools the component appears inside the DOM but the “Hello Vue!” message does not appear as it should.
There are no other errors in the console. Which is most puzzling.
Any insight into the proper way of including Vue into Shopify would be greatly appreciated.
Advertisement
Answer
Liquid files will by default parse {{ }}
tags. So you need to change your templating mechanism. Below is updated code which works in Shopify Liquid files –
<div id="app"> ${ message } </div> <script> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' }, delimiters: ['${', '}'] }) </script>
Basically, i have added delimeters which vue will check to find templates and they are different from Shopify Parsing which will result in shopify not parsing those holders. You can read up more about vue delimeters here – Link