Skip to content

Commit b61300f

Browse files
authored
Merge pull request #227 from Retroscilo/master
From the orbital height
2 parents fb1ac7d + 6faacb7 commit b61300f

File tree

5 files changed

+77
-65
lines changed

5 files changed

+77
-65
lines changed
Binary file not shown.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"ExpandedNodes": [
3+
""
4+
],
5+
"PreviewInSolutionExplorer": false
6+
}
Binary file not shown.
Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,76 @@
1-
# From the orbital height
1+
# Prenons un peu de recul
22

3-
This section describes a set of modern standards for "web components".
3+
Cette section décrit un ensemble des standards actuels pour les "web components".
44

5-
As of now, these standards are under development. Some features are well-supported and integrated into the modern HTML/DOM standard, while others are yet in draft stage. You can try examples in any browser, Google Chrome is probably the most up to date with these features. Guess, that's because Google fellows are behind many of the related specifications.
5+
Encore aujourd'hui, ces standards sont toujours en développement. Quelques fonctionnalités sont bien supportées/intégrées dans les conventions HTML/DOM moderne, tandis que d'autres sont toujours au stade d'ébauches. Vous pouvez essayer les différents exemples dans n'importe quel navigateur, tout en gardant à l'esprit que Google Chrome est probablement le plus avancé en ce qui concerne l'intégration de ces fonctionnalités... Probablement car ce sont les développeurs de chez Google qui ont travaillé sur beaucoup de ces dites fonctionnalités.
66

7-
## What's common between...
7+
## Rien de nouveau à l'horizon...
88

9-
The whole component idea is nothing new. It's used in many frameworks and elsewhere.
9+
L'idée même de composant n'a rien de nouveau : ils sont déjà utilisés, entre autre, dans beaucoups de frameworks.
1010

11-
Before we move to implementation details, take a look at this great achievement of humanity:
11+
Avant de parler des détails techniques, prenons un instant pour contempler l'une des plus grande réussite de l'humanité :
1212

1313
![](satellite.jpg)
1414

15-
That's the International Space Station (ISS).
15+
Voici la Station Spatiale Internationale (ISS pour les intimes).
1616

17-
And this is how it's made inside (approximately):
17+
Et voilà comment c'est fait à l'intérieur (plus ou moins):
1818

1919
![](satellite-expanded.jpg)
2020

21-
The International Space Station:
22-
- Consists of many components.
23-
- Each component, in its turn, has many smaller details inside.
24-
- The components are very complex, much more complicated than most websites.
25-
- Components are developed internationally, by teams from different countries, speaking different languages.
21+
La Station Spatiale Internationale :
22+
- Repose sur beaucoup de composants.
23+
- Chaque composant, à son tour, repose sur encore plus de petits éléments.
24+
- Les composants sont donc très complexe, bien plus complexe que la plupart des sites web.
25+
- Ces composants sont développés internationalement, par des équipes venant de pays différents, parlant différents langages...
2626

27-
...And this thing flies, keeps humans alive in space!
27+
...Et ce machin vole, mieux encore : il garde des humains en vie dans l'espace !
2828

29-
How such complex devices are created?
29+
Comment sont fabriqués des engins aussi complexes ?
3030

31-
Which principles we could borrow to make our development same-level reliable and scalable? Or, at least, close to it.
31+
Quels principes pourrions-nous utiliser pour amener notre développement au même niveau de fiabilité et de flexibilité ? Ou au moins essayer de s'en rapprocher ?
3232

33-
## Component architecture
33+
## L'architecture des composants web
3434

35-
The well known rule for developing complex software is: don't make complex software.
35+
La règle d'or pour développer des programmes compliqués est : ne pas faire de programmes compliqués.
3636

37-
If something becomes complex -- split it into simpler parts and connect in the most obvious way.
37+
Si quelque chose devient trop complexe -- divisez le problème en parties plus abordables et assemblez-les de la manière la plus naturelle possible.
3838

39-
**A good architect is the one who can make the complex simple.**
39+
**Le bon architecte est celui qui arrive à simplifier ce qui est compliqué.**
4040

41-
We can split user interface into visual components: each of them has own place on the page, can "do" a well-described task, and is separate from the others.
41+
On peut diviser les interfaces utilisateur en plusieurs composants visuels : chacun d'eux a ainsi sa propre place sur la page, peut exécuter une tâche bien définie et diffère des autres.
4242

43-
Let's take a look at a website, for example Twitter.
43+
Regardons par exemple Twitter.
4444

45-
It naturally splits into components:
45+
Nous pouvons facilement isoler plusieurs composants :
4646

4747
![](web-components-twitter.svg)
4848

