CommonJS 与 JSON?

CommonJS vs JSON?

我需要在不使用另一个 NPM 包的情况下向我的 JSON 添加注释,所以我想将 module.exports = 添加到我的 JSON 文件的开头,这样它就变成了我可以以完全相同的方式使用的 CommonJS 模块(带有普通的 JS 对象)。这样做时我需要权衡取舍吗?

你当然可以这样做:

const data = require('myfile.json');

文件中有 JSON 数据:

{"someProp": "someValue"}

或者,您可以这样做:

const data = require('mfile.js');

文件中有这个:

module.exports = {"someProp": "someValue"};

一个是模块文件。一个是 JSON 文件。这实际上仅取决于您希望它成为什么,或者该文件是否有任何其他客户期望它是一种或另一种方式。尽管 CommonJS 模块可以包含更多类型的数据、评论等,但两种方式都没有具体的优点或缺点……因为 JSON 对其中的内容有很大的限制。如果您遵循适当的格式规则,两者都可以很好地处理核心数据。

如果您想向数据添加 Javascript 注释,那么您不能在 JSON 中执行此操作,因此您需要将其作为一个模块,并且这样做没有什么特别的缺点。

注意,要使 require() 自动解析 JSON,它必须具有 .json 文件扩展名。要将其解析为 Javascript CommonJS 模块,它不能具有 .json 文件扩展名。