我想创建一个简单的演示页面,使用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";
};
这将从控制台全局提供。
答案 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
已设置好!