Quelle est la convention de dénomination du nom de fichier javascript? [fermé]

283

Les fichiers doivent-ils être nommés quelque chose avec des hyphens.js, camelCased.js ou autre chose?

Je n'ai pas trouvé la réponse à cette question ici .

ripper234
la source
2
Une bonne convention de dénomination consiste à nommer les noms de fichiers tels que vous verriez cette entité dans le code. La MyPluginclasse entrait MyPlugin.js. Le MenuItemcomposant React entrera MenuItem.js. D'autres développeurs nécessiteront / importeront «votre-module-cool» et en utiliseront plusieurs symboles, alors nommez-le cool-module.js. -
Dan Dascalescu
1
Ce message n'est pas basé sur des options. En fait, c'est important. Ici, vous avez un guide créé par Google - google.github.io/styleguide/jsguide.html#file-name . (Google JavaScript Style Guide)
zwitterion

Réponses:

184

Une convention de dénomination possible consiste à utiliser quelque chose de similaire au schéma de dénomination utilisé par jQuery. Ce n'est pas universellement adopté mais c'est assez courant.

product-name.plugin-ver.sion.filetype.js

où la paire product-name+ pluginpeut également représenter un espace de noms et un module . Les versionet filetypesont généralement facultatifs.

filetypepeut être quelque chose par rapport à la façon dont le contenu du fichier est. On voit souvent:

  • min pour les fichiers minifiés
  • custom pour les fichiers personnalisés ou modifiés

Exemples:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • myapp.invoice.js
Bryan Menard
la source
31
Je suis d'accord sur ce que vous avez dit. Mais il y a une chose avec laquelle je me bats actuellement: et si le «plugin» contient deux mots? Les séparer par points? jquery.myPlugin-1.0.0.js ou jquery.my.plugin-1.0.0.js ou jquery.my_plugin-1.0.0.js ou jquery.myplugin-1.0.0.js ou peut-être même jquery.my-plugin- 1.0.0.js? Vous pouvez peut-être compléter vos exemples avec ça, merci!
2012 à 13h21
4
Qu'en est-il des modules AMD ? Si vous utilisez la version dans les noms de fichiers, vous devez modifier un grand nombre de fichiers si le numéro de version change.
knut
3
@junior, il s'agit d'un ancien article, mais une recherche rapide sur Bower révèle que les plugins jquery ne suivent aucune convention particulière. Il semble que (1) pousser les mots ensemble, (2) en utilisant la colonne vertébrale et (3) en utilisant camelCase sont tous utilisés avec une fréquence à peu près équivalente.
bholben
Sans oublier que certains systèmes de gestion de versions et de fichiers ont des problèmes pour reconnaître la différence entre un mot en minuscule et le même mot non supérieur ou camelCase (par exemple: "ThisWord" est le même que "thisword" dans certains environnements). Quelque chose à garder à l'esprit lors de l'utilisation de la convention camelCase.
amypellegrini
@knut, vous ne devez pas charger via les noms de version, mais mapper le nom du module à un fichier de version spécifique.
dalore
132

Je ne connais aucune convention particulière pour les fichiers javascript car ils ne sont pas vraiment uniques sur le Web par rapport aux fichiers CSS ou HTML, ou à tout autre type de fichier comme celui-ci. Il y a certaines choses "sûres" que vous pouvez faire qui rendent moins probable que vous rencontriez accidentellement un problème multiplateforme:

  1. Utilisez tous les noms de fichiers en minuscules. Certains systèmes d'exploitation ne respectent pas la casse pour les noms de fichiers et l'utilisation de minuscules empêche d'utiliser par inadvertance deux fichiers qui diffèrent uniquement au cas où cela ne fonctionnerait pas sur certains systèmes d'exploitation.
  2. N'utilisez pas d'espaces dans le nom de fichier. Bien que cela puisse techniquement fonctionner, il existe de nombreuses raisons pour lesquelles les espaces dans les noms de fichiers peuvent entraîner des problèmes.
  3. Un tiret est OK pour un séparateur de mots. Si vous souhaitez utiliser une sorte de séparateur pour plusieurs mots au lieu d'un espace ou d'un chameau comme dans various-scripts.js, un trait d'union est un séparateur sûr et utile et couramment utilisé.
  4. Pensez à utiliser des numéros de version dans vos noms de fichiers. Lorsque vous souhaitez mettre à niveau vos scripts, planifiez les effets du navigateur ou de la mise en cache CDN. Le moyen le plus simple d'utiliser la mise en cache à long terme (pour la vitesse et l'efficacité), mais des mises à niveau immédiates et sûres lorsque vous mettez à niveau un fichier JS est d'inclure un numéro de version dans le nom de fichier ou le chemin déployé (comme jQuery le fait avec jquery-1.6.2.js ), puis vous modifiez / modifiez ce numéro de version chaque fois que vous mettez à niveau / modifiez le fichier. Cela garantira qu'aucune page qui demande la version la plus récente ne reçoit jamais l'ancienne version à partir d'un cache.
jfriend00
la source
56

Il n'y a pas de convention officielle et universelle pour nommer les fichiers JavaScript.

Il existe différentes options:

  • scriptName.js
  • script-name.js
  • script_name.js

sont toutes des conventions de dénomination valides, mais je préfère la convention de dénomination suggérée par jQuery (pour les plugins jQuery, bien que cela fonctionne pour n'importe quel JS)

  • jquery.pluginname.js

La beauté de cette convention de dénomination est qu'elle décrit explicitement la pollution globale de l'espace de noms ajoutée.

  • foo.js ajoute window.foo
  • foo.bar.js ajoute window.foo.bar

Parce que j'ai omis le contrôle de version: il devrait venir après le nom complet, de préférence séparé par un trait d'union, avec des points entre les versions majeures et mineures:

  • foo-1.2.1.js
  • foo-1.2.2.js
  • ...
  • foo-2.1.24.js
zzzzBov
la source
10
+1 pour The beauty to this naming convention is that it explicitly describes the global namespace pollution being added., jamais remarqué
Adrien Be
2
Ma seule question est de savoir quoi faire si vous avez un fichier qui crée Fooou myFoo, nommeriez-vous simplement le fichier Foo.jsou myFoo.jsrespectivement?
point
14

La question dans le lien que vous avez donné parle de la dénomination des variables JavaScript, pas de la dénomination des fichiers, alors oubliez cela pour le contexte dans lequel vous posez votre question.

Quant à la dénomination des fichiers, c'est uniquement une question de préférence et de goût. Je préfère nommer les fichiers avec des traits d'union, car je n'ai pas à chercher la touche Maj, comme je le fais lorsque je traite des noms de fichiers camelCase; et parce que je n'ai pas à me soucier des différences entre les noms de fichiers Windows et Linux (les noms de fichiers Windows ne respectent pas la casse, au moins via XP).

Ainsi, la réponse, comme tant d'autres, est «cela dépend» ou «c'est à vous de décider».

La seule règle que vous devez suivre est d'être cohérent dans la convention que vous choisissez.

Pete Wilson
la source
6
+1 pour le trait d'union contre le raisonnement camelCase.
cellepo
6

Je préfère généralement les tirets avec des minuscules, mais une chose non encore mentionnée est que parfois il est agréable d'avoir le nom de fichier correspondant exactement au nom d'un module unique ou d'une fonction instanciable contenue à l'intérieur.

Par exemple, j'ai un module révélateur déclaré avec var knockoutUtilityModule = function() {...}dans son propre fichier nommé knockoutUtilityModule.js, bien que je préfère objectivement knockout-utility-module.js.

De même, comme j'utilise un mécanisme de regroupement pour combiner des scripts, j'ai pris la définition de fonctions instanciables (modèles de vue modèles, etc.) chacune dans leur propre fichier, de style C #, pour la maintenabilité. Par exemple, ProductDescriptorViewModel vit seul à l'intérieur de ProductDescriptorViewModel.js (j'utilise des majuscules pour les fonctions instanciables).

Tom W Hall
la source