SpacePen 技术文档
本文档旨在帮助用户详细了解并使用 SpacePen 库,内容包括安装指南、项目使用说明以及项目 API 使用文档。
1. 安装指南
SpacePen 是一个不再维护的库。版本 5.x 设计为直接包含在 1.0 兼容的 Atom 包中。如果您需要 SpacePen 3.x,它在 Atom Core 中使用,请查看 3.x 分支。
2. 项目的使用说明
SpacePen 是一个强大但最小化的客户端视图框架,适用于 CoffeeScript。它将“视图”和“控制器”合并为一个单一的 jQuery 对象,其标记是用类似于 Ruby 中的 Markaby 的嵌入式 DSL 表示的。
基础使用
视图对象从 View 类扩展,并在 @content 类方法中有 HTML 内容的嵌入式标记 DSL:
class Spacecraft extends View
@content: ->
@div =>
@h1 "Spacecraft"
@ol =>
@li "Apollo"
@li "Soyuz"
@li "Space Shuttle"
视图继承自 jQuery 的原型,因此构建视图时可以像使用 $(...) 创建的 DOM 片段一样调用 jQuery 方法。
view = new Spacecraft
view.find('ol').append('<li>Star Destroyer</li>')
view.on 'click', 'li', ->
alert "They clicked on #{$(this).text()}"
SpacePen 视图比普通的 jQuery 片段更强大,因为它们允许定义自定义方法:
class Spacecraft extends View
@content: -> ...
addSpacecraft: (name) ->
@find('ol').append "<li>#{name}</li>"
还可以在构造时传递参数,这些参数会传递给 @content 方法和视图构造器。
class Spacecraft extends View
@content: (params) ->
@div =>
@h1 params.title
@ol =>
@li name for name in params.spacecraft
view = new Spacecraft(title: "Space Weapons", spacecraft: ["TIE Fighter", "Death Star", "Warbird"])
可以使用 super 优雅地覆盖 jQuery 原型的方法:
class Spacecraft extends View
@content: -> ...
hide: ->
console.log "Hiding Spacecraft List"
super()
如果覆盖视图类的构造器,确保调用 super。或者,可以定义一个 initialize 方法,构造器会自动调用它,并传递构造器的参数。
class Spacecraft extends View
@content: -> ...
initialize: (params) ->
@title = params.title
出口和事件
SpacePen 会自动为具有 outlet 属性的任何元素创建命名引用。例如,如果 ol 元素具有 outlet=list 属性,视图对象将有一个指向 ol 元素 jQuery 包装器的 list 条目。
class Spacecraft extends View
@content: ->
@div =>
@h1 "Spacecraft"
@ol outlet: "list", =>
@li "Apollo"
@li "Soyuz"
@li "Space Shuttle"
addSpacecraft: (name) ->
@list.append("<li>#{name}</li>")
元素还可以具有事件名称属性,其值引用自定义方法。例如,如果一个 button 元素有一个 click=launchSpacecraft 属性,那么当点击按钮时,SpacePen 将在按钮的父视图上调用 launchSpacecraft 方法:
class Spacecraft extends View
@content: ->
@div =>
@h1 "Spacecraft"
@ol =>
@li click: 'launchSpacecraft', "Saturn V"
launchSpacecraft: (event, element) ->
console.log "Preparing #{element.name} for launch!"
3. 项目 API 使用文档
标记 DSL 细节
标记方法 (@div, @h1, 等.)
如前所示,标记 DSL 非常简单。从 @content 类方法或它调用的任何方法中,只需调用名为所需 HTML 标签的实例方法。可以传递三种类型的参数给标记方法:
-
字符串:字符串将进行 HTML 转义并用作生成标签的文本内容。
-
哈希:键值对将用作生成标签的属性。
-
函数(使用
=>绑定):函数将在打开和关闭标签之间调用,以生成 HTML 元素的内
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust062
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Hy3-previewHy3 preview 是由腾讯混元团队研发的2950亿参数混合专家(Mixture-of-Experts, MoE)模型,包含210亿激活参数和38亿MTP层参数。Hy3 preview是在我们重构的基础设施上训练的首款模型,也是目前发布的性能最强的模型。该模型在复杂推理、指令遵循、上下文学习、代码生成及智能体任务等方面均实现了显著提升。Python00