Pour optimiser les performances, j'utilise un seul fichier JavaScript pour gérer toutes les pages du site Web sur lequel je travaille. La structure de base que je utilise est comme suit:Utilisation du prototype pour les fonctions d'instance unique en JavaScript
(function($) {
// Shared functions ...
// A function for every page
function Page1() {
}
Page1.prototype = {
init: function() {
//...
},
//more functions
};
// more pages
$(document).ready(function() {
if ($('#page1uniqueidentifier').length) {
var page1 = new Page1();
page1.init();
}
// more pages
}
}) (jQuery);
Je ne suis pas un programmeur expérimenté JavaScript donc j'ai cherché beaucoup sur les meilleures pratiques et les différentes façons de structurer mon code et j'ai fini en choisissant celui-ci mais je ne suis pas vraiment sûr à ce sujet et j'ai quelques questions:
Est-il utile d'utiliser prototype si je ne vais jamais avoir plus d'une seule instance d'une page? Je pense que je comprends comment fonctionne un prototype et que je n'y gagne aucune performance. Mais je l'utilise comme une bonne pratique parce que dans le cas où différentes instances existeraient, ces fonctions seraient les mêmes dans tous les cas.
Existe-t-il un meilleur moyen de structurer le code?
Dois-je mettre l'appel de la fonction init à l'intérieur du constructeur, puis seulement appeler new Page1()?
function Page1() { this.init(); } if ($('#page1uniqueidentifier').length) { new Page1(); }
Eh bien, merci de votre réponse. À propos de l'utilisation d'un seul fichier, ce n'est pas exactement comme cela est fait parce que nous avons des fichiers séparés pour les scripts externes et pour différents modules. Mais nous traitons tout le code personnalisé avec un fichier pour chaque module de site Web pouvant contenir plusieurs pages. Quoi qu'il en soit, même si je sépare le code dans des fichiers différents et que je le concatène plus tard, je devrais contrôler que le code Page2 n'est pas exécuté à la page 1, n'est-ce pas? A propos de la fonction constructeur, comme le code d'initialisation est souvent assez étendu, je l'ai mis à l'intérieur du prototype afin qu'il ne soit pas dupliqué pour chaque instance. –