运行 图轮 Express.JS

Running FIgwheel with Express.JS

运行 lein figwheel,根据我的理解,在后台的 3449 端口启动了一个简单的静态托管服务器(通过环)。这在我的系统上有效。

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

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

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

至于"is this the best way?"那完全取决于你的目标。当然效果很好,所以如果 运行 两者都有一些优势,那就去吧!另一方面,如果不需要,为什么要 运行 快速服务器?

运行宁 2 服务器有利的一种情况是,当您依赖服务器端功能时,它不适合使用 figwheel 作为主机。这可能是由于部署(也许您不想将环处理程序用作主服务器)或技术限制(我喜欢将 httpkit 用于 websockets,而且 afaik 没有 [=22 的好方法=]从环处理程序中获取这些)。但是,正如您所指出的,您仍然可以使用 figwheel 进行快速开发重新加载,即使您没有使用它来提供文件或服务。

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