javascript - Coffeescript 编译变体(coffeescript.org 与 Coffee-rails)

标签 javascript ruby-on-rails compilation coffeescript

我正在尝试在coffeescript中编写一个简单的github API调用,但遇到了coffeescript.org和coffee-rails gem之间无法解释的不一致问题。我已经检查了制表符/空格的混合次数,次数超出了我的计数,并且感觉一定有一些微妙或愚蠢的东西我错过了。

原始代码

$ ->
  gistids = ['5100088']
  for gistid in gistids
    $.ajax
      url: 'https://api.github.com/gists/'+gistid,
      type: 'GET',
      dataType: 'jsonp'
    .success (gistdata) ->
      console.log(gistdata.data.files)
    .fail (e) ->
      console.log(e)

Coffeescript.org 编译

它很高兴地在 Coffeescript.org 上编译为以下内容(并且当通过控制台运行时,其功能完全符合预期)。

$(function() {
  var gistid, gistids, _i, _len, _results;
  gistids = ['5100088'];
  _results = [];
  for (_i = 0, _len = gistids.length; _i < _len; _i++) {
    gistid = gistids[_i];
    _results.push($.ajax({
      url: 'https://api.github.com/gists/' + gistid,
      type: 'GET',
      dataType: 'jsonp'
    }).success(function(gistdata) {
      return console.log(gistdata.data.files);
    }).fail(function(e) {
      return console.log(e);
    }));
  }
  return _results;
});

Rails-coffee gem 编译(这是我的输出)

替代编译显然注定会失败,而且似乎与我想要实现的目标相差甚远。看起来 for 循环正在尝试按照您在 eat food for food in ['toast', 'cheese', 'wine'] 中所期望的方式执行内容> 类型语法?

如果您使用另一个在线“尝试 CoffeeScript ”类型的网站,例如http://www.compileonline.com/try_coffeescript_online.php,也会输出此代码

  $(function() {
    var gistid, gistids, _i, _len, _ref, _results;
    _ref = gistids($.ajax({
      url: 'https://api.github.com/gists/' + gistid,
      type: 'GET',
      dataType: 'jsonp'.success(function(gistdata) {
        return console.log(gistdata.data.files).fail(function(e) {
          return console.log(e);
        });
      })
    }));
    _results = [];
    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      gistid = _ref[_i];
      _results.push(gistids = ['5100088']);
    }
    return _results;
  });

我错过了什么?正在使用的版本之间是否存在重大变化、编译标志差异、被忽略的小语法错误,或者我完全错误了?

最佳答案

这不再是一个问题,但我还没有接近找到其变化原因的答案。

我能够更改并重新编译代码,更改反射(reflect)在代码中(仍然错误编译)。我决定在另一个 CoffeeScript 文件中手动重新输入代码,效果非常好。然后,我复制/粘贴了重新输入的代码,它在另一个文件中仍然有效。

然后,我将现有的 CoffeeScript 文件中的内容交换到我遇到问题的文件,但它甚至无法编译。我重命名了该文件,认为可能存在一些我没有意识到的命名限制,并且它开始正确编译。然后我把文件名改回来,它仍然可以完美编译。请注意,上面我提到编译正在进行更改更新,只是编译不正确(它不是旧版本)。

这里奇怪的是,我能够撤消所有更改并恢复有问题的代码。将其复制到compileronline 仍然会导致相同的问题,但复制新代码效果很好。我对新旧代码进行了差异比较,结果报告没有差异,尽管上述内容完全可重复。

我只能假设这是一个空白/字符问题,没有在差异中显示,尽管第一次手动重新输入似乎没有解决它,直到文件已更改。我已经向世界大喊了这件事的不公正,我需要继续前进,但如果有人对此有更充分的理由,我会非常感兴趣。

关于javascript - Coffeescript 编译变体(coffeescript.org 与 Coffee-rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23189367/

相关文章:

javascript - react-hot-loader 的 webpack 输出文件去哪里了?

javascript - 一个 Cookie 中包含更多行

ruby-on-rails - 带有 ActiveRecord 的哈希数组

c - 为什么我在 3D 中计算欧几里得距离的 Julia 实现比我的 C 实现更快

javascript - 如何从json获取动态路径?

ruby-on-rails - Postgresql 适配器 (pg) : could not connect to server

ruby-on-rails - Rails 3.0 移动站点

windows - 如何让OpenCV在Windows下工作?

c - 我在尝试编译我的代码时收到编译错误

javascript - 如何使乒乓球运动