<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Dr. Code</title>
    <description>The latest articles on Forem by Dr. Code (@alexissengangabo07).</description>
    <link>https://forem.com/alexissengangabo07</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1094210%2Fe30afcd1-1862-44e0-9a35-cc65c9a56f00.jpeg</url>
      <title>Forem: Dr. Code</title>
      <link>https://forem.com/alexissengangabo07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alexissengangabo07"/>
    <language>en</language>
    <item>
      <title>Comment utiliser le moteur de modèle EJS dans votre application Node.js</title>
      <dc:creator>Dr. Code</dc:creator>
      <pubDate>Fri, 02 Jun 2023 10:39:17 +0000</pubDate>
      <link>https://forem.com/kadea-academy/lutilisation-dun-moteur-de-modeles-ejs-dans-une-applications-nodeexpress-1558</link>
      <guid>https://forem.com/kadea-academy/lutilisation-dun-moteur-de-modeles-ejs-dans-une-applications-nodeexpress-1558</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;Bonjour, dans cet article, vous allez apprendre comment utiliser le moteur de modèle EJS dans une application Node.js/Express.&lt;/p&gt;

&lt;p&gt;Qu’est-ce qu’un moteur de modèle ?&lt;br&gt;
En général, chaque moteur de template utilise un langage différent pour définir un template HTML et y injecter des données. Il y a quelques moteurs de template autres que EJS comme:&lt;br&gt;
Pug, Jade, Vash, Mustache, Dust.js, Nunjucks, …&lt;/p&gt;

&lt;p&gt;Moteur de modèles EJS&lt;br&gt;
EJS est l’acronyme de Embedded JavaScript Templates. Nous pouvons utiliser EJS à la fois du côté client et du côté serveur. Il peut également injecter des données dans un modèle HTML.&lt;/p&gt;

&lt;p&gt;EJS Tags&lt;/p&gt;

&lt;p&gt;&amp;lt;% %&amp;gt; Flux de contrôle&lt;br&gt;
&amp;lt;%= %&amp;gt;Affichage&lt;br&gt;
&amp;lt;%- %&amp;gt;Sortie brute non escamotée&lt;br&gt;
Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;% if (user) { %&amp;gt;
&amp;lt;p&amp;gt;&amp;lt;%= user.username %&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;% } %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Utiliser EJS avec Express&lt;br&gt;
Pour commencer à utiliser EJS comme moteur de modèle, nous devons d’abord installer EJS et Express :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i express ejs --save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Après avoir installé EJS et Express, la première chose à faire est de créer un serveur web en utilisant Express pour définir EJS comme notre moteur de vue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_5sVQq9v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mr1qf8so5itjo22nkt01.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_5sVQq9v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mr1qf8so5itjo22nkt01.png" alt="Image description" width="638" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Activer EJS comme moteur de template&lt;br&gt;
Après l’avoir fait, nous devons créer un dossier views puisque EJS cherche dans le dossier ‘views’ les modèles à rendre. Après avoir créé le dossier, il faudra créer les fichiers avec l’extension .ejs exemple “index.ejs”.&lt;/p&gt;

&lt;p&gt;Enfin vous pouvez écrire les codes HTML avec le balise de EJS et dynamiser nos contenus avec différentes fonctionnalités comme l’affichage, les conditions, boucles, etc&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Pour résumer, EJS est un très bon moteur de template qui est fait pour Node.JS. Il est bon d’utiliser EJS pour les raisons suivantes :&lt;/p&gt;

&lt;p&gt;Basique, facile à utiliser&lt;br&gt;
Accélère la période de développement Web&lt;br&gt;
Flexible&lt;/p&gt;

&lt;p&gt;Merci de nous avoir lu !&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Création d’un pomodoro avec du vanilla JavaScript</title>
      <dc:creator>Dr. Code</dc:creator>
      <pubDate>Fri, 02 Jun 2023 10:36:06 +0000</pubDate>
      <link>https://forem.com/kadea-academy/creation-dun-pomodoro-avec-du-vanilla-javascript-4feh</link>
      <guid>https://forem.com/kadea-academy/creation-dun-pomodoro-avec-du-vanilla-javascript-4feh</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yJQuyi5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cxm5n72no71ny2hepx3q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yJQuyi5i--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cxm5n72no71ny2hepx3q.png" alt="Image description" width="486" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Comment fonctionne un pomodoro?&lt;br&gt;
Un pomodoro est une application web front-end qui fait un compte à rebours en utilisant la technique de vous concentrer pendant une courte période de temps, puis de faire une pause. avec des paramètres de minuterie personnalisables.&lt;/p&gt;

&lt;p&gt;Dans notre cas, nous avons fait une session de 25 minutes et une pause de 5 minutes par défaut.&lt;/p&gt;

&lt;p&gt;Technologies utilisées&lt;br&gt;
Pour réaliser notre application nous avons utilisé les technologies suivantes:&lt;/p&gt;

&lt;p&gt;HTML5&lt;br&gt;
CSS3&lt;br&gt;
JavaScript ES6+&lt;br&gt;
User Stories&lt;br&gt;
L’utilisateur est capable de :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Démarrer une session&lt;/li&gt;
&lt;li&gt;Visualiser le statut de la session et de la pause&lt;/li&gt;
&lt;li&gt;Pauser une session&lt;/li&gt;
&lt;li&gt;Réinitialiser une session&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Développement de l’application&lt;br&gt;
Il faudra d’abord créer un dossier nommé “Pomodoro”, ensuite dans ce dossier, nous allons créer 3 fichier index.html, style.css et script.js.&lt;/p&gt;

