2012-07-19 6 views
0

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:

  1. 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.

  2. Existe-t-il un meilleur moyen de structurer le code?

  3. 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(); 
    } 
    

Répondre

0

Pour l'optimisation des performances que je suis en utilisant un seul fichier JavaScript pour gérer toutes les pages du site que je travaille sur

Cela n'a pas de sens. Vous devez séparer le code en fichiers, puis exécuter tous vos fichiers js à travers un minimizer/concatenator pour l'empaqueter.

Quoi qu'il en soit, pour répondre à vos questions,

  1. si vous n'allez avoir 1, alors prototype ne vous acheter quoi que ce soit. Cependant, si vous allez utiliser plus de 1, y retourneriez-vous et le changeriez-vous? De plus, l'utilisation d'un prototype ne vous nuira pas non plus, alors vous feriez mieux de le faire pour apprendre.
  2. Vous devez créer les fichiers qui ont du sens en fonction des fonctionnalités implémentées. Je voudrais séparer votre définition d'objet dans son propre fichier, par exemple, donc quand vous regardez ce fichier, tout ce que vous voyez est le code pour cet objet.
  3. Si vous avez une fonction constructeur, vous n'avez pas vraiment besoin d'init, n'est-ce pas?
+0

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. –

Questions connexes