2011-08-05 5 views
21

मैं यह भी सोचने के लिए शुरू नहीं कर सकता कि यह कैसे किया जाएगा। असल में, एक फ़ोल्डर की कल्पना करें और इसमें एक स्थिर वेबसाइट है। इसमें सभी छवियां, शैलियों और एचटीएमएल फाइलें हैं। मेरे नोड एप्लिकेशन के साथ, मैं इस फ़ोल्डर के अंदर देखना चाहता हूं, केवल .html फाइलें प्राप्त करें और फिर केवल .html फ़ाइलों को चुनें जिनमें विशेषता 'डेटा-टेम्पलेट = "है घर "उनके अंदर।Node.js में, .html फ़ाइलों की निर्देशिका पढ़ना और उनके अंदर तत्व विशेषताओं की खोज करना?

मुझे पता है कि यह थोड़ा अजीब लगता है, लेकिन यह एक ऐसे प्रोजेक्ट के लिए है जिसके लिए उपयोगकर्ता को अपनी स्थिर वेबसाइट फ़ाइलों को अपलोड करने की आवश्यकता है और फिर मेरा नोड ऐप उन चीज़ों को फाइल करता है।

किसी भी तरह, कुछ फ़ाइल प्रकारों को फिर से शुरू करने के बारे में उत्सुक था और फिर उनके अंदर देख रहे थे ... इससे संपर्क करने में कोई मदद वास्तव में मेरी मदद करेगी।

बहुत धन्यवाद, जेम्स

उत्तर

53

कोड का यह टुकड़ा निर्देशिका में सभी फ़ाइलों के लिए स्कैन करेगा, फिर .html फ़ाइलों की सामग्री पढ़ें और फिर उनमें स्ट्रिंग data-template="home" देखें।

var cheerio = require('cheerio'); 

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

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

कभी एक लाख साल में सोचा था कि यह इतना आसान होगा:

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 फ़ाइल में एक तत्व देखने के लिए इस्तेमाल कर सकते हैं । बहुत धन्यवाद! क्या एक महान प्रतिक्रिया है! धन्यवाद। – littlejim84

+0

बहुत उपयोगी। बस मूल कोड में एक छोटी सी बग को इंगित करने के लिए, यह 'fs.readFile ('/path/to/html/files '+'/'+ file,' utf-8 ', ..... ' –

+1

होना चाहिए 'File.substr (-5) 'के बजाय,' path.extname (फ़ाइल)' का उपयोग क्यों नहीं करें? –

2

NodeJS फाइल सिस्टम मॉड्यूल

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

आप fs.readdir() का उपयोग सभी फ़ाइलों के नाम प्राप्त करने के लिए कर सकता है पर एक नजर डालें, तो पढ़ें। एचटीएमएल को 'डेटा-टेम्पलेट = होम' ढूंढने के लिए।

संबंधित मुद्दे