Node.js 使用Express.JS运行FIgwheel

Node.js 使用Express.JS运行FIgwheel,node.js,express,clojure,clojurescript,figwheel,Node.js,Express,Clojure,Clojurescript,Figwheel,据我所知,运行lein figwheel,在后台端口3449处启动一个简单的静态托管服务器(通过ring)。这对我的系统有效 问题是我正在通过端口3000的node.js托管我自己的文件。当我运行figwheel,然后启动我的express.js服务器时,更改前端文件会对两个端口产生奇怪的影响(即,更新文件会导致两个页面立即重新呈现) 问题:但是如果figwheel对express.js端口3000服务器一无所知,这怎么可能呢?而且,在任何情况下,这是将figwheel与我自己的express服

据我所知,运行
lein figwheel
,在后台端口3449处启动一个简单的静态托管服务器(通过ring)。这对我的系统有效

问题是我正在通过端口
3000
的node.js托管我自己的文件。当我运行figwheel,然后启动我的express.js服务器时,更改前端文件会对两个端口产生奇怪的影响(即,更新文件会导致两个页面立即重新呈现)


问题:但是如果figwheel对express.js端口
3000
服务器一无所知,这怎么可能呢?而且,在任何情况下,这是将figwheel与我自己的express服务器一起使用的最佳方式吗(即,运行两个实例,一个默认值为3449,我自己的端口为3000)?

页面正在运行从ClojureScript构建的javascript。构建包括figwheel客户端代码。来自figwheel客户端的代码正在打开到预定义位置的websocket连接。无论页面位于何处,javascript都会尝试连接到预定义的websocket端点。因此,如果您在3000上从服务器加载页面,websocket仍然会建立到您使用
lein figwheel
创建的服务器进程。重要的是有figwheel客户端代码和figwheel服务器。figwheel服务器正在监视文件系统,并在文件更改时通知所有websocket连接。figwheel客户端只是连接到一个已知的websocket,并监听重新加载工件的指令。因此,正如您已经发现的,您不需要使用figwheel来提供静态内容

至于“这是最好的方式吗?”这完全取决于你的目标。当然,它工作得很好,所以如果两者都运行有一些好处的话,那就试试吧!另一方面,如果不需要,为什么要运行express server

运行2台服务器的一种情况是,您依赖的服务器端功能与使用figwheel作为主机不匹配。这可能是由于部署(可能您不想将环处理程序用作主服务器)或技术限制(我喜欢将httpkit用于websockets,而且还没有从环处理程序运行它们的好方法)。但是,正如您所指出的,您仍然可以使用figwheel进行快速开发重新加载,即使您不使用它来提供文件或服务

显然,figwheel服务器需要查看正确的文件,因此请确保figwheel配置为查看正确的目录。

figwheel没有运行“静态托管服务器”,它通过websocket进行通信,并通过客户端代码使用该数据更新前端