在 scala js 中导入电子浏览器 window

import electron browser window in scala js

我想在 scala.js 中编写以下代码:

// In the main process.
const {BrowserWindow} = require('electron')

// Or use `remote` from the renderer process.
// const {BrowserWindow} = require('electron').remote

let win = new BrowserWindow({width: 800, height: 600})
win.on('closed', () => {
  win = null
})

// Load a remote URL
win.loadURL('https://github.com')

// Or load a local HTML file
win.loadURL(`file://${__dirname}/app/index.html`)

我们如何在 scala.js

中导入电子并实例化 BrowserWindow

随着Scala.js0.6.13+,你可以选择emit CommonJS modules。当你这样做时,你可以像这样导入 BrowserWindow

import scala.scalajs.js
import js.annotation._

@ScalaJSDefined
trait BrowserWindowOptions extends js.Object {
  def width: Double
  def height: Double
}

@js.native
@JSImport("electron", "BrowserWindow")
class BrowserWindow(options: BrowserWindowOptions) extends js.Object {
  ...
  def on(eventName: String, handler: js.Function0[Any]): Unit = js.native
  ...
}

var win = new BrowserWindow(new BrowserWindowOptions {
  val width = 800.0
  val height = 600.0
})
win.on("closed", { () =>
  win = null
})

您还必须更新 .gitignore 文件以防止它在 GitHub 上变得混乱。拿一个标准的 scala.js .gitignore 文件并去掉点(隐藏)文件。当然 .gitignore 除外。 build.sbt 将重建整个项目,因此绝对不需要推送 .idea 文件。这同样适用于 node_modulestarget 目录。对我、你和其他人来说,它们是鞭打和噪音。特别是对于有另一个 IDE 的人。请整理 GitHub 存储库。

实际上只有 /src/main/scala/CloudConnectionComponent.scala .gitignorebuild.sbtproject/build.properties' /project/plugins.sbt` 应该出现在 GitHub 上。