该页面正在运行从 ClojureScript 构建的 javascript。该构建包括figwheel客户端代码。来自 figwheel 客户端的代码正在打开一个到预定义位置的 websocket 连接。无论页面托管在哪里,javascript 都会尝试连接到预定义的 websocket 端点。因此,如果您从 3000 上的服务器加载页面,websocket 仍然建立到您创建的服务器进程lein figwheel
. 重要的是有 figwheel 客户端代码和 figwheel 服务器。figwheel 服务器正在监视文件系统并在文件更改时告诉任何 websocket 连接。figwheel 客户端只是连接到一个已知的 websocket 并监听重新加载工件的指令。因此,正如您已经发现的那样,您不需要使用 figwheel 来提供静态内容。
至于“这是最好的方法吗?” 那么这完全取决于你的目标。当然它的效果很好,所以如果同时运行两者都有一些优势,那就去吧!另一方面,如果您不需要它,为什么要运行快速服务器?
运行 2 个服务器有利的一种情况是,当您依赖的服务器端功能不适合使用 figwheel 作为主机时。这可能是由于部署(也许您不想使用环处理程序作为您的主服务器)或技术限制(我喜欢将 httpkit 用于 websockets,并且 afaik 没有从环处理程序)。但是,正如您所指出的,即使您不使用 figwheel 来提供文件或服务,您仍然可以使用它来快速重新加载开发。
显然,figwheel 服务器需要监视正确的文件,因此请确保将 figwheel 配置为观察正确的目录。