Actualmente estoy trabajando en un gran proyecto de JavaScript para el que queremos definir nuestra propia API. Estoy usando RequireJS como mi cargador de dependencias y me viene bien, lo que me permite definir módulos en sus respectivos archivos. No hago uso de mi propio espacio de nombres, un módulo devuelve una instancia, que puede ser utilizado en otros módulos, es decir:Cómo estructurar un proyecto de JavaScript utilizando RequireJS
define(
['imported_module'],
function(module){
module.doSomething();
}
)
Sin embargo, como el número de archivos crece, me gustaría que decidir cómo estructurar estos archivos en carpetas. Actualmente utilizo el siguiente esquema para nombrar mis archivos:
[projectname].[packagename].[ModuleName]
Un ejemplo podría ser stackoverflow.util.HashMap.js. Me gustaría presentar una carpeta de proyecto, una carpeta por cada paquete y cambiar el nombre de los archivos en el nombre de módulo, como:
stackoverflow/util/HashMap.js
Este estructuras mi código muy claramente en carpetas, sin embargo el nombre del archivo refleja sólo el módulo ahora. Me gustaría definir algún tipo de enrutamiento para poder definir cómo RequireJS debería buscar los archivos. Ejemplo:
El archivo
stackoverflow/util/stackoverflow.util.HashMap.js
debería ser importable por la declaración
define(['stackoverflow.util.HashMap'],function(HashMap){});
tiene experiencia cualquier persona con grandes proyectos estructurantes de JavaScript y si es así, ¿podría compartir su enfoque?
Probablemente puedas hacer eso con un plugin personalizado ... algo así como 'use! Stackoverflow.util.HashMap' – blockhead
Como dijo blockhead: El plugin API tiene una función de" normalización "que toma un nombre y lo traduce en una ruta . Eche un vistazo a: http://requirejs.org/docs/plugins.html # apinormalize – David