Este brevemente algunos conceptos básicos de nodo.
0. Código de organización. Es una convención colocar el código de su aplicación principal en un archivo llamado app.js
en la raíz del proyecto.
app.js Dentro cosas se agrupan en dos partes generales:
- síncronos inicializaciones: requerir módulos, los directorios de construcción, leer configuraciones, conexiones, etc. db cosas que bloquean, por lo que deben existir o muere rápidamente
- asincrónico tareas de la aplicación: servidor de inicio, procesos en segundo plano, auto compilación CSS & JS, enrutamiento, i/o, etc. Cosas que están en el bucle de evento.
1. Recopila Stylus a CSS al compilar la aplicación. Necesitamos requerir el módulo stylus. Por lo general, esto se hace en la parte superior de la aplicación.js para mantener las dependencias juntas.
var stylus = require('stylus');
La primera vez que se ejecuta Nodo app.js
, necesita esta JS módulo para construir su CSS. Esta es la idea básica:
stylus.render(stylus-code-string, function(err, css) {
if (err) throw err;
console.log(css);
});
Aquí es el funcionario Stylus Javascript API.
Para usar la potencia de Node, debe leer un archivo stylus usando fs module en un búfer, luego conviértalo en una cadena y finalmente páselo a stylus.render()
. Luego, envíe el resultado a un archivo de destino. Como esto es parte del proceso de compilación, puede ser sincrónico. Pero esta no es realmente su pregunta ...
2. Autocompletar CSS con Stylus como proceso en segundo plano.
Esta función genera un child_process que vigila un solo archivo .styl
y compila los .styl
archivos incluidos en un archivo .css
. No necesita un módulo para esto, solo instale el ejecutable de stylus para que se ejecute en la línea de comando. (Ya has hecho esto). Este ejemplo se realizó con el stylus versión 0.5.0. Además, las rutas de carpeta que utiliza (por ejemplo, build/styles
y styles
) deben existir.
function watchStyles(sourcefile, destinationfolder) {
var Stylus = child_process.spawn('stylus', ['--sourcemap', '-w', sourcefile, '--out', destinationfolder]);
Stylus.stdout.pipe(process.stdout); // notifications: watching, compiled, generated.
Stylus.stderr.pipe(process.stdout); // warnings: ParseError.
Stylus.on('error', function(err) {
console.log("Stylus process("+Stylus.pid+") error: "+err);
console.log(err);
});
// Report unclean exit.
Stylus.on('close', function (code) {
if (code !== 0) {
console.log("Stylus process("+Stylus.pid+") exited with code " + code);
}
});
}
A continuación, debe llamar a esta función en algún momento después de iniciar la aplicación. Pase su archivo maestro .styl
como fuente. Luego, el directorio de destino donde quieres que vaya tu CSS.
// check that you passed '-w' parameter
if (process.argv[2] && (process.argv[2] == "-w")) {
watchStyles('styles/app.styl', 'build/styles');
}
iniciar la aplicación ejecutando: $ node app.js -w
Ayuda a organizar sus .styl
archivos bajo un app.styl
de manera que el contenido de su app.styl
se ve así:
@import 'layout'
@import 'header'
@import 'main'
@import 'footer'
@import 'modal'
@import 'overrides'
Ok, eso es parte donde dice "A continuación, añadir esta línea a la configuración de su aplicación", lo que la configuración de la aplicación. Para lo único que necesito node.js es para compilar mi archivo stylus. Mi aplicación web en realidad no necesita node.js y no quiero incluir node.js para mi aplicación web. – ryanzec
Editado mi respuesta ... espero que esto tenga más sentido ... – silverfighter