pin "vue", to: "https://ga.jspm.io/npm:[email protected]/dist/vue.esm-browser.js", preload: true
create app/javascript/vue.js
import * as Vue from "vue"
import HelloWorld from "./components/HelloWorld"
document.addEventListener("DOMContentLoaded", () => {
const element = document.querySelector("#app");
if (element !== null) {
const app = Vue.createApp({});
// register your components
app.component('hello-world', HelloWorld);
app.mount("#app");
}
});
in app/javascript/application.js
add the following line
import "./vue"
create app/javascript/components
Then add your Vue component app/javascript/components/HelloWorld.js
const HelloWorld = {
template: `
<div>
<h1>{{ message }}</h1>
</div>
`,
data() {
return {
message: 'Hello, Vue!'
};
}
}
export default HelloWorld;
in home/index.html.erb
<div id="app">
<hello-world></hello-world>
</div>