Javascript 可以用CoffeeScript编写Protovis代码吗?
我希望使用Protovis创建可视化,但是使用CoffeeScript而不是JavaScript编写(部分原因是Javascript 可以用CoffeeScript编写Protovis代码吗?,javascript,visualization,data-visualization,coffeescript,protovis,Javascript,Visualization,Data Visualization,Coffeescript,Protovis,我希望使用Protovis创建可视化,但是使用CoffeeScript而不是JavaScript编写(部分原因是(x)->x函数表示法,还有其他原因) 这可能吗?我将使用什么标记?是否需要特殊的脚本标记顺序 谢谢 编辑:如果可能的话,我希望避免手动编译步骤。最好只为开发目的使用CoffeeScript编写,然后编译成纯JS以包含在中 使用-c标志编译: coffee -c someFile.coffee 输出将是同一目录中的someFile.js。好的,我已经玩了一些,实际上我可以使用Prot
(x)->x
函数表示法,还有其他原因)
这可能吗?我将使用什么
标记?是否需要特殊的脚本标记顺序
谢谢
编辑:如果可能的话,我希望避免手动编译步骤。最好只为开发目的使用CoffeeScript编写,然后编译成纯JS以包含在
中
使用-c
标志编译:
coffee -c someFile.coffee
输出将是同一目录中的
someFile.js
。好的,我已经玩了一些,实际上我可以使用Protovis和Coffeescript,使用
标记,该标记可以选择性地具有src=“x.coffee”
属性。不需要外部编译。显然,这需要浏览器在每次加载页面时将Coffeescript编译为Javascript,但对于快速可视化任务,它对我来说是有效的。稍微澄清一下这个问题:Protovis代码是使用特殊标记编写的
<script type="text/javascript+protovis">
用于编译的CoffeeScript代码(或使用CoffeeScript.js
库进行开发的text/CoffeeScript
)
真正的技巧是将Protovis示例及其不熟悉的JS1.8语法翻译成CoffeeScript。比如说,
cell.add(pv.Dot)
.def("x", function(k0, k1) pv.Scale.linear(flowers, function(d) d[k0]).range(0, s))
.def("y", function(k0, k1) pv.Scale.linear(flowers, function(d) d[k1]).range(0, s))
使用缩写的JS 1.8匿名函数语法,其中function(x)x*x
是function(x){return x*x;}
的缩写。当然,这很容易翻译成咖啡脚本:
cell.add(pv.Dot)
.def("x", (k0, k1) -> pv.Scale.linear(flowers, (d) -> d[k0]).range(0, s))
.def("y", (k0, k1) -> pv.Scale.linear(flowers, (d) -> d[k1]).range(0, s))
如需进一步参考,请查看Mozilla的文档(Firefox是目前唯一一款本机支持JS 1.8的浏览器)。有关进一步解释,请参阅我的simul发布的答案。请注意,
text/coffeescript
脚本在所有其他脚本之后运行,无论您将标记放在何处,因为它们是通过Ajax从coffeescript.js
加载的。您可以使用Sinatra或类似的工具来呈现页面,并动态地将coffeescript转换为javascript。
cell.add(pv.Dot)
.def("x", (k0, k1) -> pv.Scale.linear(flowers, (d) -> d[k0]).range(0, s))
.def("y", (k0, k1) -> pv.Scale.linear(flowers, (d) -> d[k1]).range(0, s))