IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Les modules ES6 ?


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut Les modules ES6 ?
    Salut,

    J'ai voulu essayer les fameux modules ES6 (avec chrome 64) mais ce fut sans succès...

    Pourtant j'ai cru comprendre que chrome gérait les modules ES depuis la version 61...

    Mais après quelques tests je me demande s'il ne faut pas utiliser un serveur ? C'est-à-dire que cela ne fonctionne pas en local ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Comment as-tu réalisé l'import de ton source dans Chrome ?

    As-tu bien utilisé le type module de cette manière <script type="module" src="module.js"></script> ?

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Oui j'ai essayé de reproduire le premier exemple du site : https://jakearchibald.com/2017/es-modules-in-browsers comme ceci :

    Dans un fichier html :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <!DOCTYPE html>
    <html>
     
    <head>
        <meta charset="UTF-8">
        <title>ECMAScript modules in browsers</title>
        <link rel="stylesheet" href="./../../style.css">
        <script type="module" src="index.js"></script>
    </head>
     
    <body>
    </body>
     
    </html>

    Le fichier index.js :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import {addTextToBody} from './utils.js';
     
    addTextToBody('Modules are pretty cool.');

    Le fichier utils.js :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    export function addTextToBody(text) {
        const div = document.createElement('div');
        div.textContent = text;
        document.body.appendChild(div);
    }

    Et alors je lance chrome (en enlevant la sécurité) et il me dit ceci :

    Failed to load module script: The server responded with a non-JavaScript MIME type of "". Strict MIME type checking is enforced for module scripts per HTML spec.

    index.js:1

    J'ai vu en faisant une recherche que je n'étais pas le seul à avoir ce problème...

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ah j'ai essayé avec l'IDE Cloud9 et ça marche !

    Est-ce parce qu'il faut un serveur ?

  5. #5
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Est-ce parce qu'il faut un serveur ?
    Pour servir un site web c'est mieux !

  6. #6
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    J'ai utilisé ton code tel quel et ça marche très bien.

    J'ai simplement ajouté http-server à un package.json :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {
      "name": "ES6-browser",
      "scripts": {
        "start": "http-server -c-1"
      },
      "devDependencies": {
        "http-server": "^0.11.1"
      }
    }
    Mon chrome est en version 65.

    Quel serveur web utilises-tu ?

    Et alors je lance chrome (en enlevant la sécurité)
    Quelle sécurité ? Pourquoi ?

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ben justement au début je n'utilisais pas de serveur d'où ma question : "Mais après quelques tests je me demande si il ne faut pas utiliser un serveur ? C'est-à-dire que cela ne fonctionne pas en local ?"


    Je croyais qu'on pouvait utiliser les modules ES en local (tous les fichiers dans un répertoire du disque dur) sans serveur comme les codes classiques quoi mais apparemment ce n'est pas possible, c'est ça ?

  8. #8
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    Je croyais qu'on pouvait utiliser les modules ES en local (tous les fichiers dans un répertoire du disque dur) sans serveur comme les codes classiques quoi mais apparemment ce n'est pas possible, c'est ça ?
    Apparemment si j'en crois le message d'erreur ce n'est pas possible.

    Pour le coup de la security tu as désactivé CORS c'est ça ? C'est mal.

    En fait je ne comprends pas pourquoi tu t'acharnes avoir lancer une appli web sans serveur web pour la servir, ça n'a pas de sens.

  9. #9
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Exemple utilisant un module et des Class avec des propriétés "privées" (module) et protégées (get, set).


    Nota bene pour les utilisateurs de Firefox

    J'ai adopté les modules ES2015 partout, c'est tellement pratique, mais Firefox est en retard par rapport à Chrome et Edge, voir Can I use module : https://caniuse.com/#search=module.
    La sortie de Firefox 60 (normal) est prévue pour le 2018-05-09 (https://wiki.mozilla.org/RapidRelease/Calendar)

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  10. #10
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Merci.
    C'est un exemple instructif.

    Je vois que tu utilises deux class, c'est intéressant...

    Tu utilises les WeakMap pour avoir des variables privées (kNom, kPrix) ?

    Mais les autres (kNomType, kPrixType,...) sont aussi privées en quelque sorte puisqu'elles sont dans un module et tout ce qui n'est pas exporté n'est pas accessible depuis l'extérieur du module, non ?

    ---> Là ça marche car tes fichiers sont dans un serveur mais en local je suppose que cela ne fonctionnerait pas ?


    PS : J'ai aussi regardé cet exemple : https://danielhagnoul.developpez.com/Site/QR20180329-1/

Discussions similaires

  1. Les modules ES6 / Veille technologique
    Par Paleo dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 30/12/2015, 16h29
  2. Réponses: 9
    Dernier message: 06/06/2006, 22h05
  3. Decompression d'un fichier sans utiliser les modules du CPAN
    Par choubiroute dans le forum Modules
    Réponses: 6
    Dernier message: 10/03/2006, 14h20
  4. Démarche pour installer les modules sans executable...
    Par Olivier_ dans le forum Déploiement/Installation
    Réponses: 7
    Dernier message: 21/10/2005, 17h50
  5. lister tout les modules installer de perl
    Par black_code dans le forum Modules
    Réponses: 6
    Dernier message: 05/08/2005, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo