使用Express.JS运行FIgwheel

根据我的理解,在我的系统上运行lein figwheel ,在lein figwheel启动一个简单的静态托pipe服务器(通过环)。

问题是我通过node.js在端口3000托pipe我自己的文件。 当我运行figwheel,然后启动我的express.js服务器,更改我的前端文件奇怪地影响两个端口相同(即更新文件导致两个页面立即重新渲染)。

问题:如果figwheel对express.js port 3000服务器没有任何了解,那怎么可能呢? 而且,在任何情况下,这是使用我自己的express服务器的最佳方式(即,有两个实例运行,一个默认为3449,而我自己的端口为3000)?

该页面正在运行由ClojureScript构build的JavaScript。 构build包括figwheel客户端代码。 来自飞轮客户端的代码打开websocket连接到预定义的位置。 页面托pipe的位置并不重要,JavaScript将尝试连接到预定义的websocket端点。 所以如果你从3000上的服务器加载页面, lein figwheel仍然build立到你用lein figwheel创build的服务器进程。 重要的一点是有图轮客户端代码和图轮服务器。 figwheel服务器正在监视文件系统,并在文件更改时告诉任何websocket连接。 figwheel客户端只是连接到一个已知的websocket,并听取指令重新载入文物。 所以你不需要使用figwheel来提供你的静态内容,就像你已经发现的那样。

至于“这是最好的办法吗?” 那完全取决于你的目标。 当然,它运作的很好,所以如果两者都有一些优势,那就去吧! 另一方面,为什么要运行一个快递服务器,如果你不需要它?

运行2台服务器的一种情况是有利的,那就是当你依赖于服务器端function时,不适合使用图轮作为主机。 这可能是由于部署(也许你不想使用响铃处理程序作为你的主服务器),或技术限制(我喜欢使用httpkit的websockets,和afaik没有一个很好的方式来运行这些从一个戒指处理程序)。 但是,正如你所指出的那样,即使你不用它来提供文件或服务,仍然可以使用figwheel来快速开发重新加载。

显然,图轮服务器需要注意正确的文件,所以请确保configuration轮图来观察正确的目录。