Electron 如何在github';电子骨架?
在github的electron中,是否有内置的机制来包含部分html文件 例如,如果我用html设计布局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
<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
您好,您能解释一下您的方法在这种情况下的优势吗?