我正在研究 AMD 的coffeescript
组合require.js
。
问题是我必须为每个加载的模块返回一个值require.js
,我就这样做了。但是..coffeescript 帮助我并附加:(function() {
和}).call(this);
. 这破坏了我的代码。
main.js
require.config( {
paths: {
'backbone': 'libs/AMDbackbone-0.5.3',
'underscore': 'libs/underscore-1.2.2',
'text': 'libs/require/text',
'jquery': 'libs/jquery-1.7.1',
},
baseUrl: '/app'
} );
require(
['require', 'backbone', 'jquery', 'underscore' ],
function( require, Backbone, $, _ ) {
// framework loaded
require(
['require', 'app'],
function( require, app) {
return {};
} );
} );
app.js
define( [
'jquery',
'underscore',
'backbone',
'views/gameview',
], function( $, _, Backbone, GameView, ) {
"use strict";
window.app = {};
$(function(){
var app = window.app = _.extend({
views: {
GameView: new GameView
},
//code..
}, window.app);
//code...
return window.app;
} );
还有咖啡稿:
/views/gameview.coffee
define ["jquery", "underscore", "backbone"], ($, _, Backbone, RankView) ->
"use strict"
GameView = Backbone.View.extend()
GameView
翻译为:
/views/gameview.js
(function() {
define(["jquery", "underscore", "backbone"], function($, _, Backbone) {
"use strict";
var GameView;
GameView = Backbone.View.extend({...});
return GameView;
});
}).call(this);
但我想翻译成:
define(["jquery", "underscore", "backbone"], function($, _, Backbone) {
"use strict";
var GameView;
GameView = Backbone.View.extend({...});
return GameView;
});
在控制台中使用它会很好:var GameView = new app.views.GameView;
在控制台中。
我如何强制coffeescript编译器不这样做?有没有旗帜或其他东西?
再次:我只是想切断(function() {
-}).call(this);
它背后的 amd 代码并不重要,无论它是否是全球性的......
谢谢