Quais são as convenções de nomenclatura para arquivos e pastas em um grande projeto Node.js.
Devo capitalizar, camelCase ou subestimar?
Ou seja, isso é considerado válido?
project-name
app
controllers
someThings.js
users.js
models
someThing.js
user.js
views
some-things
index.jade
users
logIn.jade
signUp.jade
...
javascript
node.js
Rudiger
fonte
fonte
require
usa a string do diretório como parâmetro, e é por isso que não é inteiramente sua. ie.require('../app/controllers/someThings');
fs
), palavra única (events
), sublinhado (child_process
) e minúsculo (querystring
).Respostas:
Depois de alguns anos com nó, posso dizer que existem há convenções para a estrutura de diretório / arquivo. No entanto, a maioria dos aplicativos express (profissionais) usam uma configuração como:
Um exemplo que usa essa configuração é nodejs-starter .
Eu pessoalmente mudei essa configuração para:
Na minha opinião, o último combina melhor com a estrutura de diretórios no estilo Unix (enquanto o primeiro mistura isso um pouco).
Também gosto desse padrão para separar arquivos:
lib / index.js
lib / static / index.js
Isso permite separar perfeitamente todo o código-fonte sem ter que incomodar as dependências. Uma solução realmente boa para combater o Javascript desagradável. Um exemplo do mundo real próximo, que usa essa configuração.
Atualizar (nomes de arquivos):
Em relação aos nomes de arquivo, os mais comuns são nomes de arquivo curtos e em minúsculas . Se o seu arquivo só pode ser descrito com duas palavras, a maioria dos projetos JavaScript usa um sublinhado como delimitador.
Atualizar (variáveis):
Com relação às variáveis, as mesmas "regras" se aplicam aos nomes de arquivos. Protótipos ou classes, no entanto, devem usar camelCase .
Atualização (guias de estilo):
fonte
bodokaiser
que estou levando as coisas muito para o lado pessoal para eu pular e pedir que sua opinião sobre isso seja adicionada à sua resposta (como o OP inicialmente perguntou na pergunta deles) ( tosse tosse ).Use
kebab-case
para todos os nomes de pacotes, pastas e arquivos.Por quê?
Você deve imaginar que qualquer pasta ou arquivo pode ser extraído para seu próprio pacote algum dia. Os pacotes não podem conter letras maiúsculas.
Portanto,
camelCase
nunca deve ser usado. Isso deixasnake_case
ekebab-case
.kebab-case
é de longe a convenção mais comum hoje. O único uso de sublinhados é para pacotes de nós internos, e isso é simplesmente uma convenção desde os primeiros dias.fonte
Não existem convenções. Existem algumas estruturas lógicas.
A única coisa que posso dizer: nunca use nomes de arquivos e diretórios camelCase. Por quê? Funciona, mas no Mac e no Windows não há diferença entre someAction e alguma ação. Eu conheci esse problema, e não uma vez. Eu exigi um arquivo como este:
Mas, infelizmente, eu criei um arquivo com cheio de minúsculas:
lib/ishidden.js
. Funcionou para mim no mac. Funcionou bem no mac do meu colega de trabalho. Os testes são executados sem erros. Após a implantação, recebemos um grande erro:Oh sim. É uma caixa Linux. Portanto, a estrutura de diretórios do camelCase pode ser perigosa. É o suficiente para um colega que está desenvolvendo no Windows ou Mac.
Portanto, use o separador de sublinhado (_) ou traço (-), se necessário.
fonte
const loginPage = browser.page.admin-login()
. Eu tenho um erroReferenceError: login is not defined
. O uso de sublinhado (_) no nome do arquivo resolveu o problema. Também posso imaginar que usar nomes de arquivos com traço na linha de comando também pode causar alguns problemas. Portanto, eu diria que o sublinhado é o separador mais seguro para nomes de arquivo em geral.Baseado no ' Guia de estilo do Google JavaScript '
fonte
A maioria das pessoas usa
camelCase
em JS. Se você quiser abrir o código de algo, sugiro que use este :-)fonte
camelCase
para arquivos de controlador. :-) Apenas depende. Costumo usarPascalCase
para arquivos do tipo classe.Node.js não impõe nenhuma convenção de nomenclatura de arquivo (exceto
index.js
). E a linguagem Javascript em geral também não. Você pode encontrar dezenas de tópicos aqui que sugerem camelCase, hífens e sublinhados, qualquer um dos quais funciona perfeitamente bem. Então a escolha é sua. Escolha um e fique com ele.fonte
De acordo com mim: Para arquivos, use a caixa de camelo inferior se module.exports for um objeto, quero dizer um módulo singleton. Isso também se aplica a arquivos JSON, pois eles também são de uma forma única. Use maiúsculas e minúsculas se module.exports retornar uma função construtora onde atua como uma classe.
Para pastas, use nomes curtos. Se houver necessidade de várias palavras, deixe-as totalmente em minúsculas separadas por "-" para que funcione em todas as plataformas de forma consistente.
fonte