¿Cuáles son las convenciones de nomenclatura para archivos y carpetas en un proyecto grande de Node.js?
¿Debo usar mayúsculas, camelCase o subvalorar?
Es decir. ¿Esto se considera 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
fuente
fuente
require
toma la cadena del directorio como parámetro, por lo que no es del todo tuyo. es decir.require('../app/controllers/someThings');
fs
), una sola palabra (events
), subrayados (child_process
) y minúsculas (querystring
).Respuestas:
Después de algunos años con el nodo, puedo decir que no hay convenciones para la estructura de directorios / archivos. Sin embargo, la mayoría de las aplicaciones express (profesionales) utilizan una configuración como:
Un ejemplo que usa esta configuración es nodejs-starter .
Personalmente cambié esta configuración a:
En mi opinión, el último encaja mejor con la estructura de directorios estilo Unix (mientras que el primero mezcla esto un poco).
También me gusta este patrón para separar archivos:
lib / index.js
lib / static / index.js
Esto permite desacoplar perfectamente todo el código fuente sin tener que molestar a las dependencias. Una muy buena solución para luchar contra el desagradable Javascript. Un ejemplo del mundo real está cerca que usa esta configuración.
Actualizar (nombres de archivo):
En cuanto a los nombres de archivo, los más comunes son los nombres de archivo cortos y en minúsculas . Si su archivo solo se puede describir con dos palabras, la mayoría de los proyectos de JavaScript utilizan un guión bajo como delimitador.
Actualización (variables):
En cuanto a las variables, se aplican las mismas "reglas" que para los nombres de archivo. Los prototipos o clases, sin embargo, deben usar camelCase .
Actualización (guías de estilo):
fuente
bodokaiser
me estoy tomando las cosas demasiado personalmente como para intervenir y solicitar que su opinión al respecto se agregue a su respuesta (como el OP preguntó inicialmente en su pregunta) ( tos tos ).Úselo
kebab-case
para todos los nombres de paquetes, carpetas y archivos.¿Por qué?
Debe imaginarse que algún día cualquier carpeta o archivo podría extraerse a su propio paquete. Los paquetes no pueden contener letras mayúsculas.
Por lo tanto,
camelCase
nunca debe usarse. Esto dejasnake_case
ykebab-case
.kebab-case
es, con mucho, la convención más común en la actualidad. El único uso de guiones bajos es para paquetes de nodos internos, y esto es simplemente una convención de los primeros días.fuente
No hay convenciones. Hay alguna estructura lógica.
Lo único que puedo decir: nunca use nombres de directorio y archivo camelCase. ¿Por qué? Funciona, pero en Mac y Windows no hay diferencias entre alguna acción y alguna acción. Me encontré con este problema, y ni una sola vez. Necesito un archivo como este:
Pero, lamentablemente, he creado un archivo con lleno de minúsculas:
lib/ishidden.js
. Funcionó para mí en mac. Funcionó bien en mac de mi compañero de trabajo. Las pruebas se ejecutan sin errores. Después de la implementación, obtuvimos un gran error:Oh si. Es una caja de Linux. Así que la estructura de directorios de camelCase podría ser peligrosa. Es suficiente para un colega que está desarrollando en Windows o Mac.
Por lo tanto, use un guión bajo (_) o un guión (-) como separador si lo necesita.
fuente
const loginPage = browser.page.admin-login()
. Tengo un errorReferenceError: login is not defined
. El uso de subrayado (_) para el nombre del archivo resolvió el problema. También puedo imaginar que el uso de nombres de archivo con guiones en la línea de comandos también puede generar algunos problemas. Por lo tanto, diría que el subrayado es el separador más seguro para los nombres de archivos en general.Basado en la " Guía de estilo de JavaScript de Google "
fuente
La mayoría de la gente usa
camelCase
en JS. Si desea abrir cualquier código, le sugiero que use este :-)fuente
camelCase
para archivos de controlador. :-) Solo depende. Tiendo a usarloPascalCase
para archivos de clase.Node.js no aplica ningún convenio de nomenclatura de archivos (excepto
index.js
). Y el lenguaje Javascript en general tampoco. Puede encontrar docenas de hilos aquí que sugieren camelCase, guiones y guiones bajos, cualquiera de los cuales funciona perfectamente bien. Eso depende de ti. Elija uno y apéguese a él.fuente
Según yo: para archivos, use minúsculas camel si module.exports es un objeto, me refiero a un módulo singleton. Esto también se aplica a los archivos JSON, ya que también son de una sola tonelada. Use mayúsculas y minúsculas si module.exports devuelve una función de constructor donde actúa como una clase.
Para carpetas, use nombres cortos. Si es necesario tener varias palabras, déjelas en minúsculas separadas por "-" para que funcione en todas las plataformas de manera consistente.
fuente