电子模板?

Templating in Electron?

这里是一个简单的问题,但我没有找到有用的资源。在 Electron 中可以进行模板化吗?使用 Jade 或 Handlebars 显示动态模板?我知道有一个 .loadURL() 需要一个静态 html 文件。

动态可以吗?

谢谢。

当然可以通过 运行 Electron 主进程中的本地服务器使用 Jade 或 Handlebars 进行动态模板化。但是我不推荐这样做,因为它有点倒退。 Electron 主要是一个前端框架,虽然 运行 本地服务器对某些事情有好处,但模板并不是其中之一。

大多数人使用 Angular 或 React 等前端 JS 框架。

你可以给electron-pug一个机会。 https://github.com/yan-foto/electron-pug

您可以通过protocol.registerBufferProtocol注册一个新的缓冲协议。

main.js

var electron = require('electron');
var app = electron.app;
var protocol = electron.protocol;
var BrowserWindow = electron.BrowserWindow;
var pug = require('pug');

var window;

app.on('ready', function () {

  // Define the `pug` scheme
  protocol.registerBufferProtocol('pug', function (request, callback) {
    var url = path.normalize(request.url.substr(7));
    var content = pug.renderFile(url);
    callback({
      mimeType: 'text/html',
      data: new Buffer(content)
    });
  });

  window = new BrowserWindow({width: 600, height: 600});

  // Load your file using the `pug` protocol
  window.loadURL(url.format({
    pathname: path.join(__dirname, 'index.pug'),
    protocol: 'pug:',
    slashes: true
  }));

});

index.pug

html
  head
    title My title
  body
    h1 Hello world!

可能来不及在此处添加,但认为这可能是值得的。我添加了一个包来处理从任何渲染器添加视图并处理资产路径。到目前为止,我刚刚添加了 ejs 渲染器,但计划添加 pug 和 haml 作为额外的默认渲染器,但扩展和添加您自己的渲染器也很容易。该包名为 electron-view-renderer https://www.npmjs.com/package/electron-view-renderer

希望这可以帮助像我们团队一样的人。它处于起步阶段,欢迎所有评论和贡献