在我的 React 网络应用程序中,如何在 "Website last updated" 字段中显示正确的日期?

In my React webapp, how do I show the right date in a "Website last updated" field?

我正在整理一个演示应用程序,我经常在其中添加内容和新的 React 组件。我刚刚添加了组件 react-timeago 以显示对站点进行最新更改的时间。现在我想给那个组件正确的时间戳。

在最坏的情况下,我想我可以显示服务器上次启动的时间。我在本地使用 webpack-dev-server。我还没有上线这个网站,但是当我上线时它可能(像 webpack-dev-server)是一个基于 express 的解决方案。因此,一种选择可能是对服务器启动条目的快速生成的日志文件执行 grep。解决这个问题会在一定程度上解决问题。值得注意的是,添加内容不需要重新启动,因此此解决方案可能并不理想。据推测,我可以为此使用某种中间件(记录器或其他方式)。

另一种可能的方法可能是某种目录监视机制,它记录上次进行更改的时间。例如,我应该以某种方式将其连接到 redux 状态吗?可用的组件太多,很难知道将哪些组件放在一起(以我在这方面的有限经验)来实现这一目标。

我的站点是一个轻量级的单寻呼机,我不愿意在这个阶段在它后面添加任何类型的数据存储,因为这对我来说似乎有点过分了。

我还可以提到我正在使用 webpack 2。除此之外,它是一个非常基本的 React 应用程序,包含几个组件。

总而言之,我正在寻找添加的内容(例如 mp3 文件)或更改的代码文件,并将该时间戳放入我的 react-timeago 组件中。

正如@Joe Clay 所建议的那样,我使用 Webpack.DefinePlugin 在重启时用当前时间填充常量。这很好用,我在 webpack.config.js 中添加了以下几行:

    var dateString = new Date().toDateString();
    ...
    new webpack.DefinePlugin({ 
        LAST_UPDATED: JSON.stringify(dateString)
    })

并且能够访问我的 React 组件中的常量:

<div style={{marginTop:120}}>A sinewave440hz demo site.<br/>
  This site was updated 
  <TimeAgo date={LAST_UPDATED} formatter={formatter}/>.
</div>

如果在某处记录了资产的先前状态,也可以在启动时记录资产的变化。