美文网首页前端大杂烩
使用 fs 模块的推荐方法

使用 fs 模块的推荐方法

作者: lio_zero | 来源:发表于2022-05-05 18:16 被阅读0次

    在编写使用 fs 模块的 Node.js 脚本时,我通常使用 util.promisify 方法来保证文件系统方法。基于 Promise 的方法允许使用 async/await,这使得代码更容易掌握和阅读。

    从 Node.js 11 开始,fs 模块在 promises 属性中提供了 promisified 方法

    // 旧的方法使用 util.promisify
    const { readFile } = require('fs')
    const { promisify } = require('util')
    const promisifiedReadFile = promisify(readFile)
    
    promisifiedReadFile(__filename, { encoding: 'utf8' }).then((data) =>
      console.log(data)
    )
    
    // 使用基于 promise 的 fs 的新方法
    const { readFile } = require('fs').promises
    readFile(__filename, { encoding: 'utf8' }).then((data) => console.log(data))
    

    使用 promises 属性,您现在可以跳过将回调转换为 promise 的步骤,无需使用 util.promisify。这对于扁平化一些源代码并使用 async/await 是个好消息!

    fs/promises 从 Node.js 14 开始可用

    从 Node.js 14 开始,fs 模块提供了两种使用基于 promises 的文件系统的方法。这些 promises 可以通过 require('fs').promisesrequire('fs/promises') 获得。

    // 从 Node.js v14 开始:使用基于 Promise 的 fs 方法
    const { readFile } = require('fs/promises')
    
    readFile(__filename, { encoding: 'utf8' }).then((data) => console.log(data))
    

    Node.js 的维护者们对于 /promises 路径方式来公开更多现有模块的基于 promise 的方法表示赞成。

    后面的 Node.js 版本也遵循了这种做法。

    更多资料

    Node.js 文件系统模块

    相关文章

      网友评论

        本文标题:使用 fs 模块的推荐方法

        本文链接:https://www.haomeiwen.com/subject/rxroyrtx.html