tutorial socket node introduccion example ejemplos desarrollo javascript html file node.js file-type

javascript - node - socket io tutorial



En Node.js, ¿leer un directorio de archivos.html y buscar atributos de elementos dentro de ellos? (2)

Ni siquiera puedo empezar a pensar en cómo se haría esto. Básicamente, imagina una carpeta y tiene un sitio web estático. Tiene todas las imágenes, estilos y archivos html, etc. Con mi aplicación Node, quiero mirar dentro de esta carpeta, obtener solo los archivos .html y luego seleccionar los archivos .html que tienen el atributo ''data-template = " casa "''dentro de ellos.

Sé que esto puede parecer un poco extraño, pero es para un proyecto que requiere que el usuario cargue sus archivos de sitios web estáticos y luego mi aplicación Node hace cosas con ellos.

De todos modos, tenía curiosidad por iterar sobre ciertos tipos de archivos y luego mirar dentro de ellos ... Cualquier ayuda para abordar esto realmente me ayudaría.

Muchas gracias james


Eche un vistazo al módulo del sistema de archivos nodejs

http://nodejs.org/docs/v0.5.3/api/fs.html

Podría usar fs.readdir () para obtener los nombres de todos los archivos, y luego leer los .html para encontrar ''data-template = home''.


Este fragmento de código buscará todos los archivos en un directorio, luego leerá el contenido de los archivos .html y luego buscará una cadena de data-template="home" en ellos.

var fs = require(''fs''); fs.readdir(''/path/to/html/files'', function(err, files) { files .filter(function(file) { return file.substr(-5) === ''.html''; }) .forEach(function(file) { fs.readFile(file, ''utf-8'', function(err, contents) { inspectFile(contents); }); }); }); function inspectFile(contents) { if (contents.indexOf(''data-template="home"'') != -1) { // do something } }

Si necesita más flexibilidad, también puede usar el módulo cheerio para buscar un elemento en el archivo html con ese atributo:

var cheerio = require(''cheerio''); function inspectFile(contents) { var $ = cheerio.load(contents); if ($(''html[data-template="home"]'').length) { // do something } }