Coffeescript和es6在一个项目中 - 实践中的迁移

时间:2017-04-18 10:19:24

标签: javascript coffeescript ecmascript-6

我用咖啡脚本编写了相当庞大的项目(生产包文件大约400kB)。我不知道如何计划迁移到ES6。我知道有像Decaffeinate这样的工具,但我不确定它是否真的适用于商业实践。

我想我可以在一个项目中使用ES6和咖啡,但是可以在咖啡中编写组件,导入和使用在ES6中编写的代码,反之亦然,并且所有工作都在生产中吗?

这种迁移是否可以逐步完成,或者除了在一个版本中执行所有操作外没有其他选择?

webpack如何工作(正确的加载程序)?什么是序列?它首先将ES6转换为JS(或者将咖啡转换为JS)然后先进行所有导入或导入文件然后转换为JS吗?

最后是否有一些最佳实践可以在类似的情况下用咖啡脚本和ES6编写代码?

1 个答案:

答案 0 :(得分:2)

我是最近从事脱咖啡因工作的主要人物。它已被用于大型生产代码库,目前没有已知的错误,因此它可能足够稳定,您可以使用它。不过,您应该一次将代码库转换为一小部分,而不是一次性转换。

您可以通过在module.rules(或module.loaders for webpack中为.coffee文件指定coffee-loader和babel-loader for babel-loader来配置webpack以允许同一项目中的CoffeeScript和JavaScript 1)。

如果您使用require语法,那么在CoffeeScript和JavaScript之间导入代码应该没有任何问题。如果您使用JS import / export语法,则在某些情况下,在CoffeeScript文件中需要JavaScript时,可能需要使用require('./foo').default。但在大多数情况下,互操作应该只使用import / export语法。

可能一个好主意是转换一个或两个文件,并确保按照您希望的方式配置eslint,babel和其他JavaScript配置。从那里,您应该一次转换一个或两个文件的代码,并在您更熟悉它时根据您的需求增加一次转换的文件数。

一种方法是随着时间的推移将CoffeeScript文件慢慢转换为JS,转换并清理您触摸的文件。我用这种方法看到的问题是,在你离开CoffeeScript之前可能需要很长时间。这取决于你的情况,但一般情况下我建议在更大和更大的批次中运行不含咖啡因而不过多关注手动清理,然后一旦代码库是100%JavaScript,在你使用它们时手动清理文件。

前段时间,我写了一些关于如何考虑不同转换策略的想法,您可能会发现这些策略很有用: https://github.com/decaffeinate/decaffeinate/blob/master/docs/conversion-guide.md#converting-a-whole-project