首页 > 解决方案 > 如何在 EJS 中使用文件系统函数?

问题描述

从 NodeJS 和 EJS 开始的第一天,我不明白如何处理获取mdate文件的(修改日期)并将其作为字符串添加到 EJS 中文件引用的末尾。

这就是我想要做的:

<link href="/css/mystylesheet.css?v=<%= mdate of mystylesheet.css %>" rel="stylesheet" type="text/css" />

我在一个名为的部分视图文件中使用上面的链接以及其他内容htmlhead.ejs,我想将其包含在所有视图中。

我怎样才能获得mystylesheet.css附加到href属性的文件的文件修改日期,所以它会是这样的(显示我目前在 ColdFusion 代码中是如何做到的):

 <link href="/css/mystylesheet.css?v=#DateTimeFormat(GetFileInfo(ExpandPath('/css/mystylesheet.css')).lastmodified, 'yymmddhhnnss')#" rel="stylesheet" type="text/css" />

哪个输出到浏览器:

<link href="/css/mystylesheet.css?v=20191106104000" rel="stylesheet" type="text/css" />

我正在使用 ExpressJS。

标签: node.jsexpressejs

解决方案


首先,您需要读取文件状态,而不是将其发送到 HTML。但是不要忘记,如果您没有缓存并且如果您有一个大文件,它可能会影响您的加载性能。

const ejs = require('ejs');
const stats = fs.statSync("/dir/file.txt");
const html = ejs.render('<link href="/css/mystylesheet.css?v=<%= time %>" rel="stylesheet" type="text/css" />', {time:stats.mtime.getTime()} );

推荐阅读