2
votes

Existe-t-il un moyen d'obtenir 2 contextes javascript complètement isolés dans une même page Web?

Considérez le morceau de code html suivant:

<html>
<head>
<script language="JavaScript1.5">
    // sdk code

    // root_scripts

    // component1 code

    // component2 code
</script>
</head>
<body>
<h2>simple page</h2>
Hi world

<div id="root"></div>

</body>
</html>

Les lignes code composant1 et code composant2 peuvent être soit juste 2 inclus à différents fichiers js, ou vraiment 2 morceaux de code javascript, je m'en fiche.

J'essaie de comprendre combien 2 morceaux de code peuvent être isolés dans la même page. Par exemple, supposons que code composant1 inclut jquery et que code composant2 inclut react js et que les 2 versions spécifiques que j'ai incluses ont des bibliothèques spécifiques. Cela signifie qu'un composant pourrait casser l'autre et qu'ils ne seraient pas complètement isolés.

En supposant que les deux composants devraient accéder aux éléments dom dans ce html (donc iframe ne serait pas vraiment une option, je suppose), existe-t-il un bon moyen de créer un "environnement" de script java complètement isolé pour chaque morceau de code? Comme 2 portées différentes, avec leurs propres importations et elles ne pouvaient pas entrer en conflit les unes avec les autres, mais pouvant toujours faire partie de la même page html?


5 commentaires

Que voulez-vous dire "complètement isolé"? Il n'y a qu'un seul contexte global, donc si vous avez besoin d'isolement, vous devez définir correctement la portée de votre code et ne pas atteindre le contexte global. De plus, sur une note HTML5,

3 Réponses :


0
votes

Je ne connais pas JavaScript, mais vous pouvez le faire avec Angular et Typescript.

Avec Angular 4 et supérieur, vous pouvez avoir des scripts complètement séparés s'exécutant dans différents composants.


2 commentaires

Oui, mais je veux que le composant 1 utilise angular et le composant 2 utilise jquery, par exemple. La partie la plus difficile est les dépendances, le composant 1 pourrait utiliser la version angulaire 123 et le composant 2 pourrait utiliser la version angulaire 234


Problème intéressant!



2
votes

La norme JavaScript de 2015 introduit son propre système de modules différent. Il est généralement appelé modules ES, où ES signifie ECMAScript. Au lieu d'appeler une fonction pour accéder à une dépendance, vous utilisez un mot-clé d'importation spécial.


4 commentaires

Pourriez-vous s'il vous plaît élaborer ou fournir un lien que je pourrais étudier davantage?


Merci! Cela ressemble à ce que je veux, je ne suis pas encore sûr! Je vais l'étudier, merci beaucoup


Je dois encore chercher plus sur la façon d'isoler les parties dom et d'ombrer certaines variables globales, mais ce serait une autre question. Vous avez répondu à ce que je cherchais, merci.


Ouais. il existe également un shadow-dom pour isoler HTML et CSS.



1
votes

Je pense que vous pouvez opter pour un cadre d'application d'une seule page comme angular pour votre solution. En angulaire,

Il vous suffit de créer deux composants différents pour comp1 et comp2 et ils seraient tous deux isolés l'un de l'autre à moins que vous ne les fassiez interagir à l'aide d'un service partagé ou d'interactions parent-enfant.

Modifier: vous pouvez utiliser la fonctionnalité du module de script ECMA pour la même chose.

Voici la référence: https://medium.freecodecamp.org/how-to-use-ecmascript-modules-to-build-modular-components-in-javascript-9023205ea42a

Merci à @behzad


0 commentaires