[RUBY] Présentation de Vue.js à une application Rails existante

Vue.js semble être cool

Je voulais être cool. Je voulais rendre le site en développement personnel cool. Je voulais en faire une Guin et un Baban. J'ai décidé de présenter Vue.js.

Je ne connais pas encore le principe de son fonctionnement, mais j'ai décidé d'y aller car le coût d'apprentissage est faible et la documentation semble conséquente.

Introduction du webpacker et du fil

Tout d'abord, il semble que le Webpacker et le fil soient nécessaires.

Un webpacker est un bundler de modules qui a pour rôle de combiner plusieurs javascripts en un seul. Je ne sais pas ce que c'est. Cependant, si vous êtes coincé ici, vous ne pouvez pas faire ça avec Vue.js. Reporté.

Il semble que yarn soit un gestionnaire de paquets. Cela semble être une version améliorée de npm. Cela semble faciliter l'ajout et la gestion des bibliothèques. Vraiment.

Les deux étaient déjà en place dans mon application Rails. Le Gemfile avait la description suivante.

gem "webpacker", "~> 4.x"

le fil était déjà installé. J'ai vérifié la version et il n'y a pas eu de problème.

$ yarn -v

Créer un fichier initial pour Vue

Exécutez la commande suivante dans le terminal pour créer les fichiers requis pour vue.

$ bundle exec rails webpacker:install:vue

Fabriqué de différentes manières.

Décrit dans le fichier de vue

Ajoutez la description suivante à application.html.erb.

erb:view/layouts/application.html.erb


 <!--Abréviation-->
 <body>
  <%= javascript_pack_tag 'hello_vue' %>
  <%= stylesheet_pack_tag 'hello_vue'  %> 
<!--Abréviation-->

Lorsque vous faites cela, "Hello View!" Sera affiché en bas de la page supérieure. S'il peut être affiché, il réussit. Tu l'as fait.

Que regarder dans Vue.js

Il semble que vous puissiez charger app / javascript / packs / hello_vue.js en utilisant javascript_pack_tag. Ce «hello_vue.js» fait référence à «app / javascript / app.vue». Nous allons jeter un coup d'oeil.

app/javascript/app.vue


<template>
  <div id="app">
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data: function () {
    return {
      message: "Hello Vue!"
    }
  }
}
</script>

<style scoped>
p {
  font-size: 2em;
  text-align: center;
}
</style>

C'est une description de type CSS, vous pouvez donc la lire sans trop de résistance. Apparemment, "Hello Vue!" Est inclus dans le "{{message}}" du modèle. Quand j'ai essayé de changer la chaîne de caractères, c'est devenu comme ça.

Cela semble être appelé liaison de données. C'est cool.

Créez votre propre fichier Vue

Je ne peux pas faire Hello World pour toujours, alors jouons plus avec. Je souhaite créer moi-même un fichier Vue. Avant cela, lisez le précédent hello_vue.js. Il devrait y avoir beaucoup de commentaires.

app/javascript/packs/hello_vue.js


//Écrit de manière variée

// The above code uses Vue without the compiler, which means you cannot
// use Vue to target elements in your existing html templates. You would
// need to always use single file components.
// To be able to target elements in your existing html/erb templates,
// comment out the above code and uncomment the below
// Add <%= javascript_pack_tag 'hello_vue' %> to your layout
// Then add this markup to your html template:

// <div id='hello'>
//   {{message}}
//   <app></app>
// </div>

//Code ci-dessous

C'est un peu gênant, alors traduisons-le en japonais.

//Le code en haut est utilisé lors de l'utilisation de Vue sans compilateur. Ceci est un modèle html existant
//D'autre part, il est utilisé lorsque vous ne pouvez pas jouer avec Vue.
//Oui, il s'agit toujours d'un seul composant.

//Si vous souhaitez ajouter du code à votre html existant, commentez le code.
//Et au html<%= javascript_pack_tag 'hello_vue' %>Ajouter.
//Après cela, intégrez la balise div suivante.

Je comprends un peu. C'est pourquoi commentons le code en haut et commentons le code en bas.

import Vue from 'vue/dist/vue.esm'
import App from '../app.vue'

