Est-il possible d'utiliser une variable dans un fichier appelé first.js
dans un autre fichier appelé second.js
?
first.js
contient une variable appelée colorcodes
.
Comme l'a dit Fermin, une variable de la portée globale devrait être accessible à tous les scripts chargés après sa déclaration. Vous pouvez également utiliser une propriété de window
ou (dans la portée globale) this
pour obtenir le même effet.
// first.js
var colorCodes = {
back : "#fff",
front : "#888",
side : "#369"
};
... dans un autre fichier ...
// second.js
alert (colorCodes.back); // alerts `#fff`
... dans votre fichier html ...
<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
Vous pouvez exporter la variable du premier fichier en utilisant export .
//first.js
const colorCode = {
black: "#000",
white: "#fff"
};
export { colorCode };
Ensuite, importez la variable dans le deuxième fichier en utilisant import .
//second.js
import { colorCode } from './first.js'
Cela devrait fonctionner - définissez une variable globale dans firstfile et accédez-y à partir de secondfile:
<script src="/firstfile.js"></script>
<script src="/secondfile.js"></script>
firstfile.js:
var colors = {
text:'#000000',
background:'#aaaaaa',
something_else:'blue'
};
secondfile.js:
do_something_with(colors.background);
Notez que l'ordre dans lequel vous chargez les fichiers de script est important pour certains navigateurs (IE6 bien sûr, peut-être d'autres)
J'ai aimé ce que réponse ci-dessus mais bien que cela n'ait pas fonctionné avec moi
parce que j'étais declaring
ces variables inside
JQuery $( document ).ready()
alors assurez-vous de déclarer vos variables à l'intérieur de la balise
<script>
pas ailleurs
Je suis tombé sur amplify.js . C'est vraiment simple à utiliser. Pour stocker une valeur, appelons-la "myValue", vous faites:
amplify.store("myKey", "myValue")
Et pour y accéder, vous faites
amplify.store("myKey")
Si vous stockez vos codes de couleur dans une variable globale, vous devriez pouvoir y accéder à partir d'un autre fichier javascript.
Je peux le faire un peu différemment. Je ne suis pas sûr de savoir pourquoi j'utilise cette syntaxe, copiée depuis un livre il y a longtemps. Mais chacun de mes fichiers js définit une variable. Le premier fichier, sans aucune raison, s'appelle R:
var R =
{
somevar: 0,
othervar: -1,
init: function() {
...
} // end init function
somefunction: function(somearg) {
...
} // end somefunction
...
}; // end variable R definition
$( window ).load(function() {
R.init();
})
Et puis si j'ai un gros morceau de code que je veux séparer, je le mets dans un fichier séparé et un nom de variable différent, mais je peux toujours faire référence aux variables et fonctions R. J'ai appelé le nouveau TD sans raison valable:
var TD =
{
xvar: 0,
yvar: -1,
init: function() {
...
} // end init function
sepfunction: function() {
...
R.somefunction(xvar);
...
} // end somefunction
...
}; // end variable TD definition
$( window ).load(function() {
TD.init();
})
Vous pouvez voir que, dans la TD 'fonction', j'appelle la fonction R.. Je me rends compte que cela ne donne aucune efficacité d'exécution car les deux scripts doivent être chargés, mais cela m'aide à garder mon code organisé.
En utilisant Node.js, vous pouvez exporter la variable via le module.
//first.js
const colorCode = {
black: "#000",
white: "#fff"
};
module.exports = { colorCode };
Ensuite, importez le module/la variable dans le deuxième fichier en utilisant require.
//second.js
const { colorCode } = require('./first.js')
Vous pouvez utiliser les approches import
et export
d'ES6 à l'aide de Webpack/Babel, mais vous devez utiliser Node.js activer un indicateur et utiliser le fichier .mjs extension.
Un meilleur moyen est d’utiliser window .INITIAL_STATE
<script src="/firstfile.js">
// first.js
window.__INITIAL_STATE__ = {
back : "#fff",
front : "#888",
side : "#369"
};
</script>
<script src="/secondfile.js">
//second.js
console.log(window.__INITIAL_STATE__)
alert (window.__INITIAL_STATE__);
</script>