有关将Web应用程序源代码从Coffeescript迁移到javascript的建议

时间:2015-11-19 14:18:58

标签: javascript coffeescript

我继承了一个中等复杂的Rails应用程序的责任,这意味着学习Ruby和Rails,除了试图理解我自己没有写的很多代码。该项目还包含一个用Coffeescript编写的非平凡的Backbone.js应用程序。由于我将长期担任此项目的唯一开发人员,并且由于我不了解Coffeescript,因此我计划将整个源代码移至直接的Javascript。

我想知道这样做的最佳方法是什么。编译为javascript很容易,但是有很多重构可以使代码看起来很正常"。

通过更换

之类的东西来清理残骸
var a;
a = 1;

var a = 1;

很简单,或者甚至不值得打扰。我更担心项目的整体结构。 Coffeescript生成的文件类似于Backbone视图代码:

(function() {
  var extend = function(child, parent) {
    for (var key in parent)           {
        if (hasProp.call(parent, key)) child[key] = parent[key];
  } function ctor() {
        this.constructor = child;
      }
    ctor.prototype = parent.prototype;
    child.prototype = new ctor();
    child.__super__ = parent.prototype; return child;
  },
           hasProp = {}.hasOwnProperty;

App.Views.MyClass = (function(superClass) {
extend(MyClass, superClass);

function MyClass() {
  return MyClass.__super__.constructor.apply(this, arguments);
}
# rest of the code here...

    });
}).call(this);

我只想知道处理这个问题的理智方法是什么,而且我还没有找到任何类型的最佳实践"做我想做的事。

什么是最好的:只需将所有内容检入git并继续进行?使用extend的Backbone / Underscore版本而不是在每个文件的顶部重新定义相同的函数?完全使用不同的方法将所有单独的文件串在一起?

只是寻找一个大方向。我会弄清楚细节。

2 个答案:

答案 0 :(得分:1)

你最终会花费更多的时间和更多的努力(更不用说很可能会引入错误来尝试复制CoffeeScript中的超类或子类)。而不是尝试重写一个有效的CoffeeScript Web应用程序,只需深入了解并随身携带CoffeeScript,找到改变事物的必要性。停止抵制! CoffeeScript有很好的文档记录,已经证明它是一种非常有用的语言。学习它,它唯一的可怕因为它的新!

答案 1 :(得分:1)

如果您可以使用ES6,可以尝试使用decaffeinate之类的工具。

否则,如果您确定要移植到Javascript,那么手动重写比尝试修复生成的代码更好。

首先重新创建一个文件,然后编写单元测试。这不仅可以帮助您更好地理解项目,还可以学习Coffeescript(可能还有一些很好的技术)。

如果您阅读Coffeescript网站上的overview,它会提供两种语言之间的转换表。每次遇到您不理解的语法时,请在将其输入js2.coffee时查看它生成的内容。从Coffeescript迁移到ES6 here还有另一个很好的参考。