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

使用extras/coffee-script.js在浏览器中编译CoffeeScript,coffeescript,Coffeescript,我想创建一个简单的演示页面,使用在浏览器中编译CoffeeScript。但是,当我添加此源代码并在我的text/CoffeeScript标记中编写我的CoffeeScript时,它是在闭包中编译的,因此我无法访问浏览器控制台中的CoffeeScript函数 为了做到这一点,我需要这样做 <script type="text/coffeescript"> window.learning = -> "I am learning coffeescript" </sc

我想创建一个简单的演示页面,使用在浏览器中编译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>
我有一个例子。咖啡:

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";
};

这将从控制台全局可用。

无论何时调用
CoffeeScript.compile
函数,都可以传入
--bare
选项,非常类似于命令行:

CoffeeScript.compile(source, { bare: true });
如果查看缩小的源代码,最后您将看到:

CoffeeScript.run(a.innerHTML,s)
其中
a
元素,(因此
a.innerHTML
是源代码),
s
是选项,然后通过run-into
compile

CoffeeScript.run = function (e,t){return null==t&&(t={}),t.bare=!0,Function(compile(e,t))()}

如您所见,
t.bare
设置为
!0
(也称为
),因此
已设置

以下代码打印到控制台:我正在学习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>

window.learning=->
“我正在学习咖啡脚本”
setTimeout(function(){console.log(window.learning());},1000);

我从未真正调用CoffeeScript.compile。coffee-script.js为我处理了这一切。我不确定我需要将bare=true选项放在哪里,以便使学习功能成为全局的,并且可以从控制台访问。
<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>