Loïc TRUCHOT
JavaScript Fullstack Expert & Senior web developer
CC-BY-NC-4.0 / Feb. 2021 / Loïc TRUCHOT
front-end
back-end
IP -> TCP -> HTTP -> HTML/CSS/JS
(part en cuisine) Server <--> Client (commande le plat)
plusieurs couches, comme des poupées russes
html basics
Bonus: Ajouter une balise <strong> autour d'un mot clé important
VS
dans <html>, une balise <head> s'ouvre et se ferme.
elle contient une balise <title>
contenant le texte "BSE - Best Site Ever"
dans <html>, après <head></head>, une balise <body> s'ouvre et se ferme.
elle contient une balise <h1>
contenant le texte "Mes questions"
<body> contient aussi votre liste <ul>
ajouter <!DOCTYPE html> tout en haut du document, au dessus de <html>
L'arbre HTML
<link rel="stylesheet" type="text/css" href="index.css" />
La feuille de style donne une série de propriétés (properties) pour chaque balise
body {
background-color: violet;
}
h1 {
color: blue;
text-transform: uppercase;
}
<button onclick="saluer()">dire coucou</button>
<script>
function saluer() {
alert("Coucou !");
document.body.style.color = "green";
}
</script>
Bonus: le nightmode est "toggle": on peut revenir en daymode !
nightmode
<a href="#bas">go to footer</a>
<a name="bas" />
<a href="contact.html">contact me !</a>
<a href="https://fr.wikipedia.org/wiki/PageRank">En savoir plus</a>
Créer les 3 types de liens sur votre page web:
Bonus 2: trouver une manière pour que le liens vers un site externe ouvre une nouvelle fenêtre
hyperliens
<img src="https://autocollant-sticker.com/flocon-neige.jpg" />
Bonus 1 : la taille de votre image est contrôlée grâce à CSS
Bonus 2: musique sur ce site, et images selon les moments de l'aventure
sérendipité des années 80
<img src="https://lone-wolf.com/warrior-girl.jpg" />
Bonus 1: taille et bordure des images contrôlée grâce à CSS
<p class="bg-blue">test</p>
<div class="bg-blue">test</div>
<div id="division-1">test</p>
.bg-blue {
background-color: blue;
color: white;
}
#division-1 {
text-transform: uppercase;
}
...aucune id.
Le . indique la class, le # indique l'id
<h1>Pizza YOLO</h1>
<h2>Hello Sonia !</h2>
<p>
Today is friday: week-end is coming.<br />
What about a delicious Pizza tonight, Sonia ?
</p>
<div>
Try our classics :
<ul>
<li>Vegeteriana</li>
<li>Il Diavolo</li>
<li>Quattro Formagi</li>
</ul>
Or choose the daily chef choice:
<strong>the Calzone</strong>
</div>
<p>
<em>Pizza price: 10 € - See you soon Sonia.</em>
</p>
variables
Bonus: vos nombres sont tirés aléatoirement entre 1 et 10
var nourritureChoisie = "une pizza";
var aFaim = true;
if (aFaim) {
console.log("Je vais te cuisiner " + nourritureChoisie + " ?");
} else if (nourritureChoisie === "pizza") {
console.log("Tu es sûr ? J'ai " + nourritureChoisie + " ?");
} else {
console.log("Avoue que tu n'aimes pas ma cuisine");
}
Text
var && if
Bonus: afficher dans la console le prix final ayant subit la réduction
Bonus 2: C'est une fonction qui retourne le nouveau prix
for (var i = 0; i < 10; i++) {
console.log(i + " est inférieur à 10 !");
}
Pizza YOLO
Bonus: l'algorithme marche avec d'autres nombres que 20
Bonus 2: 1 pizza nous coûte 2.50€, et nous la vendons 10€.
La console nous donne notre bénéfice total à chaque nouvelle vente
Bonus 3: singulier/pluriel de pizza/pizze est respecté dans la console
Ecrivez du JS, sauvez, rechargez le navigateur (console ouverte) :
window, le couteau suisse
var test = window.prompt("blabla");
Bonus: prompt() demande l'âge avant le mot de passe: les mineurs sont refoulés via alert()
Bonus 2: on demande à l'user de s'enregistrer avec un password.
5sec plus tard, on lui re-demande ce même password pour rester
références
function handleClick () {
console.log("Quelqu'un a cliqué !");
};
<button onclick="handleClick()">Test</button>
Ecrivez du JS, sauvez, rechargez le navigateur (console ouverte) :
window, le couteau suisse
var test = window.document.getElementById("item");
va chercher l'élément html dont l'id est "item" (<div id="item"> par exemple), et le met dans la variable "test"
test.innerText ="coucou";
écrit coucou dans cette div.
les valeurs, les références
Un language faiblement typé, aux types changeants
var chose = "string";
chose = 42;
// pas d'erreur
var str: String = new String("string");
str = 42;
// BOOM
Qui est le plus robuste ?
Qui est le plus léger ?
var x = 13 + 89.0;
Jouer avec les nombres
Bonus: on peut aussi passer des durée en heures au programme, comme la chaîne "2h13" et si sait la convertir en minute
var empty = [undefined, null];
var primitives = ["Taille du rayon de la terre", 6371, true];
var objects = [{}, [], function() {}];
console.log(
empty
.concat(primitives)
.concat(objects)
.map(function(type) { return typeof type; })
.join(",")
);
console.log("test".toUpperCase(), (6371).toFixed(2), true.toString());
var arr = [];
var arr1 = [true, "2", 3];
méthodes de listes
var obj = {};
var obj1 = {
key1: "val1",
key2: 2
};
obj1.key3 = "toto";
console.log(obj.key2);
var chaton = {
couleur: 'gris',
cri: 'miaou',
miauler() {
console.log('le petit chat fait ' + this.cri);
},
};
chaton.miauler();
Bonus:
var people = [
{ nom: "Loïc", age: 34 },
{ nom: "Sabrina", age: 41 },
{ nom: "Swann", age: 22 }
];
Structure la plus courante de l'informatique
Bonus : féminins ? pluriels ?
Bonus : féminins ? pluriels ?
Next level
<body>
<header>
<img src="logo.jpg" /><nav><a href="#">home</a><a href="#">contact</a></nav>
</header>
<main>
<h1>mon site</h1>
<section>
<h2>ma section</h2>
</section>
<section>
<h2>ma section</h2>
<article>
<h3>mon article</h3>
</article>
<article>
<h3>mon article</h3>
</article>
</section>
</main>
<footer>
<nav><a href="#">home</a><a href="#">contact</a></nav>
</footer>
</body>
display: block;
display: inline;
display: inline-block;
width, height, margin, padding, border, background, text-align, position...
color, font, text-decoration, text-transform, line-height, letter-spacing...
un peu de souplesse
haïku à la carte
Bonus 2: Le site est dans une structure classique, avec un joli design
Bonus : Les haïkus ont une forme images associée en entête
<link
rel="stylesheet"
href="https://pro.fontawesome.com/releases/v5.10.0/css/all.css"
integrity="sha384-AYmEC3Yw5cVb3ZcuHtOA93w35dYTsvhLPVnYs9eStHfGJvOvKxVfELGroGkvsg+p"
crossorigin="anonymous">
Police d'icône
Bonus 1: lorsqu'on clique sur play, ça lance votre chanson préférée
Bonus 2: lorsqu'on clique sur le bouton "play", cela devient un bouton "pause" et vice versa
Bonus 3: lorsqu'on clique sur play, le range avance tout seul !
Tout en un
Les components les plus utilisés sont souvent:
Les «utilities» sont les "one-liners" très utile pour des petites rectifications visuelles:
.rounded-circle, .d-flex, .shadow-sm, .p-0, .text-center...
Les fondements de l'informatique - du bit au cloud, MP Spinette
Computer Science (en), Carrie Anne Philbin
THANKS EVERYONE
It's finally done !
Bon courage et bonne continuation
Tenez moi au courant:
teams / slack / loic.truchot.pro@gmail.com
By Loïc TRUCHOT
Discovering computer science basis with some JS examples, in french