我是一个组合的coffeescript和require.js的AMD。
问题是,我必须为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;
} );和coffeescript:
/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); --它背后的和代码并不那么重要,不管是全局的还是非全局的。
谢谢
发布于 2013-02-02 18:05:32
在编译咖啡文件时,可以使用--bare标志:
-b,--bare在没有顶层函数安全包装器的情况下编译JavaScript .
https://stackoverflow.com/questions/14663461
复制相似问题