首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使ReasonML/Bucklescript输出ES5兼容代码

使ReasonML/Bucklescript输出ES5兼容代码
EN

Stack Overflow用户
提问于 2017-10-23 22:07:53
回答 1查看 314关注 0票数 0

在使用ReasonML和Bucklescript时,是否可以配置Bucklescript,这样就不会生成export语句?我更希望生成的代码可以像在浏览器中一样使用,即与ES5 (或ES6)兼容。

编辑:好的,在尝试更多工具链的同时,我意识到仅仅关闭export是不够的。见下面的例子:

代码语言:javascript
复制
function foo(x, y) {
  return x + y | 0;
}

var Test = /* module */[
  /* foo */foo
];

exports.Test = Test;

如果删除exports,则此代码将污染全局命名空间,并且从ES5兼容性的角度被简单地破坏。

编辑2:阅读巴克斯宾的博客,这似乎是不可能的:

一个OCaml模块编译成一个JavaScript模块(AMDJS、CommonJS或Google模块),没有名称损坏。

来源

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-23 23:54:17

BuckleScript可以以多种不同的模块格式输出模块,然后可以使用绑定器(如webpack或rollup )将模块与它们的依赖关系捆绑在一起。输出实际上并不打算作为独立的单元使用,因为在任何情况下,您所能做的都是相当有限的,因为标准库和运行时库是独立的模块。甚至像乘法这样琐碎的事情也会涉及到运行时库。

您可以将BuckleScript配置为输出es6模块,只要浏览器支持,这些模块就可以直接在浏览器中运行。但这仍然需要手动从bs平台安装中提取标准和运行时库。

模块格式是通过package-specs属性在bsconfig.json中配置的。

代码语言:javascript
复制
{
  ...
  "packages-specs": ["es6-global"] /* Or "es6" */
}

尽管如此,您实际上可以通过将[@@@bs.config { no_export }]放在文件的顶部来关闭导出。但由于上述原因,这是没有记录的,因为它在实践中的应用非常有限。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46899274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档