我继承了一个中等复杂的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版本而不是在每个文件的顶部重新定义相同的函数?完全使用不同的方法将所有单独的文件串在一起?
只是寻找一个大方向。我会弄清楚细节。
答案 0 :(得分:1)
你最终会花费更多的时间和更多的努力(更不用说很可能会引入错误来尝试复制CoffeeScript中的超类或子类)。而不是尝试重写一个有效的CoffeeScript Web应用程序,只需深入了解并随身携带CoffeeScript,找到改变事物的必要性。停止抵制! CoffeeScript有很好的文档记录,已经证明它是一种非常有用的语言。学习它,它唯一的可怕因为它的新!
答案 1 :(得分:1)
如果您可以使用ES6,可以尝试使用decaffeinate之类的工具。
否则,如果您确定要移植到Javascript,那么手动重写比尝试修复生成的代码更好。
首先重新创建一个文件,然后编写单元测试。这不仅可以帮助您更好地理解项目,还可以学习Coffeescript(可能还有一些很好的技术)。
如果您阅读Coffeescript网站上的overview,它会提供两种语言之间的转换表。每次遇到您不理解的语法时,请在将其输入js2.coffee时查看它生成的内容。从Coffeescript迁移到ES6 here还有另一个很好的参考。