document.addEventListener('DOMContentLoaded', () => {
  const app = new Vue({
    el: '#hello',
    data: {
      message: "Can you say hello?"
    },
    components: { App }
  })
})

Cela devrait sortir. Après cela, ajoutons une description à application.html.erb.

 <body>
 <!--Abréviation-->
    <div id="hello">
      <p>{{ message }}</p>
    </div>
 <!--Abréviation-->

Cela changera "Hello Vue!" En "Pouvez-vous dire bonjour?".

D'une manière ou d'une autre, je l'ai compris. Après cela, copiez le fichier et créez votre propre fichier Vue. Copiez le app / javascript / packs / hello_vue.js de plus tôt (aucune partie de commentaire requise) et créez un nouveau fichier appelé app / javascript / packs / custom_vue.js. Faites quelques corrections.

app/javascript/packs/custom_vue.js


import Vue from 'vue/dist/vue.esm'
import App from '../app.vue'

document.addEventListener('DOMContentLoaded', () => {
  const app = new Vue({
    el: '#hello2',
    data: {
      message: "Peux-tu m'entendre C'est vue.C'est js. Ne pas écrire de HTML"
    },
    components: { App }
  })
})

Après cela, modifiez une partie de la description de application.html.erb.

<%= javascript_pack_tag 'custom_vue' %> <!--← Ajouter-->
<%= javascript_pack_tag 'hello_vue' %>
<%= stylesheet_pack_tag 'hello_vue' %>

<!--Abréviation-->
    <div id="hello">
      <p>{{ message }}</p>
    </div>
    <!--Ajouter ↓-->
    <div id="hello2">
      <p>{{ message }}</p>
    </div> 
<!--Abréviation-->

Ce sera comme ça.

C'est fait! !! !! !!

en conclusion

Vue.js est amusant. Je ne suis pas sûr, mais ça devrait être amusant. C'est parce qu'il est facile à comprendre parce que l'apparence change radicalement. Je continuerai à publier les progrès du développement personnel et à présenter les endroits où je suis resté coincé.

Merci pour votre soutien!

référence

https://github.com/rails/webpacker/blob/master/docs/integrations.md#vue

Matériel pédagogique pour le décollage https://freelance.cat-algorithm.com/lp/take-off-rails

Recommended Posts

Présentation de Vue.js à une application Rails existante
Introduction de Vuetify aux applications Rails existantes
Rétrograder une application existante créée avec les rails 5.2.4 vers 5.1.6
Présentation de Vue.js à Rails
Comment pousser une application développée avec Rails vers Github
Rails6 J'ai essayé d'introduire Docker dans une application existante
Présentation du client gRPC aux rails
Je veux pousser une application créée avec Rails 6 vers GitHub
Comment spécifier la base de données lors de la création d'une application avec des rails
Comment changer le nom de l'application dans les rails
Je veux créer une application ios.android
Télécharger le fichier image de l'application Rails sur S3
Essayez de déployer l'application Rails sur EC2-Part 2 (déploiement) -
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
Rails6 jQuery introduit
Créer une application en spécifiant la version de Rails
Rails6.0 ~ Comment créer un environnement de développement respectueux de l'environnement
[Rails] Comment créer un environnement avec Docker
Unifier le fuseau horaire de l'application Rails à l'heure japonaise
Comment installer Docker dans l'environnement local d'une application Rails existante [Rails 6 / MySQL 8]
Un livre d'introduction à lire lors du démarrage de Rails
Un débutant en développement d'applications a essayé de créer une application de calculatrice Android
[Rails] Comment afficher les images dans la vue
Comment écrire des rails
Présentation de Bootstrap à Rails 5
Présentation de Bootstrap aux rails !!
Application de bureau Vue.js + Jersey
Comment désinstaller Rails
[Rails] Créer une application
Ajouter une icône au lien d'en-tête en utilisant Rails fontawesome
Sortie verbalisée de procédure approximative lors de la création d'une application avec Rails
[Rails] J'ai essayé de créer une mini application avec FullCalendar
Résumé du travail initial lors de la création d'une application avec Rails
Comment déployer jQuery dans les applications Rails à l'aide de Webpacker
Comment créer une application à l'aide de Tensorflow avec Android Studio