Node.js CommonJS vs JSON?

Node.js CommonJS vs JSON?,node.js,json,commonjs,Node.js,Json,Commonjs,我需要在不使用另一个NPM包的情况下向JSON添加注释,因此我想在JSON文件的开头添加module.exports=,以便它成为一个公共JS模块(带有一个普通JS对象),我可以以完全相同的方式使用它。在进行此操作时,我是否需要了解任何权衡?您当然可以这样做: const data = require('myfile.json'); 使用文件中的JSON数据: {"someProp": "someValue"} module.exports = {&q

我需要在不使用另一个NPM包的情况下向JSON添加注释,因此我想在JSON文件的开头添加
module.exports=
,以便它成为一个公共JS模块(带有一个普通JS对象),我可以以完全相同的方式使用它。在进行此操作时,我是否需要了解任何权衡?

您当然可以这样做:

const data = require('myfile.json');
使用文件中的JSON数据:

{"someProp": "someValue"}
module.exports = {"someProp": "someValue"};
或者,您可以这样做:

const data = require('mfile.js');
在文件中包含以下内容:

{"someProp": "someValue"}
module.exports = {"someProp": "someValue"};
一个是模块文件。一个是JSON文件。这实际上只取决于您希望它是什么,或者是否有此文件的任何其他客户端希望它是这样或那样。尽管CommonJS模块可以包含更多类型的数据、注释等,但这两种方法都没有特定的优点或缺点。。。因为JSON对其中可能包含的内容非常严格。如果遵循适当的格式规则,这两种方法对于核心数据都可以很好地工作

如果您想向数据添加Javascript注释,那么您不能在JSON中这样做,因此您需要将其作为一个模块,这样做没有任何具体的缺点


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

您当然可以这样做:

const data = require('myfile.json');
使用文件中的JSON数据:

{"someProp": "someValue"}
module.exports = {"someProp": "someValue"};
或者,您可以这样做:

const data = require('mfile.js');
在文件中包含以下内容:

{"someProp": "someValue"}
module.exports = {"someProp": "someValue"};
一个是模块文件。一个是JSON文件。这实际上只取决于您希望它是什么,或者是否有此文件的任何其他客户端希望它是这样或那样。尽管CommonJS模块可以包含更多类型的数据、注释等,但这两种方法都没有特定的优点或缺点。。。因为JSON对其中可能包含的内容非常严格。如果遵循适当的格式规则,这两种方法对于核心数据都可以很好地工作

如果您想向数据添加Javascript注释,那么您不能在JSON中这样做,因此您需要将其作为一个模块,这样做没有任何具体的缺点


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

那么它就不是json,不能以“完全相同的方式”使用。它在特定情况下有效吗?很明显,它是(?)的,它是一个JavaScript模块,而不是JSON。你只是把你的JSON文件变成一个模块文件。如果一个模块是你想要的,那么它就可以正常工作。如果JSON是您想要的,那么当有人试图加载和解析您的文件为JSON时,模块将无法工作,因为JSON将得到一个错误。完全相同的方式,我的意思是导入它的方式是相同的。那么它不是JSON,不能以“完全相同的方式”使用。它在特定情况下有效吗?很明显,它是(?)的,它是一个JavaScript模块,而不是JSON。你只是把你的JSON文件变成一个模块文件。如果一个模块是你想要的,那么它就可以正常工作。如果JSON是您想要的,那么模块将无法工作,因为有人试图加载和解析您的文件,因为JSON将导致错误。完全相同的方式,我的意思是导入它的方式是相同的。@ma1234-如果加载/解析时间对您至关重要,您必须对您的特定情况进行基准测试并对其进行度量。这将是两种完全不同的加载/解析机制。@ma1234-如果加载/解析时间对您至关重要,您必须对您的具体情况进行基准测试并对其进行度量。这将是两种完全不同的加载/解析机制。