В Node.js, прочитав каталог файлов .html и выполнив поиск атрибутов элементов внутри них?
Я даже не могу начать думать о том, как это будет сделано. В принципе, представьте себе папку и в ней есть статический веб-сайт. Он имеет все изображения, стили и html файлы и т.д. С моим приложением Node я хочу заглянуть в эту папку, получить только файлы .html, а затем выбрать только файлы .html, у которых есть атрибут 'data-template = "home" внутри них.
Я знаю, что это кажется немного странным, возможно, но это для проекта, который требует, чтобы пользователь загружал свои статические файлы веб-сайта, а затем мое приложение Node делает что-то с ними.
Во всяком случае, было просто любопытно об итерации по некоторым типам файлов, а затем заглядывать в них... Любая помощь при приближении к этому действительно помогла бы мне.
Большое спасибо, Джеймс
Ответы
Ответ 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".