如果您愿意灵活地采用哪种实现方法,那么 JavaScript for Automation (JXA) 1.0 就足够了。使用 JXA 1.0,您可能需要执行以下操作:
- 当 JXA-to-traditional-AppleEvents* 桥不起作用时,使用 JXA-to-ObjC 桥,
whose
当 JXA 1.0网桥查询不起作用时,创建一个 JavaScript 过滤器,
- 清楚地考虑何时使用 Objective-C 端、JXA-new-stuff-bridge、传统的 AppleEvents-bridge 或 JavaScript 端
* Apple 事件脚本自 1990 年代初从 Classic MacOS 7 开始就已存在。自 2006 年左右以来,Apple 建议考虑非 Apple 事件机制。
注意: Apple 事件并不总是最有效或最合适的进程间通信机制。OS X 提供了其他机制... [Apple, "Open Scripting Architecture"]
AppleScript (AS) 和 JavaScript for Automation (JXA) 套件都具有类似的自动化覆盖范围。AppleScript 桥梁更加成熟。JavaScriptCore 引擎有更多的内置功能。例如,正则表达式、encodeURI、JSON.stringify 等功能已经内置到 JavaScriptCore 中。
| 特色 | 作为 | 江西汽车 |
|-----------------------------|------------|------ -----|
| 脚本字典 | ✓ | ✓ |
| 标准脚本添加 | ✓ | ✓ |
| JavaScriptCore | - | ✓ |
| Apple 事件脚本 | ✓ | ✓ |
| 可可脚本 | ✓ | ✓ |
| C 函数绑定 | - | ✓ |
| 自动化支持 | ✓ | ✓ |
| #!外壳可运行 | ✓ | ✓ |
| 调试器 | 第三方 | - |
| 语言流行度 | 利基 | 广泛 |
这是否意味着我不必再学习 AppleScript 来编写脚本了……?
也许是的。
有时阅读现有的 AppleScript 示例会很有帮助。不过,有时扔掉 AppleScript 文件并在没有预先设想的方法的情况下开始会更有效率。
顺便说一句:您仍然需要了解使用的任何脚本语言的脚本字典。
从想要让应用程序自动执行操作的应用程序用户的角度来看?
作为应用程序用户,适用于自动化的 JavaScript 将使用前面提到的警告。特别是,考虑使用更多的 JavaScript 和 Cocoa 功能和更少的“Apple Events”功能。
例如,“传统的“系统事件”方法具有简单的优点,但使用$.NSFileManager
会显着提高性能。” 在一个用例$.NSFileManager
中,它比“系统事件”快 300%。[JXA-Cookbook Wiki:获取文件夹内容列表]
...关于应用程序开发人员(可可)?如果他们想让他们的应用程序可编写脚本,他们可以不学习 AppleScript 吗?
是和否。
开发人员控制的是通过脚本字典公开的对象和方法。此脚本字典 (.sdef) 必须由任何脚本语言(包括 Perl、Python 和 Ruby)访问。
因此,在幕后,开发人员提供了一个以 Objective-C/Cocoa 为中心且通常与脚本语言无关的应用程序脚本网关。
开发人员无法控制的是脚本桥(例如 Cocoa Scripting、Apple Events、ObjC、C Function Binding)。向Apple Bug Reporter报告脚本桥错误。
一个有责任心的开发人员将拥有一个测试套件,通过对其客户重要的所有脚本语言来运行应用程序脚本字典。良好的测试覆盖率将是自动化的,并且可能使用多种脚本语言。
... 已经知道 JavaScript,有什么好的理由我应该再学习 AppleScript 吗?
在产生更多的 JXA 文档之前,一些现有的 AppleScript 材料可能有助于解释脚本架构的各个方面。
现有的 AppleScript 自动化,具有熟练的 AppleScript 专业知识,在创收工作流中,可能希望在何时采用 JXA 时保持保守。
如果您已经了解 JavaScript 并且自动化是为您个人准备的,那么 JXA(带有注意事项)似乎是一个合理的选择。
更新:Apple 现在普遍发布了Mac 自动化脚本指南
2016 年 10 月 27 日修订。介绍使用 AppleScript 和 JavaScript 的新文档。
修订 2018-06-07。新文档介绍了使用 AppleScript 和 JavaScript 在 OS X 中简化工作流程和提高工作效率。
2019 年更新:Mac 自动化脚本指南现在是一个存档文档。