Convenção de nomenclatura para ativos (imagens, css, js)?

89

Ainda estou lutando para encontrar uma boa convenção de nomenclatura para ativos como imagens, arquivos js e css usados ​​em meus projetos da web.

Então, minha corrente seria:

CSS: style-{name}.css
exemplos: style-main.css, style-no_flash.css, style-print.cssetc.

JS: script-{name}.js
exemplos: script-main.js, script-nav.jsetc.

Imagens: {imageType}-{name}.{imageExtension}
{imageType} qualquer uma dessas

  • ícone (por exemplo, ícone de ponto de interrogação para conteúdo de ajuda)
  • img (por exemplo, uma imagem de cabeçalho inserida por meio do <img />elemento)
  • botão (por exemplo, um botão gráfico de envio)
  • bg (a imagem é usada como imagem de fundo em css)
  • sprite (a imagem é usada como imagem de fundo no css e contém várias "versões")

Exemplo nomes seriam: icon-help.gif, img-logo.gif, sprite-main_headlines.jpg, bg-gradient.gifetc.

Então, o que você acha e qual é a sua convenção de nomenclatura ?

Max
fonte
em relação Javascript File Naming Conventionsapenas, leia (muito) mais em stackoverflow.com/questions/7273316/…
Adrien Be

Respostas:

28

Coloco arquivos CSS em uma pasta css, Javascript em js, imagens em images, ... Adiciono subpastas como você vê o ajuste. Não há necessidade de qualquer convenção de nomenclatura no nível de arquivos individuais.

Lutz
fonte
16
Discordo. Considere o fato de que muitos projetos conhecidos têm convenções de nomenclatura. veja jQuery, ele usa <product-name>.<plugin>-<ver.sion>.<filetype>.js, como jquery-1.4.2.min.js, ou jquery.plugin-0.1.js.
Adrien Be
56

Tenho notado um monte de desenvolvedores de frontend estão se afastando csse jsem favor de stylese scriptsporque geralmente há outras coisas lá, como .less, .styl, e .sass, bem como, para alguns, .coffee. O fato é que usar seleções de tecnologia específicas em sua escolha de organização de pasta é uma má ideia, mesmo que todos façam isso. Vou continuar a usar o padrão que vejo desses desenvolvedores altamente respeitados:

  • src/html
  • src/images
  • src/styles
  • src/styles/fonts
  • src/scripts

E seus equivalentes de compilação de destino, que às vezes são prefixados destdependendo do que estão construindo:

  • ./
  • images
  • styles
  • styles/fonts
  • scripts

Isso permite que aqueles que desejam colocar todos os arquivos juntos (em vez de separar um srcdiretório) mantenham isso e mantenha as coisas claramente associadas para aqueles que o fizerem.

Na verdade, vou um pouco mais longe e adiciono

  • scripts/before
  • scripts/after

Que se transformam em dois main-before.min.jse main-after.min.jsscripts, um para o cabeçalho (com elementos essenciais normalizee modernizrque precisam ser executados antes, por exemplo) e aftera última coisa no corpo, já que o javascript pode esperar. Eles não se destinam à leitura, como a página principal do Google.

Se houver scripts e folhas de estilo que façam sentido reduzir e deixar o link sozinho devido a uma abordagem de gerenciamento de cache específica que é tratada nas regras de construção.

Hoje em dia, se você não está usando um processo de construção de algum tipo, como gulp ou grunt , provavelmente não está atingindo a maioria das metas de desempenho centradas em dispositivos móveis que provavelmente deveria considerar.

robmuh
fonte
Os arquivos de fontes (.ttf, .eot, etc.) estão localizados em estilos / fontes?
Andrew Savetchuk
É uma ideia altamente razoável. Obrigado!
zhibirc de
Acho que os arquivos de fontes deveriam estar fora das pastas de estilo, eles estão relacionados, mas acho que parece mais claro fora.
Pablo - No
13
/Ativos/
  / Css
  / Imagens
  / Javascript (ou Script)
    / Minificado
    /Fonte

É a melhor estrutura que já vi e a que prefiro. Com as pastas, você realmente não precisa prefixar seu CSS etc. com nomes descritivos.

