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