异步读取文件并将其显示在页面上

时间:2019-07-18 22:57:59

标签: node.js

您好,我正在尝试使用带有NodeJS的“ fs”模块显示项目文件夹中的图像,我需要读取目录中的所有图像并循环运行它们才能显示它们,但是我不确定这是正确的方法还是好的方法。预先感谢您的帮助。

我将我的readdir(异步读取文件)插入了我的首页路由。

const express = require('express');
const router = express.Router();
const fs = require('fs');

router.get('/', function(){ 
    fs.readdir('./assets/images/', (err, files) => {
        if(err) {
            throw err;
        }
        res.render('home', {
            files: files
        });
    });
});

module.exports = _router;

显示了图像,但是我没有人问我是否以正确的方式进行了操作。请帮忙,谢谢!

1 个答案:

答案 0 :(得分:1)

如果模板期望的是文件名数组,而这就是您要使用该模板呈现的内容,并且您希望在每次请求时都从目录中读取文件列表而没有任何缓存,那么这就是这种方式去做吧。

一些需要清理的问题:

  1. 您确实需要一些适当的错误处理。 if (err) throw err是错误的错误处理。您需要发送对请求的响应,响应状态可能为500,并且可能希望记录错误。

  2. 看起来您没有为创建的路由器导出相同的变量。您正在创建router,但正在导出_router

已清理代码:

const router = require('express').Router();
const fs = require('fs');

router.get('/', function(){ 
    fs.readdir('./assets/images/', (err, files) => {
        if(err) {
            console.log("fs.readdir error: ", err);
            res.sendStatus(500);
        } else {
            res.render('home', {files});
        }
    });
});

module.exports = router;