Cours 1¶
Présentations¶
Annonce¶
Attribution des casiers à remplir avant le 23 août 11h am
Plan de cours¶
Révision Web2¶
HTML : Formulaire, Image, Picture
CSS : Margin, Padding, Display, Position, Media Queries, Sélecteurs, Aspect-ratio, Flexbox 1, Flexbox 2, Flexbox 3
Révision JavaScript¶
Pourquoi JavaScript ?¶
La base de la base¶
// Ceci est un commentaire sur une seule ligne
/*
Ceci est un commentaire
sur plusieurs lignes
*/
console.log("Wubba Lubba Dub Dub!");
alert("Wubba Lubba Dub Dub!");
Variables¶
let name = 'JF';
const age = 99;
var isStudent = false;
let num = 10; // Nombre entier (number)
let pi = 3.14; // Nombre à virgule (number)
let str = 'Salut!'; // Chaine de caractères (string)
let isTrue = true; // Booléen (boolean)
let empty = null; // Nul (null)
let notDefined; // Non défini (undefined)
let arr = []; // Tableau (array)
let obj = {}; // Objet (object)
let fn = () => {} // Fonction (function)
Opérateurs¶
let sum = 10 + 5;
let difference = 10 - 5;
let product = 10 * 5;
let quotient = 10 / 5;
L’opérateur modulo
L’opérateur modulo %
en JavaScript renvoie le reste de la division entière de deux nombres.
let modulo = 10 % 3;
let isEqual = 5 == '5';
let isStrictEqual = 5 === '5';
let isNotEqual = 5 != '5';
let isStrictNotEqual = 5 !== '5';
let isGreater = 10 > 5;
let isLess = 10 < 5;
let isGreaterOrEqual = 10 >= 5;
let isLessOrEqual = 10 <= 5;
let andOperator = true && false;
let orOperator = true || false;
let notOperator = !true;
Conditions :material-directions-fork¶
let score = 85;
let grade = 'Échec';
if (score >= 90) {
grade = 'A';
} else if (score >= 80) {
grade = 'B';
}
console.log(score);
Opérateur ternaire
let grade = (score >= 90) ? 'A' : (score >= 80) ? 'B' : 'Échec';
Tableaux et objets :material-table¶
let fruits = ['Pomme', 'Banane', 'Cerise'];
console.log(fruits[1]);
let person = {
name: 'JF',
age: 99,
isStudent: false
};
console.log(person.name);
Boucles :material-repeat¶
for (let i = 0; i < 5; i++) {
console.log(i + ' 🦄');
}
let person = {name: 'JF', age: 99, city: 'Laval'};
for (let key in person) {
console.log(key + ' : ' + person[key]);
}
let parts = ['👁️', '👃', '👄'];
for (let part of parts) {
console.log(part);
}
let numbers = ['JF', 99, '🌱', true];
numbers.forEach(function(number) {
console.log(number);
});
Fonctions :material-function¶
function greet(name) {
return 'Coucou ' + name + ' !';
}
const greet = function(name) {
return 'Coucou ' + name + ' !';
};
const greet = (name) => {
return 'Coucou ' + name + ' !';
};
Manipulation du DOM ¶
let element = document.getElementById('demo');
let element2 = document.querySelector('.demo');
let elements = document.querySelectorAll('p');
let elements2 = document.getElementsByClassName("demo");
element.classList.add('new-class');
element.classList.remove('old-class');
element.classList.toggle('active');
element.innerHTML = 'JavaScript 🙌';
element.style.color = '#ABCDEF';
element.setAttribute('title', 'Petit tooltip pour ton info');
let titleAttribute = element.getAttribute('title');
element.removeAttribute('title');
Les événements :material-cursor-default-click¶
<button id="miaw">Oui?</button>
document.getElementById('miaw').addEventListener('click', function() {
console.log('J’ai dis non!');
});
document.getElementById('miaw').addEventListener('mouseover', function() {
console.log('Vous avez survolé le bouton!');
});
<input type="text" id="champ" placeholder="Tapez quelque chose">
document.getElementById('champ').addEventListener('focus', function() {
console.log('Champ de saisie en focus');
});
document.getElementById('champ').addEventListener('blur', function() {
console.log('Champ de saisie hors focus');
});
document.getElementById('champ').addEventListener('keyup', function(event) {
console.log('Vous avez tapé : ' + event.target.value);
});
document.getElementById('champ').addEventListener('change', function(event) {
console.log('La valeur a changé : ' + event.target.value);
});
this 🤯¶
this
fait référence au contexte dans lequel la fonction est exécutée
<button id="submit">Télécharger</button>
document.getElementById('submit').addEventListener('click', function() {
// Ici, "this" représente le bouton cliqué
this.style.backgroundColor = 'lightblue';
this.innerHTML = 'En cours';
});
Sauvegarde :material-content-save¶
localStorage.setItem("lastname", "Tremblay");
localStorage.getItem("lastname");
Limite de stockage
La capacité maximale de stockage est d'environ 5 MB par domaine.
// Pour l'onglet
sessionStorage.setItem("lastname", "Gagnon");
sessionStorage.getItem("lastname");
Mathématiques ¶
Math.sqrt(81);
Math.random();
Math.max(1, 3);
Math.min(1, 3);
Math.floor(1.5);
Math.round(1.5);
Math.ceil(1.5);
Audio & Vidéo¶
<audio id="mozart" controls muted>
<source src="mozart.mp3" type="audio/mp3">
Votre navigateur ne supporte pas l'élément audio.
</audio>
<video id="loop" width="320" height="240" controls muted>
<source src="loop.mp4" type="video/mp4">
Votre navigateur ne supporte pas l'élément vidéo.
</video>
let audio = document.getElementById('mozart');
audio.play();
audio.pause();
audio.playbackRate = 1.5; // 1.5x la vitesse normale
audio.currentTime = 10; // Saute à 10 secondes
let video = document.getElementById('loop');
video.play();
video.pause();
video.playbackRate = 0.5;
video.currentTime = 0;
Lecture automatique
De nombreux navigateurs imposent des restrictions sur la lecture automatique (autoplay) des médias en raison de préoccupations concernant l’expérience utilisateur et la consommation de données. Par conséquent, l'utilisateur doit souvent interagir avec la page pour déclencher une lecture. Cependant, il est généralement possible de contourner cette restriction en coupant initialement le son du média à l'aide de l'attribut muted
.
Introduction aux classes¶
Qu’est-ce qu’une classe ?¶
Une classe en JavaScript, c’est un peu comme une « recette » pour créer plusieurs objets similaires.
Imaginez que vous devez créer plusieurs personnages dans un jeu.
Au lieu de répéter le même code pour chaque personnage, vous pouvez utiliser une classe pour définir une « recette de personnage » et créer autant de personnages que vous voulez.
Pourquoi utiliser des classes ?¶
Sans les classes, chaque fois que vous voulez créer un nouvel objet avec les mêmes propriétés (ex: un personnage), vous devez tout réécrire pour chaque personnage: son nom, sa couleur de cheveux, sa grandeur, son poid, son QI, etc.
Avec une classe, vous écrivez le code une seule fois et pouvez ensuite l’utiliser pour créer plusieurs objets!
Comment ça fonctionne ?¶
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet()
console.log(`Salut, je m'appelle ${this.name} et j'ai ${this.age} ans.`);
}
}
const person1 = new Person('Jeanne', 25);
person1.greet();
// Affiche "Salut, je m'appelle Jeanne et j'ai 25 ans."
const person2 = new Person('Félix', 641);
person2.greet();
// Affiche "Salut, je m'appelle Félix et j'ai 641 ans."
Quelques observations importantes dans l'exemple ci-dessus :
- Le nom d'une classe doit commencer par une majuscule. C'est une norme.
- Une fonction à l'intérieur d'une classe s'appelle une méthode.
- La fonction
constructor
est comme un modèle de départ qui assigne les variables de la classes. - Les variables ne sont pas définies comme à l'habiture avec
let
,var
ouconst
.
Exercice - JavaScript
La guerre de 100 ans
Lignes de commandes¶
La ligne de commande est un outil qui permet d’interagir avec un ordinateur en tapant des commandes textuelles.
On écris des lignes de commandes dans un CLI, aussi appelé « Terminal ».
Contrairement à une interface graphique (GUI) où vous cliquez sur des boutons, ici, vous tapez directement ce que vous voulez faire.
Les lignes de commande sont très utile en développement web et pour configurer les serveurs, entre autres.
Bon à savoir
- En ligne de commande, lorsqu'on voit
.
ou./
, cela signifie le répertoire courant. - Lorsqu'on voit
..
ou../
, ça signifie le répertoire parent. - On peut utiliser la touche Tab pour compléter une ligne de commande.
Où se trouve le terminal ?¶
- En Windows, utilisez l'application PowerShell1 plutôt que command prompt.
- En macOS, utilisez l'application Terminal2.
- En Linux, utilisez l'application Terminal3.
Position¶
Affichager l'emplacement avec « pwd »
pwd
# Résultat : C:\Windows
Navigation¶
Liste¶
Lister des fichiers et dossiers avec « ls »
ls
Déplacement¶
Changer de répertoire avec « cd »
cd nom_du_dossier
cd ./nom_du_dossier # identique à la commande précédente
cd .. # Se déplace au répertoire parent
Fichiers¶
Création¶
Créer un fichier avec « touch »
touch nom_du_fichier.txt
Lecture¶
Lire le contenu d'un fichier avec « cat »
cat nom_du_fichier.txt
Écriture¶
Écrire dans un fichier avec « echo »
echo "Texte à ajouter" >> nom_du_fichier.txt
echo "Texte en deuxième ligne" >> nom_du_fichier.txt
echo "Texte en troisième ligne!" >> nom_du_fichier.txt
echo "Finalement, remplace tout par ceci" > nom_du_fichier.txt
Déplacement¶
Déplacer, ou renommer!!, un fichier avec « mv »
mv nom_du_fichier.txt nouveau_nom.txt
mv nom_du_fichier.txt assets/nom_du_fichier.txt
Suppression¶
Supprimer un fichier ou un répertoire avec « rm »
rm nom_du_fichier.txt
Dossiers¶
Création¶
Créer un fichier avec « mkdir »
mkdir nom_du_dossier
Supprimer un dossier¶
Supprimer un dossier avec « rm -r ». L’option -r
signifie récursif (recursive en anglais), ce qui permet de supprimer tout les contenus d'un dossier.
rm -r nom_du_dossier
Exercice - CLI
Mandala