Qual é a convenção de nomenclatura de nome de arquivo javascript? [fechadas]

283

Os arquivos devem ser nomeados algo-com-hyphens.js, camelCased.js ou algo mais?

Não encontrei a resposta para esta pergunta aqui .

ripper234
fonte
2
Uma boa convenção de nomenclatura é nomear nomes de arquivos como você veria essa entidade no código. A MyPluginturma entrava MyPlugin.js. O MenuItemcomponente React entrará MenuItem.js. Outros desenvolvedores exigirão / importarão 'your-cool-module' e usarão vários símbolos, portanto, nomeie-o cool-module.js. -
Dan Dascalescu
1
Esta postagem não é baseada em opções. De fato é importante. Aqui você tem um guia feito pelo Google - google.github.io/styleguide/jsguide.html#file-name . (Guia de estilo do Google JavaScript)
zwitterion

Respostas:

184

Uma convenção de nomenclatura possível é usar algo semelhante ao esquema de nomeação que o jQuery usa. Não é universalmente adotado, mas é bastante comum.

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

onde o par product-name+ plugintambém pode representar um espaço para nome e um módulo . O versione filetypegeralmente são opcionais.

filetypepode ser algo relativo à forma como o conteúdo do arquivo é. Frequentemente vistos são:

  • min para arquivos minificados
  • custom para arquivos criados ou modificados personalizados

Exemplos:

  • jquery-1.4.2.min.js
  • jquery.plugin-0.1.js
  • myapp.invoice.js
Bryan Menard
fonte
31
Eu concordo com o que você disse. Mas há uma coisa com a qual estou lutando atualmente: e se o 'plugin' contiver duas palavras? Separe-os por pontos? 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 talvez até jquery.my-plugin- 1.0.0.js? Talvez você possa completar seus exemplos com isso, obrigado!
Mayrs
4
E os módulos da AMD ? Se você usar a versão nos nomes de arquivos, precisará alterar muitos arquivos se o número da versão mudar.
Knut
3
@ júnior, este é um post antigo, mas uma pesquisa rápida do bower revela que os plugins jquery não seguem nenhuma convenção específica. Parece que (1) unindo as palavras, (2) usando a caixa da espinha e (3) usando o camelCase são todos usados ​​com uma frequência aproximadamente equivalente.
bholben
Não esqueça que alguns sistemas de versão e de arquivo têm problemas para reconhecer a diferença entre uma palavra em minúscula e a mesma palavra maiúscula ou camelCase (por exemplo: "ThisWord" é o mesmo que "thisword" em alguns ambientes). Algo a ter em mente ao usar a convenção camelCase.
11135 amypellegrini
@knut, você não deve carregar os nomes das versões, mas mapear o nome do módulo para um arquivo de versão específico.
dalore
132

Não conheço nenhuma convenção específica para arquivos javascript, pois eles não são realmente únicos na Web, em comparação com arquivos CSS ou arquivos HTML ou qualquer outro tipo de arquivo como esse. Existem algumas coisas "seguras" que você pode fazer que tornam menos provável a ocorrência acidental de um problema de plataforma cruzada:

  1. Use todos os nomes de arquivos em minúsculas. Existem alguns sistemas operacionais que não diferenciam maiúsculas de minúsculas de nomes de arquivos e o uso de todas as letras minúsculas impede inadvertidamente o uso de dois arquivos que diferem apenas no caso de não funcionar em alguns sistemas operacionais.
  2. Não use espaços no nome do arquivo. Embora isso tecnicamente possa ser feito para funcionar, há muitas razões pelas quais os espaços nos nomes de arquivos podem levar a problemas.
  3. Um hífen está OK para um separador de palavras. Se você deseja usar algum tipo de separador para várias palavras, em vez de um espaço ou camelcase, como emvarious-scripts.js , um hífen é um separador seguro, útil e comumente usado.
  4. Pense em usar números de versão em seus nomes de arquivos. Quando você desejar atualizar seus scripts, planeje os efeitos do cache do navegador ou da CDN. A maneira mais simples de usar o cache de longo prazo (para velocidade e eficiência), mas as atualizações imediatas e seguras ao atualizar um arquivo JS é incluir um número de versão no nome do arquivo ou caminho implantado (como o jQuery faz com o jquery-1.6.2.js ) e, em seguida, você aumenta / altera esse número de versão sempre que atualiza / altera o arquivo. Isso garantirá que nenhuma página que solicite a versão mais recente receba a versão mais antiga de um cache.
jfriend00
fonte
56

Não existe uma convenção oficial universal para nomear arquivos JavaScript.

Existem várias opções:

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

são convenções de nomenclatura válidas, no entanto , prefiro a convenção de nomenclatura sugerida pelo jQuery (para plugins jQuery, embora funcione para qualquer JS)

  • jquery.pluginname.js

A beleza desta convenção de nomenclatura é que ela descreve explicitamente a poluição do namespace global que está sendo adicionada.

  • foo.js acrescenta window.foo
  • foo.bar.js acrescenta window.foo.bar

Como deixei de fora a versão: ele deve vir após o nome completo, de preferência separado por um hífen, com períodos entre as versões principais e secundárias:

  • foo-1.2.1.js
  • foo-1.2.2.js
  • ...
  • foo-2.1.24.js
zzzzBov
fonte
10
+1 para The beauty to this naming convention is that it explicitly describes the global namespace pollution being added., nunca percebi isso
Adrien Seja
2
Minha única pergunta é o que fazer se você tiver um arquivo que cria Fooou myFoo, você simplesmente nomearia o arquivo Foo.jsou myFoo.jsrespectivamente?
ponto
13

A pergunta no link que você falou fala sobre a nomeação de variáveis ​​JavaScript, não sobre a nomeação de arquivos; portanto, esqueça-a no contexto em que você faz sua pergunta.

Quanto à nomeação de arquivos, é puramente uma questão de preferência e gosto. Prefiro nomear arquivos com hífens porque não preciso procurar a tecla Shift, como faço ao lidar com nomes de arquivos camelCase; e porque não preciso me preocupar com diferenças entre os nomes de arquivos do Windows e Linux (os nomes de arquivos do Windows não diferenciam maiúsculas de minúsculas, pelo menos no XP).

Portanto, a resposta, como tantas outras, é "depende" ou "depende de você".

A única regra que você deve seguir é ser consistente na convenção que você escolher.

Pete Wilson
fonte
6
+1 no raciocínio hífen vs. camelCase.
Cellepo
6

Geralmente, prefiro hífens com letras minúsculas, mas uma coisa ainda não mencionada é que, às vezes, é bom ter o nome do arquivo exatamente igual ao nome de um único módulo ou função instantânea contida nele.

Por exemplo, eu tenho um módulo revelador declarado com var knockoutUtilityModule = function() {...} dentro de seu próprio arquivo chamado knockoutUtilityModule.js, embora, objetivamente, prefira knockout-utility-module.js.

Da mesma forma, como estou usando um mecanismo de agregação para combinar scripts, comecei a definir funções instáveis ​​(modelos de exibição com modelos etc), cada uma em seu próprio arquivo, estilo C #, para manutenção. Por exemplo, ProductDescriptorViewModel vive por conta própria dentro de ProductDescriptorViewModel.js (eu uso maiúsculas para funções instantâneas).

Tom W Hall
fonte