CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Ma bibliothèque JavaScript - Fenêtres (modals) déplaçables !

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 01:01:10

Bonjour à tous, je suis étudiant en développement informatique et j'ai développé ces derniers mois une bibliothèque JS pour utiliser des fenêtres sur un principe semblable aux fameuses modals, à la différence près que ces fenêtres sont déplaçables. On peut en utiliser autant que l'on souhaite, chacune ouvrable grâce à un bouton, et refermable. Une gestion de la priorité est présente, permettant de passer en premier plan la fenêtre active et en second plan les autres. Je cherche à avoir des avis sur ce petit projet, et des idées d'amélioration !

Merci à tous

https://github.com/GStaehler/Window-Engine

LeDictator
LeDictator
Niveau 10
29 août 2019 à 10:12:24

Pas mal pour un étudiant.
Tu peux essayer de rendre ta libraire utilisable en nodejs (out of the box) avec rollup et de la publier sur npm (ou autre).

Pour la convention, ne nomme jamais un repository avec des majuscules :hap:.

Ta fonction 'windowCreation', devrait s'appeler 'createWindow'.

Fait gaffe à tes noms de classe, comme 'mydivActive' (pas très parlant)
'mydiv' -> 'window'
'mydivActive' -> 'active' (t'aurais donc -> class="window active') tu peux aussi utilisé BOM
Faudrait aussi préfixé t'es nom de classe pour éviter les colisions avec les noms de classes des gens qui vont utiliser ta lib.

Tu as des animations, comme celle d'opacity, faites en js. Même dans ton cas tu pourrais les faire en css (avec les transitions). Tu aura de meilleurs performance :ok:.

Oublie pas de factoriser au maximum ton code.

Je pense que tu peux aussi éviter de créer 1000 listeners au chargement de ton code. Essaie de créer les listeners quand une fenetre est crée :ok:.

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 12:21:03

Merci ! :)

Je penserais à la publier sur npm (chose que je n'ai encore jamais faite donc je vais me renseigner sur le comment du pourquoi) !

Merci beaucoup pour tes conseils, pour les 1000 listeners je n'avais pas réussi à trouver un moyen d'automatiser la fonction pour chaque fenêtre créée, mais je vais continuer à regarder ! Je vais aussi regarder pour faire mes fade en css, je pense que tu as raison :)

Je vais continuer à peaufiner mon petit projet, en espérant que des gens le trouveront utile :merci:

LeDictator
LeDictator
Niveau 10
29 août 2019 à 13:18:39

Je vais te faire une PR pour te montrer, c'est pas compliqué et ca sautera au yeux pour toi après.

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 13:26:47

Par le DOM je pourrais peut être récupérer l'id le plus haut sur les fenêtres dans le html et adapter ma boucle en fonction de cet id? :question:

Par exemple ma dernière fenêtre est <div id="mydiv6" class="mydiv"> donc j'aurais comme boucle en JS :

for (i = 1; i < dernierID; i++) {
windowCreation(i);
}

LeDictator
LeDictator
Niveau 10
29 août 2019 à 14:07:52

Je viens de te faire une PR qui ajoute babel et change tes APIs (windowCreation).
Si y'a quelques choses que tu comprends pas hésite pas à me le demander :hap:.

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:13:36

D'accord je vais regarder ! :ok:

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:21:15

Est ce que ce n'est pas embêtant pour l'utilisateur de faire un npm run build? L'idée que j'avais était de rester dans quelque chose de simple comme avec Bootstrap ou jQuery? :question: En tout cas ça semble propre, je vais créer une nouvelle branche et accepter la PR je pense :bravo:

LeDictator
LeDictator
Niveau 10
29 août 2019 à 14:28:56

Le 29 août 2019 à 14:21:15 thecomposerfr a écrit :
Est ce que ce n'est pas embêtant pour l'utilisateur de faire un npm run build? L'idée que j'avais était de rester dans quelque chose de simple comme avec Bootstrap ou jQuery? :question: En tout cas ça semble propre, je vais créer une nouvelle branche et accepter la PR je pense :bravo:

C'est a toi de faire le 'npm run build' pour mettre à jour le dossier /lib, l'utilisateur a juste à prendre ce qu'il y a dans lib pour utiliser ta library.

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:31:57

Oh d'accord je n'avais pas compris ça comme ça ! Je ne prétends pas du tout être un expert :honte:

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:33:22

Et est-ce que mon CDN maison est toujours valable après les modifs?

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:36:03

J'ai une erreur après le run build :) :

'babel' n'est pas reconnu en tant que commande interne
ou externe, un programme ex▒cutable ou un fichier de commandes.
npm ERR! code ELIFECYCLE
npm ERR! errno 1

LeDictator
LeDictator
Niveau 10
29 août 2019 à 14:37:19

Le 29 août 2019 à 14:36:03 thecomposerfr a écrit :
J'ai une erreur après le run build :) :

'babel' n'est pas reconnu en tant que commande interne
ou externe, un programme ex▒cutable ou un fichier de commandes.
npm ERR! code ELIFECYCLE
npm ERR! errno 1

My bad, faut que tu fasse 'npm install' en premier lieu, pour installer les modules 'babel'.

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:42:13

Ok ça fonctionne, j'ai par contre perdu un peu de css, il faut que je vois ça :)

LeDictator
LeDictator
Niveau 10
29 août 2019 à 14:44:22

Je crois pas en avoir retiré.
Tu peux voire la différence entre ma branche et ta branche ici: https://github.com/GStaehler/Window-Engine/commit/a51cc912c76f39d7b56497332b65c0dca6d13515

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:47:02

J'ai trouvé, c'était le fait de faire passer les closeButtons d'id à classe, alors que dans le css, le style est encore appliqué à l'id !

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 14:49:43

L'idée si j'ai bien compris, c'est de travailler dans src et de builder pour mettre à jour lib avec les changements? :bravo:

Edit : Franchement c'est parfait comme ça, merci beaucoup, ça va me simplifier beaucoup le développement ! Est ce que ce serait intéressant de créer une branche en enlevant src, package.json et .babelrc pour un simple utilisateur?

Message édité le 29 août 2019 à 14:54:13 par thecomposerfr
LeDictator
LeDictator
Niveau 10
29 août 2019 à 15:02:30

Le 29 août 2019 à 14:49:43 thecomposerfr a écrit :
L'idée si j'ai bien compris, c'est de travailler dans src et de builder pour mettre à jour lib avec les changements? :bravo:

Edit : Franchement c'est parfait comme ça, merci beaucoup, ça va me simplifier beaucoup le développement ! Est ce que ce serait intéressant de créer une branche en enlevant src, package.json et .babelrc pour un simple utilisateur?

Pour l'utilisateur basique tu peux utiliser github page, comme tu l'as fait pour mettre en ligne ton exemple :hap:.
De rien sinon, tu peux me MP (je risque de checker ce topic indéfiniment).

Bonne chance pour la suite de ton apprentisage, c'est long mais ça en vaut la peine :hap:.

thecomposerfr
thecomposerfr
Niveau 6
29 août 2019 à 15:08:07

Ok super !
Oui si j'ai d'autres questions je te MP ! :rire:

Je n'avais jamais utilisé Babel, et j'utilise assez peu de dépendances généralement, mais il faut bien apprendre :-)

En tout cas c'est cool que mon JS se minify tout seul maintenant :rire2:

Merci encore pour ton aide :merci:

dark_drow
dark_drow
Niveau 15
30 août 2019 à 22:11:29

Copyright Gauthier Staehler

C'est quoi ca ? :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment