Pourquoi les lignes dans application.js semblent-elles être commentées?
Je vois des tutoriels avec des directives pour ajouter des lignes de code au fichier application.js , mais les lignes ajoutées semblent être commentées.
Un exemple de base ici
Voici à quoi ressemble mon fichier (les lignes que j'ai ajoutées semblent être des commentaires):
Je soupçonne que = peut annuler le commentaire, mais dans toutes les langues que je connais, une fois qu'un commentaire est déclaré, cette ligne est considérée comme un commentaire, peu importe ce qui se trouve sur le reste ça
3 Réponses :
Pas toujours, par exemple en PHP, vous avez des commentaires d'annotation: https: / /php-annotations.readthedocs.io/en/latest/UsingAnnotations.html
Dans JS, lorsque vous utilisez flow, vous ajoutez un commentaire en haut du fichier, comme ceci:
// @flow [file content]
C'est en fait un modèle courant
sprockets utilise ce type de commentaire // = require xx
pour la génération d'actifs de l'utilisateur final comme ils l'appellent.
Ce n'est pas lié à la langue, mais plutôt à quelque chose que cet outil fait.
Cela s'appelle une annotation
La raison pour laquelle ce modèle est très populaire est qu'il n'affecte en aucune façon le code réel.
À la fin de la journée, il s'agit uniquement de collecter tous les fichiers, de les compresser et de les servir à l'utilisateur et de ne rien changer réellement au code.
c'est peut-être une question idiote, mais pourquoi les pignons utilisent-ils cette convention? (par opposition aux lignes de code non commentées)
Depuis pignons :
Les directives sont des commentaires spéciaux dans votre fichier d'asset et la principale manière de interagir avec les processeurs. Quel genre d'interactions? Vous pouvez utiliser ces directives pour dire à Sprockets de charger d'autres fichiers, ou spécifier dépendances avec d'autres éléments.
Par exemple, disons que vous avez un JavaScript personnalisé que vous écrit. Vous mettez ce javascript dans un fichier appelé
beta.js. le javascript fait un usage intensif de jQuery, vous devez donc le charger avant votre code s'exécute. Vous pouvez ajouter une directiverequireen haut debeta.js:# Single-line comment blocks (CoffeeScript) #= require fooLe processeur de directive comprend les blocs de commentaires dans trois formats:
// Single-line comment blocks (SCSS, JavaScript) //= require foo
/* Multi-line comment blocks (CSS, SCSS, JavaScript) *= require foo */
//= require jquery $().ready({ // my custom code here })Remarque: les directives ne sont traitées que si elles précèdent un code d'application. Une fois que vous avez une ligne qui n'inclut pas de commentaire ou un espace blanc, Sprockets arrêtera de rechercher des directives. Si vous utiliser une directive en dehors de l '"en-tête" du document, il ne le fera pas quoi que ce soit, et ne soulèvera aucune erreur.
Voici une liste des directives disponibles:
require- Ajoute le contenu d'un fichier à l'actuelrequire_self- Modifier l'ordre de concaténation du contenu actuel au courantrequire_directory- Ajouter le contenu de chaque fichier dans un dossier au courantrequire_tree- Ajouter le contenu de tous les fichiers dans tous les répertoires dans un chemin vers le courantlink- Rendre le fichier cible compilé et accessible au public sans ajouter de contenu à l'actuellink_directory- Rendre le répertoire cible compilé et accessible au public sans ajouter de contenu à l'actuellink_tree- Rendre l'arborescence cible compiler et être accessible au public sans ajouter de contenu à l'actueldepend_on- Recompilez le fichier actuel si la cible a changéstub- Ignorer le fichier cible
=n'annulerait pas le commentaire. Cependant, il peut y avoir un outil standard qui analyse les commentaires et recherche cela pour faire quelque chose. Vous pouvez le voir avec JSDoc (par exemple,@return a user namedocumentera ce qu'un fonction renvoie) ou métadonnées userscript .