5

我对 JavaScript 中的宏很好奇,对babel-plugin-macrosSweet.js 之间的比较有点困惑。他们都解决同一个问题吗?它们都适合同一个工具链吗?

特别是,我希望将这些工具中的一个与 ES2015 代码一起使用,这些代码将使用 Webpack 和 Babel 转换为 ES5,并且不确定这些工具中的任何一个如何与转换交互。

4

1 回答 1

3

是的,它们解决了在 JavaScript 中“添加”宏的相同普遍问题,但它们确实以不同的方式处理它。首先,它们每个都有不同的定义宏的语法。我不清楚两者是否遵循某种标准。Sweet.js 是独立的,而 babel-plugin-macros 是一个 Babel 插件。我想可以将它们用作同一工具链的一部分,如果人们更喜欢 Sweet.js,他们可能会这样做。但是,如果已经使用 Babel,使用 Babel 插件可能会容易得多。

由于 JavaScript 似乎还没有标准,因此我会谨慎地对此进行深入研究。在使源映射正常工作方面可能会让人头疼,特别是如果将 Sweet.js 与 Babel 结合使用。

话虽如此,宏(尤其是 Sweet.js 语法)看起来像是对 JavaScript 的一个非常强大的增强。如果它们作为标准包含在 ECMAScript 中就好了。

更新

自从我的原始答案以来,我没有研究过任何细节,但似乎 Sweet.js 现在使用 Babel 作为后端,所以对于这个问题可能有比这个更好的答案。见http://sweetjs.org/doc/1.0/tutorial.html#_babel_backend

于 2016-03-22T12:58:14.947 回答