8 Vue CLI

Auteur: Brouettelover 2022-07-11 17:59:30
Categories: > Tags:

Arborescence

node_modules

Ce dossier reprend l’ensemble des plugins de vue.js

public


components

Ce dossier comprends l’ensemble des composants réutilisable par d’autres composants.
Il représente des parties de pages par exemple: une barre de navigation ou un menu.

router

Ce dossier reprend l’ensemble des routes pour une single page application.

index.js

import { createRouter, createWebHistory } from 'vue-router' //importe le router de vue.js
import LoginView from '@/views/home/LoginView.vue' //ajoute la page LoginView
import RegisterView from '@/views/home/RegisterView.vue' //ajoute la page RegisterView
import LostView from '@/views/home/LostView.vue' //ajoute la page LostView
import DashboardView from '@/views/modules/DashboardView.vue' //ajoute la page DashboardView

const routes = [ //Liste l'ensemble des routes
  {
    path: '/',  //route d'arrivé sur le / page d'acceuil
    name: 'home',
    component: LoginView
  },
  {
    path: '/register',  // route qui mène vers le /register -> soit la page RegisterView
    name: 'register',
    component: RegisterView
  },
  {
    path: '/lost', // route qui mène vers le /lost -> soit la page LostView
    name: 'lost',
    component: LostView
  },
  {
    path: '/dashboard', // route qui mène vers le /dashboard -> soit la page DashboardView
    name: 'dashboard',
    component: DashboardView
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),  // utilise la version avec / plutôt que #
  routes
})

export default router  // export le router pour qu'il puisse être utilisé sur d'autres pages

views

Contient l’ensemble des pages Vue.
Les pages sont diviser par 3 :
-> Une section template qui reprend le code HTML.
-> Une partie script qui reprend les fonctions et les variables Javascript.
-> Une partie style pouvant être scoped (pour limité à la page), cette partie contient le css

________________HTML________________
<template>
<form class="form-signin" method="POST" action="/login">
  <div class="imgcontainer">
    <img src="@/assets/img/logo.png" alt="Logo" class="logo">
  </div>

  <div class="container">
    <label for="uname"><b>Nom de compte</b></label>
    <input type="text" placeholder="Entrez votre nom de compte" name="username" pattern="(?=[a-z]).{4,}" required>

    <label for="psw"><b>Mot de passe</b></label>
    <input type="password" placeholder="Entrez votre mot de passe" name="password" required>
    <button type="submit">Login</button>
    <span class="psw"><a href="/lost">Mot de passe oublié?</a></span>
    <span class="register"><a href="/register">S'enregistrer</a></span>
  </div>

</form>
</template>
________________CSS________________
<style> 
  @import '@/assets/css/login.sass'; //Import le css d'un fichier externe

</style>
_____________Javascript_____________
<script>

export default {
  name: 'LoginView' //rend la page accessible sur les autres pages
}
</script>

App.vue

équivalent d’un header ou d’un footer à la création d’un projet vue cli.

_________________HTML_________________
<template>
  <nav> //router-link est une balise permettant d'utiliser les route définie dans index.js
    <router-link to="/">Home</router-link> |
    <router-link to="/register">register</router-link> |
    <router-link to="/dashboard">dashboard</router-link>
  </nav>
  <router-view/> //indique d'utiliser le router de vue
</template>
__________________CSS__________________
<style lang="scss">
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

nav {
  padding: 30px;

  a {
    font-weight: bold;
    color: #2c3e50;

    &.router-link-exact-active {
      color: #42b983;
    }
  }
}
</style>

main.js

Comporte le code permettant de construire l’application.

import { createApp } from 'vue' //importe les librairies
import App from './App.vue'
import './registerServiceWorker'
import router from './router'

createApp(App).use(router).mount('#app') //créer l'application

tests

?