Dans Rails 3.1, où placez-vous votre code JavaScript « spécifique à une page » ?
Question :
Dans Rails 3.1, lorsque tout le JavaScript est fusionné en un seul fichier en raison de //= require_tree ., comment pouvez-vous inclure du code JavaScript spécifique à une page sans qu'il ne s'exécute sur toutes les pages ? Est-il possible d'empêcher les conflits de code et d'éviter l'utilisation de balises de script manuelles ?
Réponse :
JavaScript spécifique au contrôleur :
Rails fournit une solution à cela via des fichiers d'actifs spécifiques au contrôleur. Par exemple, un ProjectsController aura les fichiers d'actifs correspondants dans :
Tout code JavaScript ou CSS unique pour ce contrôleur peut être placé dans ces fichiers. Ensuite, incluez-les uniquement lorsque cela est nécessaire avec :
<%= javascript_include_tag params[:controller] %> <%= stylesheet_link_tag params[:controller] %>
Encapsulation des fonctionnalités dans les divisions :
Une approche alternative consiste à envelopper les fonctionnalités dans des balises div avec des identifiants ou des classes uniques. . Le code JavaScript peut vérifier la présence de ces éléments et s'exécuter en conséquence, garantissant qu'il ne s'exécute que sur les pages prévues. Cela permet d'utiliser du code JavaScript modulaire qui peut être inclus de manière sélective en fonction du contenu de la page.
Éviter les conflits de code :
En utilisant des préfixes d'espace de noms ou des modèles de module, des conflits de code peuvent être évité. Par exemple, le code d'une page spécifique pourrait être enveloppé dans :
(function() { var PageSpecificCode = {}; // ... })();
Élimination des balises de script manuelles :
Avec les approches ci-dessus, le besoin de balises de script manuelles sur des pages individuelles est éliminé. Le code JavaScript peut être centralisé et géré via le fichier manifeste application.js et les fichiers d'actifs spécifiques au contrôleur, offrant ainsi une organisation du code plus propre et plus efficace.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!