如果我在项目中使用 JSON 数据,是否最好像这样使用 readFile:
var fs = require('fs');
var obj;
fs.readFile('file', 'utf8', function (err, data) {
if (err) throw err;
obj = JSON.parse(data);
});
或者只使用 require
var config = require('./file.json');
我曾尝试查找性能比较,但找不到。在这个post by FredKSchott作者深入研究了 require 函数,看起来它可以通过缓存提高性能,但它看起来是同步的,而 fs.readFile 是异步
最佳答案
两个主要区别:
require()
缓存结果,因此在后续使用require()
读取 JSON 时不会看到对 .json 文件的更改,除非结果从 require 缓存中明确删除。require()
是同步的,fs.readFile()
是异步的。当然,如果您想要同步行为(但不确定原因),您可以使用fs.readFileSync()
。
除此之外,您可以随心所欲地进行。
- 如果缓存是个问题(例如,您不想缓存),那么我会使用
fs.readFile()
。 - 如果缓存有好处,那么我会使用
require()
。 - 如果我明确想要异步行为,因为这不是在启动时完成的,而是在请求处理程序中完成的,那么我会使用
fs.readFile()
来保持异步响应服务器。 - 除了这两个之外,如果此代码在启动时运行,我会使用
require()
,因为它只是更少的代码,并且是 node.js 中内置的行为。
关于node.js - 使用 require 与使用 fs.readFile 从文件中获取 JSON 的优缺点是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32726562/