Подтвердить что ты не робот

В Node.js, прочитав каталог файлов .html и выполнив поиск атрибутов элементов внутри них?

Я даже не могу начать думать о том, как это будет сделано. В принципе, представьте себе папку и в ней есть статический веб-сайт. Он имеет все изображения, стили и html файлы и т.д. С моим приложением Node я хочу заглянуть в эту папку, получить только файлы .html, а затем выбрать только файлы .html, у которых есть атрибут 'data-template = "home" внутри них.

Я знаю, что это кажется немного странным, возможно, но это для проекта, который требует, чтобы пользователь загружал свои статические файлы веб-сайта, а затем мое приложение Node делает что-то с ними.

Во всяком случае, было просто любопытно об итерации по некоторым типам файлов, а затем заглядывать в них... Любая помощь при приближении к этому действительно помогла бы мне.

Большое спасибо, Джеймс

4b9b3361

Ответ 1

Этот фрагмент кода будет проверять все файлы в каталоге, затем читать содержимое файлов .html, а затем искать в них строку 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
    }
}

Если вам нужна большая гибкость, вы также можете использовать модуль cheerio для поиска элемента в html файле с этим атрибутом:

var cheerio = require('cheerio');

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

    if ($('html[data-template="home"]').length) {
        // do something
    }
}

Ответ 2

Взгляните на модуль файловой системы nodejs

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

Вы можете использовать fs.readdir(), чтобы получить имена всех файлов, а затем прочитать .html, чтобы найти "data-template = home".