&lt;p&gt;Dans notre fichier html, nous allons creer deux sections, l’une qui va contenir le compteur et le progress et l’autre va contenir le le groupe des boutons.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;main&amp;gt;
  &amp;lt;section class="clock"&amp;gt;
    &amp;lt;div class="mins"&amp;gt;0&amp;lt;/div&amp;gt;
    &amp;lt;span&amp;gt;:&amp;lt;/span&amp;gt;
    &amp;lt;div class="secs"&amp;gt;00&amp;lt;/div&amp;gt;
    &amp;lt;audio src="http://soundbible.com/mp3/service-bell_daniel_simion.mp3"&amp;gt;&amp;lt;/audio&amp;gt;
    &amp;lt;svg class="progress-ring" height="120" width="120"&amp;gt;
        &amp;lt;circle class="progress-ring__circle" stroke="rgba(233, 233, 57, 0.631)" stroke-width="12"
            fill="transparent" r="50" cx="60" cy="60" /&amp;gt;
    &amp;lt;/svg&amp;gt;
  &amp;lt;/section&amp;gt;

  &amp;lt;section class="btn-group"&amp;gt;
     &amp;lt;button class="start"&amp;gt;&amp;lt;i class="fa fa-play"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/button&amp;gt;
     &amp;lt;button class="pause"&amp;gt;&amp;lt;i class="fa fa-pause"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/button&amp;gt;
     &amp;lt;button class="reset"&amp;gt;&amp;lt;i class="fa fa-stop"&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;/button&amp;gt;
  &amp;lt;/section&amp;gt;
&amp;lt;/main&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour le progress bar, nous allons utiliser la balise SVG, qu’on va en plus personnaliser avec le JavaScript.&lt;/p&gt;

&lt;p&gt;Maintenant notre page est formidable, enfin nous allons manipuler notre DOM avec le JS, nous allons d’abord cibler nos elements HTML avec la methode querySelector de l’objet document, declarer et initialiser nos variables.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const sonnerie = document.querySelector("audio");

const mindiv = document.querySelector(".mins");
const secdiv = document.querySelector(".secs");

const startBtn = document.querySelector(".start");
const pauseBtn = document.querySelector(".pause");

let timerContainer, totalsecs, perc, paused, seconds;
let mins = 25;

const circle = document.querySelector(".progress-ring__circle");
const radius = circle.r.baseVal.value;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour realiser notre bar de progression, nous avons utiliser la balise SVG, qu’on va dynamiser avec notre fonction setProgress qui prendra une poucentage en prametre en reference avec le temps ecoulé.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const circumference = radius * 2 * Math.PI;

circle.style.strokeDasharray = circumference;
circle.style.strokeDashoffset = circumference;

function setProgress(percent) {
  const offset = circumference - (percent / 100) * circumference;
  circle.style.strokeDashoffset = offset;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Plongeons à dans le coeur de notre application en créant l’une des fonctions utiles notamment la fonction pour decrementer le compteur de temps qu’on va nommer decrement dans cette fonction on va decrementer les secondes, puis on va mettre en place certaines conditions, l’une qui va tester si la seconde arrive à 0 et l’autre qui va tester si nos minutes pour la session sont epuisés et alterner vers la pause.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function decrement() {
  mindiv.textContent = Math.floor(seconds / 60);
  secdiv.textContent = seconds % 60 &amp;gt; 9 ? seconds % 60 : `0${seconds % 60}`;
  if (circle.classList.contains("danger")) {
    circle.classList.remove("danger");
  }

  if (seconds &amp;gt; 0) {
    perc = Math.ceil(((totalsecs - seconds) / totalsecs) * 100);

    setProgress(perc);
    seconds--;
    timerContainer = window.setTimeout("decrement()", 1000);
    if (seconds &amp;lt; 10) {
      circle.classList.add("danger");
    }
  } else {
    mins = 0;
    seconds = 0;
    sonnerie.play();
    let btn = localStorage.getItem("btn");

    if (btn === "focus") {
      startBtn.textContent = "start break";
      startBtn.classList.add("break");
      localStorage.setItem("btn", "break");
    } else {
      startBtn.classList.remove("break");
      startBtn.textContent = "start session";
      localStorage.setItem("btn", "focus");
    }
    startBtn.style.transform = "scale(1)";
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Afin nous allons mettre en place les evenements sur nos trois bouttons, l’un qui pour but de démarrer le timer, ensuite l’autre aura pour but de mettre le timer en pause afin celui qui va réinitialiser notre compteur.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;startBtn.addEventListener("click", () =&amp;gt; {

  seconds = mins * 60;
  totalsecs = mins * 60;
  setTimeout(decrement());
  startBtn.style.transform = "scale(0)";
  pauseBtn.style.transform = "scale(1)";
  paused = false;
});

pauseBtn.addEventListener("click", () =&amp;gt; {
  clearTimeout(timerContainer);
  pauseBtn.style.transform = "scale(0)";
  startBtn.style.transform = "scale(1)";
});

reset.addEventListener("click", () =&amp;gt; {
  clearTimeout(timerContainer);
  perc = 0;
  seconds = 0;
  mindiv.textContent = `00`;
  secdiv.textContent = `0${seconds}`;
  setProgress(perc);
  pauseBtn.style.transform = "scale(1)";
  startBtn.style.transform = "scale(1)";
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Et voilà ! Maintenant vous avez appliqué les principes du pomodoro, avec du vanilla JavaScript, pour d’explorations et contributions vous pouvez retrouver mon dépot &lt;a href="https://github.com/alexissengangabo07/count-down-js"&gt;Github ICI&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
