Запуск FIgwheel с Express.JS

Бег lein figwheelНасколько я понимаю, запускается простой статический хост-сервер (через кольцо) за кулисами на порту 3449. Это работает на моей системе.

Проблема в том, что я размещаю свои собственные файлы через node.js в порту 3000, Когда я запускаю figwheel, а затем запускаю свой сервер express.js, изменение моих файлов переднего плана причудливо влияет на оба порта одинаково (т. Е. При обновлении файла обе страницы немедленно перерисовываются).

Вопрос: Но как это возможно, если figwheel ничего не знает о порте express.js 3000 сервер? И, в любом случае, является ли это наилучшим способом использования figwheel с моим собственным экспресс-сервером (т. Е. Иметь два запущенных экземпляра, один по умолчанию на 3449 и мой собственный порт на 3000)?

1 ответ

Решение

На странице запущен JavaScript, созданный из ClojureScript. В сборку входит клиентский код figwheel. Код, который поступает от клиента figwheel, открывает соединение через веб-сокет в заранее определенном месте. Неважно, где находится страница, javascript будет пытаться подключиться к предопределенной конечной точке веб-сокета. Таким образом, если вы загрузите страницу с сервера на 3000, веб-сокет все еще будет установлен для процесса сервера, который вы создали с помощью lein figwheel, Важным моментом является то, что есть код клиента figwheel и сервер figwheel. Сервер figwheel следит за файловой системой и сообщает о любых соединениях веб-сокетов, когда файлы изменяются. Клиент figwheel просто подключается к известной веб-розетке и слушает инструкции по перезагрузке артефактов. Поэтому вам не нужно использовать figwheel для обслуживания статического контента, как вы уже обнаружили.

Что касается "это лучший способ?" Ну, это полностью зависит от ваших целей. Конечно, это прекрасно работает, поэтому, если есть какое-то преимущество в запуске обоих, сделайте это! С другой стороны, зачем запускать экспресс-сервер, если он вам не нужен?

Одно из обстоятельств, при котором использование двух серверов выгодно, - это когда вы полагаетесь на функциональность на стороне сервера, которая не подходит для использования figwheel в качестве хоста. Это может быть связано с развертыванием (может быть, вы не хотите использовать обработчик кольца в качестве основного сервера) или техническим ограничением (мне нравится использовать httpkit для веб-сокетов, и на самом деле нет хорошего способа запустить их из обработчик кольца). Но, как вы указали, вы можете использовать figwheel для быстрой перезагрузки разработки, даже если вы не используете его для обслуживания файлов или сервисов.

Очевидно, что сервер figwheel должен следить за правильными файлами, поэтому убедитесь, что figwheel настроен для просмотра правильных каталогов.

Другие вопросы по тегам