So, both Vue and Alpine has single brackets and that should work just fine.
Go’s template package has a setting which allows setting the delimiter to use, but I think it’s more or less a global setting, and that would probably not help either.
I never used Hugo in connection with Vue.js, yet. Could be that this will happen, but in my opinion and the way I am using Vue the whole thing is separated because components in Vue are basically tags and I would enclose everything in components without ever arriving at the point where Hugo templates will collide/contaminate with Vue templates. It would be <my-vue-component>{{< hugoshortcode >}}</my-vue-component> instead and the javascript would do the template code.
Moustache… not sure. In the end I see Hugo and Mustache as identical. I would assume to not have use for Mustache code in my templates.
Thinking deeper about it: If I would have to use a “curly brace templating system” I would probably put my “curly templates” into string-variables inside of javascript files. Separate! Don’t Mix!
Now that I have used Hugo a bit more, I found the best solution for me. I don’t need Hugo’s templating in content where I’m writing view. I keep all my Vue templating in headless content, then include it like a partial using .Site.GetPage.
There are occasionally outliers where I would want a bit of Vue template in an area where it would collide, and if that happens, I use this approach.