在电子中加载本地html文件的简单方法

Loi*_*nen 8 javascript node.js electron

我一直在尝试将小型网络应用程序转换为电子应用程序。它工作得很好,除了我需要将一堆文件(.html)加载到主 DOM 中。在网络应用程序中,我刚刚使用$.get,但是我如何在电子中做到这一点?我尝试查看 DOC,但除了 IPC 管道之外,我找不到一种简单的方法来做到这一点(而且我不太明白)。

有人能指出我正确的方向吗?

编辑

我在这里澄清一下。我有一个启动 BrowserWindow 的主进程

mainWindow = new BrowserWindow({width: 800, height: 600})
Run Code Online (Sandbox Code Playgroud)

然后,在js通过<script>标签导入的文件中,我想在对话框中加载并附加一些文件:

$('.dialog').load('pages/hello.html', {})
Run Code Online (Sandbox Code Playgroud)

亲切的问候

And*_*dre 2

在 Electron 中你可以这样做fs.readFile

所以 :

const fs = require('fs');
const { promisify } = require('util');
const path = require('path');
const readFile = promisify(fs.readFile);

async function loadHTML(html){
    const render = await readFile(path.join(__dirname, html), 'utf-8');
    const parser = new DOMParser();
    const childrenArray = parser.parseFromString(render,'text/html').querySelector('body').childNodes;
    const frag = document.createDocumentFragment();
    childrenArray.forEach(item => {
        frag.appendChild(item);
    });
    document.body.appendChild(frag);
};

loadHTML('/path/to/my/index.html');
Run Code Online (Sandbox Code Playgroud)

如果我没有打字错误,它应该可以工作。它将文件作为字符串读取,因此您需要使用 DOMParser 解析该字符串。