I'm trying to create a simple app, which uses stand-alone vue2,
so my main html looks like this:
main.php
<!DOCTYPE html>
<html>
<head>
<?php
include('header.html') //contains bootstrap, google fonts, etc(styles).
?>
</head>
<body>
<div id="app">
<h1> {{ test }} </h1>
</div>
<?php include('footer.html') ?>
</body>
</html>
as for the scripts,
footer.html
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
<script type="module">
import vue from '<?php echo get_theme_file_uri( 'js/vue2.js' ); ?>';
</script>
<!-- Bootstrap -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
and for the vue instance,
vue2.js
var app = new Vue({
el: "#app",
data: {
test: 'It works!'
}
});
export default app
The problem is that, on initial load, the interpolation {{ test }} gets displayed literally in the browser instead of the It works! value of test, then proceeds to display correctly(displays the It works! value) for a couple of seconds, which is really annoying.
Is it possible to have a loading callback for initializing the vue instance? or what are the ways to avoid this?