Coffeescript在函数中包装文件
Coffeescript wrapping files in a function
由于某种原因,coffeescript编译器在编译时将我所有的.coffee文件包装在一个函数中。例如,如果我输入test.coffee:
class TestClass
constructor: (@value) ->
printValue: () ->
alert(@value)
printAValue = () ->
test = new TestClass()
test.printValue()
然后得到test.js:
(function() {
var TestClass, printAValue;
TestClass = (function() {
function TestClass(value) {
this.value = value;
}
TestClass.prototype.printValue = function() {
return alert(this.value);
};
return TestClass;
})();
printAValue = function() {
var test;
test = new TestClass();
return test.printValue();
};
}).call(this);
我的简单的html文件不能工作:
<html>
<head>
<script src="test.js"></script>
</head>
<body onload="printAValue()">
</body>
</html>
我以前没有使用过太多的JS,我不会怀疑咖啡编译器,但它应该工作的方式吗?如何
关于在文件/模块之间共享jS代码,请参阅我的回答。另外,包装器函数的设计是为了防止无意的全局变量。您可以通过将--bare
传递给coffee编译器命令行工具来禁用它,但这是一个有充分理由的最佳实践。
永远不要在HTML中添加事件侦听器。将它们添加到JavaScript中,最好与定义事件处理程序的作用域相同。
printAValue = () ->
test = new TestClass()
test.printValue()
document.body.addEventListener('load', printAValue, false)
如果你绝对需要导出一些东西到全局作用域,导出到window对象:
window.printAValue = () ->
test = new TestClass()
test.printValue()
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 将angular javascript文件包装为“;(function(){..[js-code here]…})()&
- 安全地包装JS文件,这样当它们连接在一起时,它们仍然可以工作
- 用(function(){…}).call(this)包装文件,而用简单的()包装调用
- 包装java.net.UnnknownHostException:文件:未知错误原因:文件:PTC thingworx服
- I'我刚刚编译了一些dojo文件:如何在匿名包装器中调用函数
- JavaScript 流包装器,拦截 JS 文件内容
- 如何修改CSS或JS文件从“;具体化:具体化;Meteor包装
- 检测页面上的mp4文件并自动将它们包装在jwplayer中
- 如何在命名函数中包装整个JavaScript文件
- Coffeescript在函数中包装文件
- 围绕多个JS文件的代码包装单个事件?(铁路)
- 用同一文件中的另一个组件包装React组件
- 如何包含文件,并将其内容包装在“pre”标记中
- 用于 PDF 输出的 XML 包装器文件