Inspirada en anteriores posts he hecho una copia de Rakefile y proveedor de directorios distribuidos con WysiHat (RTE mencionado por changelog) y de hecho un par de modificaciones para incluir el código de comprobación con JSLint y minificación con YUI Compressor.
La idea es utilizar Piñones (de WysiHat) para combinar múltiples archivos Javascript en un archivo, la revisión de la sintaxis del archivo combinado con JSLint y minify con YUI Compressor antes de la distribución.
Requisitos previos
- Tiempo De Ejecución De Java
- ruby y el rastrillo de la gema
- Usted debe saber cómo poner un JAR en el Classpath
Ahora
- Descargar Rhino y poner el FRASCO ("js.jar") a su classpath
- Descargar YUI Compressor y poner el FRASCO (build/yuicompressor-xyz.jar) a su classpath
- Descargar WysiHat y copia de "el proveedor" directorio raíz de su proyecto de JavaScript
- Descargar JSLint para Rhino y lo puso dentro del "proveedor" directorio
Ahora crea un archivo llamado "Rakefile" en el directorio raíz del proyecto de JavaScript y agregue el siguiente contenido:
require 'rake'
ROOT = File.expand_path(File.dirname(__FILE__))
OUTPUT_MERGED = "final.js"
OUTPUT_MINIFIED = "final.min.js"
task :default => :check
desc "Merges the JavaScript sources."
task :merge do
require File.join(ROOT, "vendor", "sprockets")
environment = Sprockets::Environment.new(".")
preprocessor = Sprockets::Preprocessor.new(environment)
%w(main.js).each do |filename|
pathname = environment.find(filename)
preprocessor.require(pathname.source_file)
end
output = preprocessor.output_file
File.open(File.join(ROOT, OUTPUT_MERGED), 'w') { |f| f.write(output) }
end
desc "Check the JavaScript source with JSLint."
task :check => [:merge] do
jslint_path = File.join(ROOT, "vendor", "jslint.js")
sh 'java', 'org.mozilla.javascript.tools.shell.Main',
jslint_path, OUTPUT_MERGED
end
desc "Minifies the JavaScript source."
task :minify => [:merge] do
sh 'java', 'com.yahoo.platform.yui.compressor.Bootstrap', '-v',
OUTPUT_MERGED, '-o', OUTPUT_MINIFIED
end
Si has hecho todo correctamente, usted debería ser capaz de usar los siguientes comandos en la consola:
-
rake merge
-- a combinar diferentes archivos de JavaScript en una
-
rake check
-- a comprobar la sintaxis del código (este es el valor predeterminado de la tarea, así que usted puede simplemente escriba rake
)
-
rake minify
-- a preparar record de la versión de su código JS
En el origen de la fusión de
El uso de Piñones, el JavaScript pre-procesador puede incluir (o require
) otros ficheros JavaScript. Utilice la siguiente sintaxis para incluir otras secuencias de comandos desde el archivo inicial (denominado "main.js"pero usted puede cambiar esto en la Rakefile):
(function() {
//= require "subdir/jsfile.js"
//= require "anotherfile.js"
// some code that depends on included files
// note that all included files can be in the same private scope
})();
Y luego...
Echa un vistazo a Rakefile siempre con WysiHat para establecer las pruebas unitarias automatizadas. Cosas bonitas :)
Y ya por la respuesta
Esto no responde a la pregunta original, muy bien. Lo sé, y lo lamento, pero he publicado aquí porque tengo la esperanza de que pueda ser útil para alguien más para organizar sus líos.
Mi enfoque del problema es que hacer como mucho orientada a objetos modelado puedo y implementaciones independientes en diferentes archivos. A continuación, los controladores deben ser tan cortas como sea posible. El ejemplo con List
singleton es también agradable.
Y los espacios de nombres... así que puede ser imitado por los más profunda de la estructura del objeto.
if (typeof org !== 'undefined') {
var org = {};
}
if (!org.hasOwnProperty('example')) {
org.example = {};
}
org.example.AnotherObject = function () {
// constructor body
};
Yo no soy gran fan de las imitaciones, pero esto puede ser útil si tienes muchos objetos que desea mover fuera del alcance mundial.