Chris S
fonte
Eu gosto disso, mas acho que a pasta raiz mais comum é "pública" ou "conteúdo".
Brian Boatright
A primeira vez que vi essa estrutura de arquivo para 'Ativos' foi quando me aprofundei em aplicativos de página única Angular. É usado em muitos tutoriais de aplicativos de página única Angular por aí - eu gosto.
Kyle Vassella
11

Para sites grandes onde o css pode definir muitas imagens de fundo, uma convenção de nomenclatura de arquivo para esses ativos é muito útil para fazer alterações posteriormente.

Por exemplo:

[component].[function-description].[filetype]

footer.bkg-image.png
footer.copyright-gradient.png

Também discutimos a adição do tipo de elemento, mas não tenho certeza de quão útil isso é e pode ser enganoso para futuras alterações necessárias:

[component].[element]-[function-description].[filetype]
footer.div-bkg-image.png
footer.p-copyright-gradient.png
Brian Wigginton
fonte
8

Você pode nomeá-lo assim:

/ assets / css / - Para arquivos CSS

/ assets / font / - Para arquivos de fonte. (Geralmente, você pode simplesmente ir para fontes do Google para pesquisar fontes utilizáveis.)

/ assets / images / - Para arquivos de imagens.

/ assets / scripts / ou / assets / js / - Para arquivos JavaScript.

/ assets / media / - Para vídeo e diversos. arquivos.

Você também pode substituir "ativos" pelo nome da pasta "recurso" ou "arquivos" e manter o nome de suas subpastas. Bem, ter uma estrutura de pedido de pastas como esta não é muito importante, o único importante é que você apenas tem que organizar seus arquivos pelo formato. como criar uma pasta "/ css /" para arquivos CSS ou "/ images /" para arquivos de imagem.

Justin
fonte
6

Em primeiro lugar, divido em pastas: css, js, img.

Dentro de css e js, prefixo os arquivos com o nome do projeto porque seu site pode incluir arquivos js e css que são componentes. Isso deixa claro onde os arquivos são específicos para o seu site ou relacionados a plug-ins.

css/mysite.main.css css/mysite.main.js

Outros arquivos podem ser semelhantes

js/jquery-1.6.1.js js/jquery.validate.js

Por fim, as imagens são divididas por uso.

  • img/btn/submit.png um botão
  • img/lgo/mysite-logo.png um logotipo
  • img/bkg/header.gif um plano de fundo
  • img/dcl/top-left-widget.jpg um elemento de decalque
  • img/con/portait-of-something.jpg uma imagem de conteúdo

É importante manter as imagens organizadas, pois podem haver mais de 100 e podem ser facilmente totalmente misturadas e com nomes confusos.

smdrager
fonte
1
img/con? Eu estou supondo que você não está armazenando nenhum desses arquivos em um sistema baseado no Windows? Acontece que con é um nome de driver de dispositivo MS-DOS reservado e não pode ser usado como nome de arquivo .
ᴍᴀᴛᴛ ʙᴀᴋᴇʀ
Eu gosto de img como nome de pasta porque me lembra que o nome da tag também é img , não imagem .
user949300
6

Eu tendo a evitar qualquer coisa genérica, como o que o smdrager sugeriu. "mysite.main.css" não significa absolutamente nada.

O que é "meusite" ?? Este em que estou trabalhando? Se sim, então é óbvio mesmo, mas já me fez pensar o que poderia ser e se é tão óbvio!

O que é "Principal"? A palavra "Principal" não tem definição fora do conhecimento do codificador do que está dentro desse arquivo css.

Embora ok em certos cenários, evite nomes como "top" ou "left" também: "top-nav.css" ou "top-main-logo.png".
Você pode querer usar a mesma coisa em outro lugar, e colocar uma imagem em um rodapé ou dentro do conteúdo da página principal chamado "top-banner.png" é muito confuso!

Não vejo nenhum problema em ter um bom número de folhas de estilo para permitir uma convenção de nomenclatura decente para retratar o que css está dentro do arquivo fornecido.
A quantidade depende inteiramente do tamanho do site e de suas funções, e de quantos blocos diferentes existem no site.

Não acho que você precise declarar "CSS" ou "ESTILO" nos nomes dos arquivos css, pois o fato de estar na pasta "css" ou "estilos" e ter uma extensão de .csse principalmente porque esses arquivos são sempre chamados na <head>área, sei muito bem o que são.

