Javascript 可以用CoffeeScript编写Protovis代码吗?

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

我希望使用Protovis创建可视化,但是使用CoffeeScript而不是JavaScript编写(部分原因是
(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))