1

Running lein figwheel,据我了解,在 3449 端口在幕后启动了一个简单的静态托管服务器(通过环)。这适用于我的系统。

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

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

4

1 回答 1

2

该页面正在运行从 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 配置为观察正确的目录。

于 2016-02-29T03:27:17.080 回答