这很重要:通过webpack,您可以提供环境变量(通过DefinePlugin
或EnvironmentPlugin
),以便它们可以被process.env.MY_VAR
之类的代码使用。可以在构建时将它们与实际值内联。
但是我在尝试理性使用它们时遇到了麻烦。 Bucklescript具有Node.Process
模块,但是当您使用Node.Process##env
时,它会被转换为
var process = require("process")
var myVar = process.env["MY_VAR"]
因此它不会被webpack拾取并内联。那么,我可以用来实现将其移植到var myVar = process.env.MY_VAR
的目的是什么?
答案 0 :(得分:3)
实际上,我认为这不是%raw
的很好用例,而是宁愿使用普通的external
:
[@bs.val] external token : string = "process.env.TOKEN";
与%raw
相比,它有很多好处:
external
将检查它是否在语法上是有效的全局标识符。使用%raw
,一切都会顺利进行,并且不能保证它会产生正确的JavaScript。external
个。这意味着它将评估使用它的位置,以防例如在不同模块中值改变或不同的情况。它还可以防止间接全局变量的突变。也许这些都不是那么重要,但是与%raw
相比,使用external
并没有带来任何好处,所以也可以正确地使用它。