将 Scala.js 用于非网络、非 Node.js 应用程序涉及什么?

What is involved in using Scala.js for non-web, non-Node.js applications?

我已经使用 Scala.js 编写网页功能,并乐在其中。

我写了一些图形相关的函数,比如在Canvas上画图。我有兴趣将部分代码移植到 Adob​​e Illustrator 和 Photoshop。他们提供三种语言的脚本:(1) AppleScript,(2) JavaScript,和 (3) Visual Basic。当然,API 与 Canvas 有很大不同,它会提供许多我想利用的特定、强大的功能。

我的程序将被重写和扩展,因此开发将继续进行。我想知道我是否可以继续使用 Scala 进行开发,以及是否可以使用 Scala.js 为 Adob​​e 软件或任何使用 JavaScript 编写脚本的软件编写代码。

我想我必须为 Adob​​e 创建某种界面 API。那会涉及什么?该代码会用 Scala 编写吗?它会是 sbt 的插件吗?我需要了解多少 Scala 编译器的内部结构?

这样做值得吗,还是我应该选择在 JavaScript 发展? (我真的不想直接在JavaScript中写,因为我在浏览器中有过糟糕的体验,但我不能说我是这方面的专家。)

(请注意,我还不熟悉 Adob​​e API 的大部分内容...我现在正在调查。)

应该很简单。关键是您需要为您在 Illustrator 和 Photoshop 中关心的 API 构建门面——强类型的 Scala 描述。这并不是特别困难:您只需担心您实际想要调用的函数,并在 Scala 中描述函数签名。通过一些练习,这会变得非常容易——一旦您掌握了它,每个函数通常只需要一分钟或更少的时间。 (我维护 jQuery 门面,这是较大的门面之一,并且在我练习后的一个下午就完成了大部分工作。)

假设他们使用的是合理的标准 JavaScript,这可能是其中的大部分——您定义这些外观,编写 Scala.js 代码来使用它们,然后插入已编译的 JavaScript进入工具...