Dito isso, eu faço isso com arquivos de biblioteca, JS e config (etc). por exemplo, libSomeLibrary.php ou JSSomeScript.php. Como os arquivos PHP e JS são incluídos ou usados ​​em várias áreas dentro de outros arquivos, é útil ter informações sobre qual é o propósito principal do arquivo dentro do nome.

por exemplo: ver o nome do arquivo require('libContactFormValidation.php');é útil. Eu sei que é um arquivo de biblioteca (lib) e pelo nome o que ele faz.

Para pastas de imagens, geralmente tenho images/content-images/e images/style-images/. Não acho que haja necessidade de mais separação, mas, novamente, depende do projeto.

Então, cada imagem será nomeada de acordo com o que é e, novamente, não acho que seja necessário definir o arquivo como uma imagem dentro do nome do arquivo. Os tamanhos podem ser úteis, especialmente quando as imagens têm tamanhos diferentes.

site-logo-150x150.png
site-logo-35x35.png
shop-checkout-button-40x40.png
shop-remove-item-20x20.png
etc.


Uma boa regra a ser seguida é: se um novo desenvolvedor acessasse os arquivos, ele ficaria sentado coçando a cabeça por horas ou provavelmente entenderia o que as coisas fazem e só precisaria de um pouco de tempo pesquisando (o que é inevitável)?

Como algo assim, no entanto, uma das regras mais importantes a seguir é simplesmente constância !
Certifique-se de seguir a mesma lógica e padrões em todas as convenções de nomenclatura!
De simples nomes de arquivo css a arquivos de biblioteca PHP e nomes de colunas e tabelas de banco de dados.

James
fonte
Para remover a ambiguidade para tamanhos de imagem Eu estou debatendo entre site-logo-150w-150h.png, site-logo-w150x150h.pngou site-logo-150w150h.png- pensamentos?
Daniel Sokolowski
5

Esta é uma questão antiga, mas ainda válida.

Minha recomendação atual é ir com algo nas seguintes linhas:

  • ativos (ou ativos-web ou ativos-www); este se destina ao conteúdo estático usado pelo cliente (navegador)
    • dados; alguns arquivos xml e outras coisas
    • fontes
    • imagens
    • meios de comunicação
    • estilos
    • scripts
    • lib (ou terceiro); este se destina ao código que você não cria ou modifica, as bibliotecas conforme você as obtém
    • lib-modded (ou modificado por terceiros); este é destinado ao código que você não esperava que modificasse, mas teve que modificar, como aplicar uma solução alternativa / correção enquanto o provedor da biblioteca o libera
  • inc (ou ativo-servidor ou ativo-local); este se destina ao conteúdo usado do lado do servidor, não para ser usado pelo cliente, como bibliotecas em linguagens como PHP ou scripts de servidor, como arquivos bash
    • fontes
    • lib
    • lib-modded

Marquei a negrito os habituais, os outros não são conteúdos habituais.

O motivo da divisão principal é que, no futuro, você poderá decidir servir os ativos da web a partir de um CDN ou restringir o acesso do cliente aos ativos do servidor, por motivos de segurança.

Dentro dos diretórios lib, eu costumo ser descritivo sobre as bibliotecas, por exemplo

  • lib
    • jquery.com
      • jQuery
        • vX.YZ
    • github
      • [caminho]
        • [biblioteca / nome do projeto]
          • vX.YZ (versão)

assim, você pode substituir a biblioteca por uma nova, sem quebrar o código, permitindo também que futuros mantenedores de código, incluindo você, encontrem a biblioteca e atualizem-na ou obtenham suporte.

Além disso, fique à vontade para organizar o conteúdo interno de acordo com seu uso, de modo que imagens / logotipos e imagens / ícones são diretórios esperados em alguns projetos.

Como uma observação lateral, o nome do ativo é significativo, não apenas significando que temos recursos lá, mas significando que os recursos lá devem ser de valor para o projeto e não peso morto.

cablop
fonte
Gosto muito dessa abordagem, principalmente por ser personalizável, por exemplo dentro de estilos você pode colocar uma pasta sass e uma pasta css, porém em algumas outras respostas chamam a pasta de estilos apenas css.
Pablo - No