【发布时间】:2014-07-06 13:25:56
【问题描述】:
我正在用 CoffeeScript 编写一个应用程序,其中主要对象声明如下:
App =
Models: {}
Views: {}
Collections: {}
start: ->
console.log('started')
null
require ['models/question', 'views/question'], ->
new App().start()
null
这段代码编译成这样的javascript:
(function() {
var App;
App = {
Models: {},
Views: {},
Collections: {},
start: function() {
console.log('started');
return null;
}
};
require(['models/question', 'views/question'], function() {
new App().start();
return null;
});
}).call(this);
在该程序的“必需”模型代码中,Coffeescript 及其编译如下所示:
#Coffeescript
App.Model.Question = Backbone.Model.extend(
defaults : ->
question: "How're you"
)
//Javascript
(function() {
App.Model.Question = Backbone.Model.extend({
defaults: function() {
return {
question: "How're you"
};
}
});
}).call(this);
由于coffeescript 的编译方式,编译后的代码中没有全局变量。因此,当 Question 模型页面加载时,它会引发错误:在浏览器控制台中:
Uncaught ReferenceError: App is not defined
我不确定如何解决这个问题,因为我的项目中的模块之间会有很多引用。如何确保跨模块的可见性 - 在使用咖啡脚本时。
【问题讨论】: