Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add rule about moment #437

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ Pour simplifier vos recherches, n'oubliez pas d’utiliser les filtres disponibl
* [Utiliser le rechargement partiel d'une zone de contenu](/chapters/BP_038_fr.md)
* [Éviter les animations JavaScript / CSS](/chapters/BP_039_fr.md)
* [N'utilisez que les portions indispensables des librairies JavaScript et frameworks CSS](/chapters/BP_040_fr.md)
* [Utilisez des alternatives à Moment.js pour la gestion des dates](/chapters/BP_040_1_fr.md)
* [Ne pas faire de modification du DOM lorsqu’on le traverse](/chapters/BP_041_fr.md)
* [Rendre les éléments du DOM invisibles lors de leur modification](/chapters/BP_042_fr.md)
* [Réduire au maximum le repaint (appearence) et le reflow (layout)](/chapters/BP_043_fr.md)
Expand Down
36 changes: 36 additions & 0 deletions chapters/BP_040_1_fr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
## NUtilisez des alternatives à Moment.js pour la gestion des dates

### Description

Moment.js est une librairie très connue pour la manipulation de dates en JavaScript. Mais avant de l'ajouter à notre application, nous devons avoir connaissance de certains problèmes liés à cette librairie :

* Elle est tout d'abord plus maintenue.
* Lorsque nous l'importons dans un projet (sauf pour les projet React.js pour lesquels il y a une configuration particulière qui a été définie), Moment.js importe automatiquement les configurations de toutes les langues du monde (et donc celles que nous n'utilisons pas). Cela allourdit très lourdement le poid de la page visitée.

Nous conseillons d'utiliser des librairies plus légères comme **date-fns** ou encore **day.js**.

### Exemple

Dans l'exemple ci-dessous, nous pouvons voir par exemple comment migrer du code JavaScript dans lequel nous formattons une date.

Voici le code avec **Moment.js** :

```javascript
import moment from 'moment';

moment(new Date()).format('DD-MM-YYYY');
```

Voici le code avec **date-fns**

```javascript
import { format } from 'date-fns':

format(new Date(), "dd-MM-yyyy");
```

### Principe de validation

| Le nombre ... | est inférieur ou égal à |
|-------------------|:-------------------------:|
| d'imports de la librairie Moment.js dans le projet | 0 |