在Pete Hunt的Webpack中,如何使用此代码:
// definePlugin takes raw strings and inserts them, so you can put strings of JS if you want.
var definePlugin = new webpack.DefinePlugin({
__DEV__: JSON.stringify(JSON.parse(process.env.BUILD_DEV || 'true')),
__PRERELEASE__: JSON.stringify(JSON.parse(process.env.BUILD_PRERELEASE || 'false'))
});
JSON.stringify(JSON.parse(..))
这里需要什么?JSON字符串化/解析对于克隆对象以避免突变非常有用,但是它process.env.BUILD_DEV
是(并且只能是?)字符串。那么,为什么要使用它呢?
这是奇怪的代码。首先,克隆机制是:
JSON.parse(JSON.stringify(obj))
但是,您的代码是这样的:
JSON.stringify(JSON.parse(str))
因此,似乎正在尝试以困难的方式克隆JSON字符串。这很奇怪,因为字符串在Javascript中是不可变的,因此对同一字符串进行多次引用不会有危险。基础字符串不能更改。
我要说的是,这些额外的代码似乎是多余的和不必要的,除非以某种方式只是强制将valueprocess.env.BUILD_DEV
变为可以JSON.parse()
毫无例外地接受的东西,这似乎是测试该值的一种非常奇怪的方式。如果这是目的,则代码将更加清晰,只需显式地检查预期的法律价值,而不是像这样的未记录的副作用测试。另外,我们在这里看不到任何异常处理程序来处理不良数据,因此似乎不太可能是造成这种情况的原因。
我猜还有一个原因是将字符串标准化为规范格式,因为调用JSON.stringify()
解析结果将保证统一的字符串,无论原始字符串中可能有哪些转义字符。似乎没有任何评论为什么这样做是一种奇怪的做法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句