W Węźle.js, czytając katalog.pliki html i wyszukiwanie w nich atrybutów elementów?

Nie mogę nawet zacząć myśleć o tym, jak to zrobić. Zasadniczo wyobraź sobie folder, w którym znajduje się statyczna strona internetowa. Posiada wszystkie obrazy, style i pliki html itp. Z mojej aplikacji węzła, chcę zajrzeć do tego folderu, uzyskać tylko .tylko pliki html, a następnie wybierz tylko .pliki html, które mają w sobie atrybut 'data-template="home".

Wiem, że to może trochę dziwne, ale to dla projektu, który wymaga od użytkownika przesłania ich statyczne pliki strony internetowej, a następnie Moja aplikacja węzeł robi rzeczy do nich plików.

W każdym razie, byłem po prostu ciekaw iteracji pewnych typów plików, a następnie zaglądanie do ich wnętrza... Każda pomoc w podchodzeniu do tego naprawdę mi pomoże.

Wielkie dzięki, James

Author: littlejim84, 2011-08-05

2 answers

Ten fragment kodu skanuje wszystkie pliki w katalogu, następnie odczytuje zawartość .html plików, a następnie wyszukuje w nich ciąg znaków data-template="home".

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
    }
}

Jeśli potrzebujesz większej elastyczności, możesz również użyć modułu cheerio, Aby wyszukać element w pliku html z tym atrybutem:

var cheerio = require('cheerio');

function inspectFile(contents) {
    var $ = cheerio.load(contents);

    if ($('html[data-template="home"]').length) {
        // do something
    }
}
 54
Author: mak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-13 21:25:36

Spójrz na moduł systemu plików nodejs

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

Możesz użyć fs.readdir () aby pobrać nazwy wszystkich plików, przeczytaj .HTML do znalezienia 'data-template=home'.

 2
Author: shelman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-05 16:28:02