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 元素的内
- mybatis-plusmybatis 增强工具包,简化 CRUD 操作。 文档 http://baomidou.com 低代码组件库 http://aizuda.comJava00
- open-eBackupopen-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。HTML055
- 每日精选项目🔥🔥 12.27日推荐:解锁高效测试的新工具-Shortest🔥🔥 每日推荐行业内最新、增长最快的项目,快速了解行业最新热门项目动态~~018
- Cangjie-Examples本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。Cangjie042
- 毕方Talon工具本工具是一个端到端的工具,用于项目的生成IR并自动进行缺陷检测。Python039
- PDFMathTranslatePDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译,支持 Google/DeepL/Ollama/OpenAI 等服务,提供 CLI/GUI/DockerPython03
- advanced-javaAdvanced-Java是一个Java进阶教程,适合用于学习Java高级特性和编程技巧。特点:内容深入、实例丰富、适合进阶学习。JavaScript0103
- taro开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/TypeScript09
- Yi-CoderYi Coder 编程模型,小而强大的编程助手HTML012
- excelizehttps://github.com/xuri/excelize Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 OOXML 技术标准。可以使用它来读取、写入 XLSX 文件,相比较其他的开源类库,Excelize 支持操作带有数据透视表、切片器、图表与图片的 Excel 并支持向 Excel 中插入图片与创建简单图表,目前是 Go 开源项目中唯一支持复杂样式 XLSX 文件的类库,可应用于各类报表平台、云计算和边缘计算系统。Go02