Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Electron 如何在github';电子骨架?_Electron - Fatal编程技术网

Electron 如何在github';电子骨架?

Electron 如何在github';电子骨架?,electron,Electron,在github的electron中,是否有内置的机制来包含部分html文件 例如,如果我用html设计布局 <body> <div> <ul><li>Menu Item 1</li><li>Menu Item 2</li></ul> </div> <div id="dynamic-content"> <!-- I w

在github的electron中,是否有内置的机制来包含部分html文件

例如,如果我用html设计布局

<body>
    <div>
        <ul><li>Menu Item 1</li><li>Menu Item 2</li></ul>
    </div>
    <div id="dynamic-content">
        <!-- I would like this content to be loaded from partial html files -->
    </div>
</body>

  • 菜单项1
  • 菜单项2

如何将不同文件中的内容放入id为“dynamic content”的div中?

有很多方法可以做到这一点。您根本没有提供任何关于何时加载动态内容的信息。我猜这是点击一个链接

当你用一个普通的网页来做这件事时,解决方案也不例外

给你一个提示:

  • 您还可以使用jQuery解决它
  • 或者也给了你这样做的可能性

为了补充前面的答案,我还没有找到一种内置的方法来包含部分文件,并在将它们加载到
浏览器窗口之前对其进行处理/渲染(或者换句话说,服务器端

但是使用现有的模板引擎非常容易,比如呈现HTML服务器端


我已经在一个类似的问题中演示了这一点。

我想你的问题已经得到了令人满意的回答。但是看到这个问题有很多观点,我想我应该给大家更多的信息:

标记的部分(片段、组件等)可以从两个角度加载到Electron中;客户端和服务器端

客户端

当您需要根据用户操作(例如,按下按钮)动态获取内容时

这在Electron中的工作原理与在任何浏览器中的工作原理相同(当然,除了您可以访问
文件:
协议)。您可以使用ajax。或者任何包含加载api的库(ajax的友好包装器)。所以jQuery、angular、mithril等都可以工作

例如:

$('#dynamic-content').load('file:///my-partial.html')
服务器端

当您想要提供模块化HTML(而不是延迟加载,例如,使用角度)时,可重用组件将其分离到自己的文件中

模块化标记对于大型应用程序来说是必须的。为此,您将使用某种模板引擎。EJS是一个非常受欢迎的好选择

对于服务器端模板,您有两个选项:

1) 预渲染

这可能不是一个选项,取决于您的用例。但是,如果您事先知道所有变量,就可以简单地编译和呈现每个条目文件,并将结果保存为html文件

使用ejs和节点
fs
模块的示例:

let template = fs.readFileSync('my-page.ejs')
let compiled = ejs.render(tpl)
fs.writeFileSync('my-page.html', compiled)
然后正常加载html文件,例如:

myBrowserWindow.loadURL('file:///my-page.html')
2) 截取
文件:
协议

这才是真正的交易。Electron附带专门为此设计的
协议
模块。下面是一个使用ejs的伪代码示例:

Intercept all file requests.
If the file is not a `.ejs` file, serve the file.
If the file is a `.ejs` file, render it and serve the result.
然后,您可以将ejs加载到您的核心内容:

myBrowserWindow.loadURL('file:///my-page.ejs')
我不会在这里包含协议拦截的完整代码示例,因为您可能不会自己实现它。相反,我建议您使用许多npm模块中的一个来实现这一点:

  • (披露:我是本模块的作者)

如果您想自己实现它,请查看的Electron文档。干杯

您也可以使用这种方法:


head.js:

var头=[
'',
'',
“应用程序”,
'',
]
对于(var x=0;x
您好,您能解释一下您的方法在这种情况下的优势吗?