使用extras / coffee-script.js在浏览器中编译CoffeeScript

时间:2013-05-23 01:34:23

标签: coffeescript

我想创建一个简单的演示页面,使用extras/coffee-script.js在浏览器中编译CoffeeScript。但是,当我添加此源并在我的text / coffeescript标记中编写我的CoffeeScript时,它会在闭包中编译,因此我无法访问浏览器控制台中的CoffeeScript函数。

为了做到这一点,我需要做

<script type="text/coffeescript">
  window.learning = ->
    "I am learning coffeescript"
</script>
<script type="text/javascript" src="js/vendors/coffee-script.js"></script>

这不适合我的演讲。我想添加bare = true选项,以便我可以访问浏览器控制台中的功能。我在extras/coffee-script.js中添加此选项的位置?

这是编译的js:

(function() {
  window.learning = function() {
    return "I am learning coffeescript";
  };
})

我有这个例子。咖啡:

learning = ->
  "I am learning coffeescript"

使用以下命令从命令行运行编译器:

coffee -c --bare example.coffee

编译为此example.js:

// Generated by CoffeeScript 1.6.2
var learning;                                                                   

learning = function() {
  return "I am learning coffeescript";
};

这将从控制台全局提供。

2 个答案:

答案 0 :(得分:3)

以下代码打印到控制台:我正在学习coffeescript

注意: window.learning 在全局范围的控制台中可用。

<html>
<body>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/coffee-script/1.1.2/coffee-script.min.js"></script>
<script type="text/coffeescript">
window.learning = ->
  "I am learning coffeescript"
</script>
<script type="text/javascript">
setTimeout(function(){ console.log(window.learning()); }, 1000);
</script>
</body>
</html>

答案 1 :(得分:2)

无论您何时调用CoffeeScript.compile函数,都可以传递--bare选项,就像命令行一样:

CoffeeScript.compile(source, { bare: true });

如果您查看缩小的来源,最后您会看到:

CoffeeScript.run(a.innerHTML,s)

其中a<script>元素,(所以a.innerHTML是源代码),s是选项,然后通过run {{1}传递}:

compile

如您所见,CoffeeScript.run = function (e,t){return null==t&&(t={}),t.bare=!0,Function(compile(e,t))()} 设置为t.bare(又名!0),因此true已设置好!