2015-10-28 3 views
42

Я следую некоторым учебникам, чтобы построить изоморфное приложение с выражением и реагированием. Я смущаюсь с webpack-dev-сервером.Нужен ли мне webpack-dev-сервер, если я использую сервер узлов, например express

WebPack учебник говорит о WebPack-DEV-сервере:

Это связывает небольшой экспресс-сервер на локальном хосте: 8080, который служит статичные активы, а также расслоение (скомпилированные автоматически).

Он автоматически обновляет страницу браузера при перекомпиляции пакета (socket.io). Откройте http://localhost:8080/webpack-dev-server/bundle в своем браузере.

Поскольку у меня есть экспресс-сервер, мне действительно нужен webpack-dev-сервер? Или в чем преимущества и недостатки его использования? И если я хочу использовать hot-loader, нужен ли webpack-dev-сервер?

ответ

54

Поскольку у меня есть экспресс-сервер, мне действительно нужен webpack-dev-сервер?

Да и нет. Вы можете использовать гибридный подход, который по существу настраивает webpack-dev-сервер как прокси-сервер. У вас есть экспресс-сервер, обслуживающий все, кроме активов. Если это актив, запрос отправляется/проксируется на webpack-dev-сервер. Смотрите ответ здесь для получения более подробной информации: How to allow for webpack-dev-server to allow entry points from react-router

В качестве альтернативы, вы можете использовать webpack-dev-middleware и webpack-hot-middleware вместо этого, если вы не хотите иметь дело со всей грязной логикой проксирования и иметь 2 серверов под управлением. См. Пример здесь: https://github.com/glenjamin/webpack-hot-middleware/blob/master/example/server.js

В чем преимущества и недостатки его использования?

Живая перезагрузка и замена горячего модуля. Очень полезная функция для разработки на мой взгляд

И если я хочу использовать реактивный нагреватель, нужен ли webpack-dev-сервер?

Нет, он работает на верхней части веб-страницы hot module replacement interface. Вы можете создать свой собственный «горячий сервер», если хотите. Клиент webpack-dev-server просто слушает socket.io для горячих обновлений и вызывает postMessage (https://github.com/webpack/webpack-dev-server/blob/8e8f540b2f7b35f7b6c3ce616a7fd2215aaa6eea/client/index.js#L64-L67), который затем подбирается сервером https://github.com/webpack/webpack/blob/bac9b48bfb0f7dd9732f2faafb43ebb22ee2a2a7/hot/only-dev-server.js#L59-L67.

Или я рекомендую, чтобы вы могли просто использовать webpack-dev-middleware и webpack-hot-middleware, которые я упомянул выше. Таким образом, вам не нужно беспокоиться о логике прокси-сервера, и вы можете легко интегрировать горячую перезагрузку в существующий экспресс-сервер без необходимости использования webpack-dev-сервера

+0

Thx! Итак, могу ли я сказать, что наилучшая практика использования реактора с горячей загрузкой заключается в использовании упомянутых вами средних продуктов? Что, если рассматривать производство? Я не думаю, что мне нужна живая перезагрузка, верно? Так что я должен удалить коды middlewares? –

+0

реакция-hot-loader становится обесцененной, поэтому я бы посмотрел https://github.com/gaearon/react-transform-hmr (это тот же автор). Да, вам не нужна живая перезагрузка для производства, поэтому в вашем server.js я бы просто условно проверил env. Если это разработка, используйте промежуточное ПО. иначе просто пропустите это. – trekforever

+0

Thnx. Я принял этот ответ. –

Смежные вопросы