Javascript 具有监控功能的动态网站

Javascript 具有监控功能的动态网站,javascript,monitoring,Javascript,Monitoring,我想创建一个网站,监控同一个域上的文本文件,并在文本文件更改时自动更新段落。我能用什么好主意 我觉得让一个JavaScript文件运行一个监视文件的循环不是一个好的实践,所以任何其他建议都是很好的 如果您在客户端执行此操作,则无法自动访问用户文件系统。您需要使用对话框打开文件,然后选择文件 拥有文件后,可以使用文件的lastModified属性检查文件的修改时间。如果存储对该文件的引用,则可以创建一个间隔,该间隔将在文件更改时每x检查一次 一个全局变量,用于跟踪最近的文件修改日期(以便稍后我们可

我想创建一个网站,监控同一个域上的文本文件,并在文本文件更改时自动更新段落。我能用什么好主意


我觉得让一个JavaScript文件运行一个监视文件的循环不是一个好的实践,所以任何其他建议都是很好的

如果您在客户端执行此操作,则无法自动访问用户文件系统。您需要使用对话框打开文件,然后选择文件

拥有文件后,可以使用文件的
lastModified
属性检查文件的修改时间。如果存储对该文件的引用,则可以创建一个间隔,该间隔将在文件更改时每x检查一次

一个全局变量,用于跟踪最近的文件修改日期(以便稍后我们可以比较是否不同)

然后,当选择文件时,您希望获取文件并设置
lastModificationDate
属性并开始间隔

file = input.files[0];
lastModificationDate = file.lastModified;
setInterval(checkFile, 500);
您的
checkFile
函数如下所示:

var file = input.files && input.files[0];
if (file && lastModificationDate && file.lastModified.getTime() != lastMod.getTime()) {
   lastModificationDate = file.lastModified;
   // Do something else, file was modified
}
上述功能是使用HTML5文件API实现的,您可以阅读更多信息


对于Node.js解决方案: 使用内置于Nodes文件系统模块核心的
fs.watchFile
功能

fs.watchFile('message.text', (curr, prev) => {
  console.log(`the current mtime is: ${curr.mtime}`);
  console.log(`the previous mtime was: ${prev.mtime}`);
});
mtime
是上面代码段中的修改时间。与上面针对客户端的解决方案不同,一旦实现,此函数将在文件更改时自动启动

你可以阅读更多关于

fs.watchFile('message.text', (curr, prev) => {
  console.log(`the current mtime is: ${curr.mtime}`);
  console.log(`the previous mtime was: ${prev.mtime}`);
});