Les fonctions d'importation à partir d'un autre fichier js. Javascript
J'ai une question sur le fait d'inclure un fichier javascript.
J'ai un exemple très simple:
--> index.html
--> models
--> course.js
--> student.js
course.js:
function Course() {
this.id = '';
this.name = '';
}
Un étudiant à un cours de propriété. comme ceci:
import './course';
function Student() {
this.firstName = '';
this.lastName = '';
this.course = new Course();
}
et la index.html c'est comme:
<html>
<head>
<script src="./models/student.js" type="text/javascript"></script>
</head>
<body>
<div id="myDiv">
</div>
<script>
window.onload= function() {
var x = new Student();
x.course.id = 1;
document.getElementById('myDiv').innerHTML = x.course.id;
}
</script>
</body>
</html>
Mais j'obtiens une erreur sur la ligne "var x = new Etudiant();":
Étudiant n'est pas défini
Quand j'enlève les importer à partir d'Étudiant, je ne reçois pas d'erreur de plus.
J'ai essayé de l'utiliser (au besoin, d'importer, de comprendre, de créer une fonction personnalisée, à l'exportation) et aucun n'a fonctionné pour moi.
Quelqu'un sait pourquoi? et comment le corriger?
P. S. le chemin d'accès est correct, il s'agit de la saisie semi-automatique dans VS Code
- Peut-je faire un lien vers les docs pour le moment: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
- Je ne pense pas qu'il a un problème avec les importations, il a un problème avec l'environnement qu'il essaie de l'exécuter dans. Les navigateurs ne gèrent pas l'importation par défaut.
- Avez-vous regarder dans le navigateur de l'F12 outils de dev de la fenêtre?
- Les navigateurs ne les supporte pas et pourtant. Peut-être dans l'avenir. Suivez ce lien pour plus d'info oreilly.com/learning/...
- himm, je vais étudier ça.
- Aussi ceci: jakearchibald.com/2017/es-modules-in-browsers
- J'ai essayé ces solutions, et aucun d'eux n'a fonctionné pour moi!
- Avez-vous manqué ma réponse? Ma solution fonctionne sur Firefox, même dans le
file:///
de l'environnement. - Cet article est périmé. Vous pouvez maintenant utiliser ES6 modules dans les navigateurs, il suffit juste d'utiliser le "module" de type.
- Les gars, vous ne voyez pas la réponse que je leur ai fournis? Il est entièrement testé, code de travail.
Vous devez vous connecter pour publier un commentaire.
La suivante fonctionne pour moi sous Firefox et Chrome. Dans Firefox, il fonctionne même à partir de
file:///
1
, il a travaillé. L'exception n'est pas liée et causé par votre ne pas avoir<meta charset="utf-8">
dans votre<head>
.dom.moduleScripts.enabled
dans about:config, comme il est dit dans l'article. Dans google Chrome, il fonctionne hors de la boîte. Les tests Bord droit maintenant. ... Hé oui, fonctionne très bien à Bord. Juste pour être clair, c'est une page blanche avec un petit1
dans le coin supérieur gauche.models_inlcude.js
dansmodels
dossier. Le fichier des importations de tous les modèles nécessaires et en fichier HTML seulement ajouter de la<script type="module" language="javascript" src="models/models_inlcude.js"></script>
dans<head>
tag. À l'aide de cette façon, vous éviter d'ajouter de code de script dans votre code HTMLPar défaut, les scripts ne peuvent pas gérer les importations comme ça directement. Vous avez probablement une autre erreur de ne pas pouvoir en obtenir bien Sûr ou non de procéder à l'importation.
Si vous ajoutez
type="module"
à votre<script>
tag, et de modifier l'importation de./course.js
(car les navigateurs ne sera pas auto-ajouter le .js partie), puis le navigateur va tirer vers le bas pour vous, et il va probablement travailler.Si vous servez des fichiers de plus de
file://
, il ne sera probablement pas travailler. Certaines IDEs ont une façon de faire un rapide sever.Vous pouvez également écrire un petit
express
serveur de servir vos fichiers (Nœud installer si vous ne l'avez pas):Avec ces deux fichiers, d'exécuter
npm install
, puisnpm start
et vous aurez un serveur exécutant surhttp://localhost:8000
qui devrait pointer vers vos fichiers.file://
protocole ouhttp://
? Si vous l'exécutez à partir defile://
, vous allez avoir un moment difficile.localhost
. Quelques IDEs de les avoir intégrés. Vous pouvez également écrire un petitexpress
serveur en quelques lignes. Je vais vous donner un exemple, dans ma réponse.Vous pouvez essayer comme suit:
Vous pouvez également importer complètement:
Normalement, nous utilisons des
./fileName.js
pour l'importation proprejs file/module
etfileName.js
est utilisée pour l'importation depackage/library
moduleLorsque vous comprendra l'main.js fichier de votre page web, vous devez définir le type="module" attribut comme suit:
Pour plus de détails, veuillez consulter ES6 modules
//Consommer le module dans calc.js
//Module.html
Ses un modèle de conception même code peut être trouvé ci-dessous, veuillez utiliser un serveur pour le tester autre chose que vous obtiendrez de la SCRO erreur
https://github.com/rohan12patil/JSDesignPatterns/tree/master/Structural%20Patterns/module
À partir d'un rapide coup d'œil sur MDN je pense que vous pourriez avoir besoin d'inclure la
.js
à la fin de votre nom de fichier afin de l'importation lireimport './course.js'
au lieu deimport './course'
Réf.:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import