文件夹变化监听(golang与nodejs)

一、Go 的 fsnotify 的使用

使用方法非常简单:
  • 先用 fsnotify 创建一个监听器;

  • 然后放到一个单独的 Goroutine 监听事件即可,通过 channel 的方式传递;

package main

import (
    "log"
    "github.com/fsnotify/fsnotify"
)

func main() {
    // 创建文件/目录监听器
    watcher, err := fsnotify.NewWatcher()
    if err != nil {
        log.Fatal(err)
    }
    defer watcher.Close()
    done := make(chan bool)
    go func() {
        for {
            select {
            case event, ok := <-watcher.Events:
                if !ok {
                    return
                }
                // 打印监听事件
                log.Println("event:", event)
            case _, ok := <-watcher.Errors:
                if !ok {
                    return
                }
            }
        }
    }()
    // 监听当前目录
    err = watcher.Add("./")
    if err != nil {
        log.Fatal(err)
    }
    <-done
}

二、nodejs的fs模块

使用方法:
  • 使用fs模块的watch方法,在回调函数内处理变化。
const fs = require("fs");

const folderPath = "***PATH***"; // ***PATH***替换为你想监视的文件夹路径

fs.watch(folderPath, (eventType, filename) => {
  // eventType 可能是 'rename' 或 'change'
  // filename 是发生变化的文件的名称

  console.log(`文件 ${filename} 发生了 ${eventType} 事件。`);
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用:根据这篇文章中的介绍,Motto是一个类似于Node.js的模块环境,可以在Go语言中运行JavaScript文件。你可以通过在终端中运行"go get github.com/ddliu/motto"来安装Motto。然后,你可以像在Node.js中一样使用require()函数来导入模块,并使用var关键字声明变量。例如,你可以使用underscore模块来进行函数式编程,使用data.json文件来读取数据。 然而,重要的是要指出的是,转换从GoLangNodeJS并不仅仅是一个技术性的问题,它还涉及到对于创业公司来说GoLang的实际可行性。在这篇文章中提到,虽然不是对比GoLangNodeJS的优劣,但是作者会讨论GoLang对于像他们这样的创业公司来说是否实用,并解释为什么他们决定放弃GoLang转向NodeJS。通过阅读这篇文章,你可以了解到更多关于这个决策的背景和原因。 总之,如果你想将GoLang转换为NodeJS,你可以考虑使用Motto来在Go语言中运行JavaScript文件。然而,需要注意的是这个决策不仅仅取决于技术因素,还需要考虑到你的具体需求和项目的特点。你可以阅读上述提到的文章来获取更多关于这个话题的信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [nodejs golang_为什么我们从GoLang迁移到NodeJS](https://blog.csdn.net/weixin_26737625/article/details/108259248)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [座右铭:golang中的Nodejs模块环境(基于otto)](https://download.csdn.net/download/weixin_42131414/15015972)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值