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

标签 javascript coffeescript ecmascript-6

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

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

此迁移是否可以逐步完成,或者除了在一个版本中完成所有操作外别无选择?

webpack 是如何工作的(正确的加载器)?顺序是什么?是先把ES6转JS(或者coffee转JS)然后全部导入还是先导入文件再转JS?

最后,在类似的情况下,是否有一些最佳实践可以用 coffee script 和 ES6 编写代码?

最佳答案

我是最近研究脱咖啡因的主要人员。它已用于大型生产代码库,目前没有已知错误,因此它可能足够稳定供您使用。不过,您应该一次转换一小段代码而不是一次全部。

您可以通过在 module.rules(或 module.loaders for webpack 1).

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

可能一个好主意是转换一个或两个文件,并确保 eslint、babel 和其他 JavaScript 配置按照您希望的方式进行配置。从那里开始,您应该一次转换一个或两个文件的代码,并根据您的需要增加一次转换的文件数量,因为您对它更熟悉了。

一种方法是随着时间的推移慢慢将 CoffeeScript 文件转换为 JS,转换并清理您接触的文件。我在这种方法中看到的问题是,在您离开 CoffeeScript 之前可能需要很长时间。这取决于您的情况,但通常我会建议在越来越大的批处理中运行 decaffeinate,而不要过分关注手动清理,然后一旦代码库是 100% JavaScript,在您使用它们时手动清理文件。

前一段时间,我写了一些关于如何思考不同转化策略的想法,你可能会觉得有用: https://github.com/decaffeinate/decaffeinate/blob/master/docs/conversion-guide.md#converting-a-whole-project

关于javascript - 一个项目中的 Coffeescript 和 es6 - 实践中的迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43469484/

相关文章:

java - 是否有与 Javascript 的 with 语句等效的 Java?

javascript - 如何在 observableArray 中绑定(bind) json 字符串?

html - 离屏 Canvas 是否与普通 Canvas 一样多 "space"?

ruby-on-rails - 使用 Remotipart 解析错误

angular - 将对象数组转换为类实例

javascript - 我怎样才能轻松地等待元数据?

javascript - jQuery qTip - 从工具提示中链接到隐藏的 div

javascript - 如何跨 CoffeeScript 函数访问变量?

javascript - 如何使用带有导入的 Body Parser 而不是必需的? ES6

coffeescript - 从 CoffeeScript 迁移到 es6