Coffeescript 需要使用Visual Studio 2012中的插件设置咖啡脚本格式的帮助吗

Coffeescript 需要使用Visual Studio 2012中的插件设置咖啡脚本格式的帮助吗,coffeescript,Coffeescript,生成以下JavaScript的确切CofeeScript是什么: var AddArtist= function() { var addDiv, artistVal; addDiv = $("#artistname"); artistVal = $("#artistinput").val(); $(" <div id=\"artistname2\"><label>" + artistVal + "</label>

生成以下JavaScript的确切CofeeScript是什么:

var AddArtist= function() {
      var addDiv, artistVal;
      addDiv = $("#artistname");
      artistVal = $("#artistinput").val();
      $(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo(addDiv);
      return false;
    };
我试着用它来转换成咖啡

产生:

AddArtist = ->
  addDiv = undefined
  artistVal = undefined
  addDiv = $("#artistname")
  artistVal = $("#artistinput").val()
  $(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo addDiv
  false
当我将其粘贴到使用CofeeScript插件的Visual Studio中时,输出为:

(function() {
  var AddArtist;

  AddArtist = function() {
    var addDiv, artistVal;
    addDiv = $("#artistname");
    artistVal = $("#artistinput").val();
    $(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo(addDiv);
    return false;
  };

}).call(this);
因此,CoffeeScript插件将脚本包装到另一个函数中,因此AddArtister变量永远不会离开内部函数的范围

这会导致在我的网页上出现未捕获的引用错误AddArtister

现在的问题是使用Visual Studio插件,到底是什么样的Cofe脚本生成了下面的JavaScript

var AddArtist= function() {
      var addDiv, artistVal;
      addDiv = $("#artistname");
      artistVal = $("#artistinput").val();
      $(" <div id=\"artistname2\"><label>" + artistVal + "</label> /div>").appendTo(addDiv);
      return false;
    };

CoffeeScript将生成的JavaScript封装在函数包装器中,以防止出现以下情况:

-b、 -裸露 在不使用顶级函数安全包装器的情况下编译JavaScript

如果希望AddArtist位于全局范围内,则必须明确地将其放在其中:

@AddArtist = ->
  addDiv = $("#artistname")
  artistVal = $("#artistinput").val()
  $("<div id='artistname2'><label>#{artistVal}</label></div>").appendTo addDiv
  false
如果您只担心浏览器环境。我还清理了js2coffee对您的代码所做的其他一些事情

js2coffee还有其他一些bug,所以我建议您要么将工作JavaScript作为JavaScript,要么学习CoffeeScript并手动进行转换。CoffeeScript最终还是JavaScript,因此无需转换工作代码。如果您手动进行转换,您最终会更好地理解CoffeeScript,并且在翻译意图和功能而不仅仅是标记时,您将拥有更多惯用的CoffeeScript代码

window.AddArtist = -> ...