CocoaScript
CocoaScript 是一个桥接,提供在 JavaScript 中访问 Sketch 内部 API 和 macOS 框架的功能。
来自 CocoaScript 的 README
CocoaScript 构建在 Apple 的 JavaScriptCore 之上,与为 Safari 提供动力的 JavaScript 引擎相同。因此,当您使用 CocoaScript 编写代码时,实际上是在编写 JavaScript 代码。
CocoaScript 还包含一个桥接,使您可以从 JavaScript 访问 Apple 的 Cocoa 框架。这意味着除了标准的 JavaScript 库之外,您还可以使用大量优秀的类和函数。
语法
Objective-C 的方括号语法在 JavaScript 中转换为点语法。在内部,CocoaScript 创建不透明的 JavaScript 代理对象,这些对象具有以下属性
- Objective-C 属性导出到 JavaScript
- 获取器:
object.name()
- 设置器:
object.name = 'Sketch'
- 获取器:
- Objective-C 选择器作为 JavaScript 代理的方法公开。
:
转换为_
,最后一个下划线是可选的。- 使用下划线调用方法需要加倍:
sketch_method
变成sketch__method
- 选择器的每个组件都连接成一个没有分隔符的单个字符串。
Objective-C
[executeOperation:withObject:error:]
JavaScript
executeOperation_withObject_error()
指针
一些 Objective-C 选择器需要指针参数。由于 JavaScript 不支持通过引用传递对象,因此 CocoaScript 提供了 MOPointer
,这是一个代理对象,用于从变量创建引用。
let str = NSMutableString.alloc().init()
let pointer = MOPointer.alloc().initWithValue(str)
str.setString('Hello Sketch')
console.log(pointer.value())
str.appendString(' 👋')
console.log(pointer.value())
使用 macOS 框架
要使用 macOS 框架,需要先导入它。请注意,Foundation 和 CoreGraphics 默认导入。
framework('AVFoundation')
let url = NSURL.alloc().initWithString(
'https://cdn.sketchapp.com/assets/pages/home/prototyping-video1.mp4'
)
let asset = AVAsset.assetWithURL_(url)
console.log(asset)
相关资源
阅读有关如何使用 CocoaScript 和 macOS 框架的更多信息。
- Mocha
README
,请注意,Mocha 现在包含在 CocoaScript 中,但文档保留在原始存储库中。 - Apple 开发者文档
- 不是热狗——如何为 Sketch 构建一个 AI 驱动的插件 🌭