2

我正在研究 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 代码并不重要,无论它是否是全球性的......

谢谢

4

1 回答 1

2

您可以--bare在编译咖啡文件时使用该标志:

-b,--bare 在没有顶级函数安全包装器的情况下编译 JavaScript。

于 2013-02-02T18:05:32.820 回答