49-
1. Top navigation.
50-
2. User info.
51-
3. Follow suggestions.
52-
4. Submit form.
53-
5. (and also 6, 7) -- messages.
49+
1. Navigation.
50+
2. Information utilisateur.
51+
3. Suggestions.
52+
4. Formulaire d'envoi.
53+
5. (et enfin 6, 7) -- messages.
5454

55-
Components may have subcomponents, e.g. messages may be parts of a higher-level "message list" component. A clickable user picture itself may be a component, and so on.
55+
Les composants peuvent avoir des sous-composants, par exemple les messages : ils peuvent faire partie du composant plus général "liste des messages". Une photo de profil cliquable peut elle-même être un composant et ainsi de suite.
5656

57-
How do we decide, what is a component? That comes from intuition, experience and common sense. Usually it's a separate visual entity that we can describe in terms of what it does and how it interacts with the page. In the case above, the page has blocks, each of them plays its own role, it's logical to make these components.
57+
Comment définir ou décider de ce qui doit être un composant ? Tout est question d'intuition, d'expérience et de sens commun. Généralement, c'est un élément visuel distinct, que l'on peut décrire en fonction de ce qu'il fait et de comment il interagit avec la page. Pour l'exemple ci-dessus, la page a des blocs, et chacun d'entre eux jouent leur propre rôle : il devient ainsi logique de les définir en tant que composant.
5858

59-
A component has:
60-
- Its own JavaScript class.
61-
- DOM structure, managed solely by its class, outside code doesn't access it ("encapsulation" principle).
62-
- CSS styles, applied to the component.
63-
- API: events, class methods etc, to interact with other components.
59+
Un composant contient :
60+
- Sa propre classe JavaScript.
61+
- Sa structure du DOM, gérée seulement par sa classe : le code exterieur n'y aura pas accès (c'est le principe "d'encapsulation").
62+
- Son style CSS, qui sera appliqué à ce composant seulement.
63+
- Son API : les évenements, les méthodes de classe, ect, pour lui permettre d'interagir avec les autres composants.
6464

65-
Once again, the whole "component" thing is nothing special.
65+
Encore une fois, un composant n'a rien de spécial.
6666

67-
There exist many frameworks and development methodologies to build them, each with its own bells and whistles. Usually, special CSS classes and conventions are used to provide "component feel" -- CSS scoping and DOM encapsulation.
67+
Il existe déjà beaucoup de frameworks et de méthode de développement pour en construire, chacun d'eux ayant leur propres avantages. Généralement, ce sont des classes et des conventions spéciales qui sont utilisées en CSS pour reproduire l'impression d'utiliser des composants -- le 'CSS scoping' et l'encapsulation du DOM.
6868

69-
"Web components" provide built-in browser capabilities for that, so we don't have to emulate them any more.
69+
Les composants web proposent maintenant des outils intégrés au navigateur pour cela, nous n'avons plus besoin de les simuler :
7070

71-
- [Custom elements](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements) -- to define custom HTML elements.
72-
- [Shadow DOM](https://dom.spec.whatwg.org/#shadow-trees) -- to create an internal DOM for the component, hidden from the others.
73-
- [CSS Scoping](https://drafts.csswg.org/css-scoping/) -- to declare styles that only apply inside the Shadow DOM of the component.
74-
- [Event retargeting](https://dom.spec.whatwg.org/#retarget) and other minor stuff to make custom components better fit the development.
71+
- [Custom elements](https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements) -- pour définir les customs elements.
72+
- [Shadow DOM](https://dom.spec.whatwg.org/#shadow-trees) -- pour créer un DOM interne au composant, inaccessible aux autres.
73+
- [CSS Scoping](https://drafts.csswg.org/css-scoping/) -- pour définir des styles qui s'appliquent seulement à l'interieur du Shadow DOM du composant.
74+
- [Event retargeting](https://dom.spec.whatwg.org/#retarget) -- et d'autres petites choses pour rendre nos composants encore plus facile à développer.
7575

76-
In the next chapter we'll go into details of "Custom Elements" -- the fundamental and well-supported feature of web components, good on its own.
76+
Dans le prochain chapitre nous allons voir les détails des "Custom Elements" -- les fondamentaux et les fonctionnalitées déjà bien intégrées des composants web, qui se suffisent à eux-mêmes.

8-web-components/2-custom-elements/article.md

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,68 @@
11

22
# Custom elements
33

4-
We can create custom HTML elements, described by our class, with its own methods and properties, events and so on.
4+
Nous pouvons créer des éléments HTML personnalisés, définis par nos classes, avec leur propres méthodes et propriétés, gestionnaires d'événement, etc.
55

6-
Once a custom element is defined, we can use it on par with built-in HTML elements.
6+
Une fois qu'un élément personnalisé est définit, nous pouvons l'utiliser au même titre qu'un élément HTML classique.
77

8-
That's great, as HTML dictionary is rich, but not infinite. There are no `<easy-tabs>`, `<sliding-carousel>`, `<beautiful-upload>`... Just think of any other tag we might need.
8+
C'est parfait, sachant que le dictionnaire HTML est riche, mais pas infini. Il n'y a pas de `<easy-tabs>`, `<sliding-carousel>`, `<beautiful-upload>`... Pensez un instant à toute les balises dont nous pourrions avoir besoin.
99

10-
We can define them with a special class, and then use as if they were always a part of HTML.
10+
Nous pouvons les définir avec une classe spéciale, et les utiliser comme des balises HTML classique.
1111

12-
There are two kinds of custom elements:
12+
Il y a deux sortes d'éléments personnalisés :
1313

14-
1. **Autonomous custom elements** -- "all-new" elements, extending the abstract `HTMLElement` class.
15-
2. **Customized built-in elements** -- extending built-in elements, like a customized button, based on `HTMLButtonElement` etc.
14+
2. **Éléments personnalisés autonome** -- les nouveaux éléments, qui étendent la classe abstraite `HTMLElement`.
15+
<!-- 2. **Customized built-in elements** -- extending built-in elements, like a customized button, based on `HTMLButtonElement` etc. -->
16+
**Éléments personnalisés intégrés** -- ils étendent les éléments déjà intégrés au navigateur, comme un bouton personnalisé, basé sur `HTMLButtonElement`.
1617

17-
First we'll cover autonomous elements, and then move to customized built-in ones.
18+
<!-- First we'll cover autonomous elements, and then move to customized built-in ones. -->
19+
Nous allons voir les éléments personnalisés autonome dans un premier temps, puis nous passerons aux éléments personnalisés déjà intégrés au navigateur.
1820

19-
To create a custom element, we need to tell the browser several details about it: how to show it, what to do when the element is added or removed to page, etc.
21+
<!-- To create a custom element, we need to tell the browser several details about it: how to show it, what to do when the element is added or removed to page, etc. -->
22+
Pour créer un élément personnalisé, nous allons devoir donner quelques détails au navigateur : Comment le montrer, que faire lorsque cet élément est chargé dans le DOM, ect...
2023

21-
That's done by making a class with special methods. That's easy, as there are only few methods, and all of them are optional.
24+
<!-- That's done by making a class with special methods. That's easy, as there are only few methods, and all of them are optional. -->
25+
C'est possible en créant une classe avec des méthodes spéciales. C'est facile, sachant qu'il n'y seulement que quelques méthodes, et elles sont toutes optionnelles.
2226

23-
Here's a sketch with the full list:
27+
<!-- Here's a sketch with the full list: -->
28+
Voici la classe et toute ses méthodes :
2429

2530
```js
2631
class MyElement extends HTMLElement {
2732
constructor() {
2833
super();
29-
// element created
34+
// créer l'élément
3035
}
3136

3237
connectedCallback() {
33-
// browser calls this method when the element is added to the document
34-
// (can be called many times if an element is repeatedly added/removed)
38+
// le navigateur appelle cette méthode lorsque l'élément est ajouté au document
39+
// elle peut-être appelé autant de fois que lélément est ajouté ou supprimé)
3540
}
3641

3742
disconnectedCallback() {
38-
// browser calls this method when the element is removed from the document
39-
// (can be called many times if an element is repeatedly added/removed)
43+
// le navigateur appelle cette méthode lorsque l'élément est supprimé du document
44+
// elle peut-être appelé autant de fois que lélément est ajouté ou supprimé)
4045
}
4146

4247
static get observedAttributes() {
43-
return [/* array of attribute names to monitor for changes */];
48+
return [/* tableau listant les attributs dont les changements sont à surveiller */];
4449
}
4550

4651
attributeChangedCallback(name, oldValue, newValue) {
47-
// called when one of attributes listed above is modified
52+
// appelé lorsque l'un des attributs listé par la méthode ci-dessus est modifié
4853
}
4954

5055
adoptedCallback() {
51-
// called when the element is moved to a new document
52-
// (happens in document.adoptNode, very rarely used)
56+
// méthode appelé lorsque l'élément est envoyé vers un nouveau document
57+
// (utilisé très rarement avec document.adoptNode)
5358
}
5459

55-
// there can be other element methods and properties
60+
// vous pouvez ajouter d'autres méthodes ou propriétées
5661
}
5762
```
5863

59-
After that, we need to register the element:
64+
<!-- After that, we need to register the element: -->
65+
Après ça, nous devons enregistrer cet élément :
6066

6167
```js
6268
// let the browser know that <my-element> is served by our new class

0 commit comments

Comments
 (0)