我目前正在设计Electron的程序。该计划的关键部分之一是搜索选项。与其他网站类似,您可以在整个网站上搜索与您的查询相符的网页,我想在我的程序的“页面”/“html文件”中搜索,并让它显示搜索结果。优选地,一次显示一个字母,因此可以在键入时看到结果,但即使是搜索选项也可以。我只需要在我的程序页面内搜索,而不是在外部站点中搜索。我无法弄清楚如何开始实现这一点,因为Electron不支持PHP。我知道反应可以一次实时搜索,但我不知道如何搜索其他页面或如何解析它们进行搜索。任何使我走上正确轨道的建议,指南或框架都会有所帮助。谢谢!
编辑:我也知道webcontents.findInPage()函数,但它只搜索当前页面,而不是项目路径中的其他页面。如果我能找到实际搜索它们的方法,我可以手动搜索哪些页面。
答案 0 :(得分:0)
如果将所有页面存储在“视图”之类的目录中,则可以使用fs读取每个文件并搜索其内容。
我已经快速举例说明了你可以做的事情:
// The directory containing all your pages
let directoryToYourPagesOrHTMLFiles = "/your/directory/";
// Require fs so you can get all the files and file content
const fs = require("fs");
// Require html-to-text so you can parse the HTML in the files
// into text so you can search on the data easier
let htmlToText = require('html-to-text'); // npm install --save html-to-text
// Run this function when a user enters a character
function userTyped(inputValue) {
// Foreach file in the directory
fs.readdir(directoryToYourPagesOrHTMLFiles).forEach(filename => {
// Read the file contents
fs.readFile(directoryToYourPagesOrHTMLFiles + "/" + filename, "utf8", (err, data) => {
// If there was an error reading the file log it
if(err) {
console.log(err);
} else {
// If there was no error, parse the HTML into text
let text = htmlToText.fromString(data);
// Perform your search on the next using the inputValue
// Example Search:
if(text.indexOf(inputValue) > -1) {
// Display the page in your search results
displaySearchResult(directoryToYourPagesOrHTMLFiles + "/" + filename);
}
}
});
});
}
function displaySearchResult(pagePath) {
/*
Add the page to a results page
*/
}
我没有对此进行测试,因为它匆忙地完成了它,但它显示了你需要做的概念!
希望这能帮到你!