Имам ли нужда от webpack-dev-сървър, ако използвам възлов сървър като express

Следвам някои уроци за създаване на изоморфно приложение с express и react. Бъркам с webpack-dev-сървъра.

Урокът за webpack казва за webpack-dev-сървъра:

Това свързва малък експресен сървър на localhost:8080, който обслужва вашите статични активи, както и пакета (компилиран автоматично).

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

Тъй като имам експресен сървър, наистина ли имам нужда от webpack-dev-сървър? Или какви са предимствата и недостатъците от използването му? И ако искам да използвам react-hot-loader, необходим ли е webpack-dev-сървърът?


person Brick Yang    schedule 28.10.2015    source източник


Отговори (1)


Тъй като имам експресен сървър, наистина ли имам нужда от webpack-dev-сървър?

Да и не. Можете да използвате хибриден подход, който по същество настройва webpack-dev-сървъра като прокси. Имате своя експресен сървър, който обслужва всичко с изключение на активи. Ако това е актив, заявката се препраща/проксира към сървъра на webpack-dev. Вижте отговора тук за повече подробности: Как да позволим на webpack-dev-сървър да разрешава входни точки от react-router

Като алтернатива можете да използвате webpack-dev-middleware и webpack-hot-middleware вместо това, ако не искате да се занимавате с цялата объркана прокси логика и да имате работещи 2 сървъра. Вижте примера тук: https://github.com/glenjamin/webpack-hot-middleware/blob/master/example/server.js

какви са предимствата и недостатъците от използването му?

Презареждане на живо и смяна на модула на горещ режим. Много полезна функция за развитие според мен

И ако искам да използвам react-hot-loader, необходим ли е webpack-dev-сървърът?

Не, работи върху интерфейса за подмяна на горещ модул на Webpack. Можете да създадете свой собствен „горещ сървър“, ако искате. Клиентът на 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-server

person trekforever    schedule 28.10.2015
comment
Мерси! Мога ли да кажа, че най-добрата практика за използване на react-hot-loader е да се използва междинният софтуер, който споменахте? Ами ако вземем предвид производствената среда? Не мисля, че имам нужда от презареждане на живо в това, нали? Така че трябва ли да изтрия кодовете на мидълуера? - person Brick Yang; 28.10.2015
comment
react-hot-loader се амортизира, така че ще разгледам github.com/gaearon/react- transform-hmr (от същия автор). Да, не се нуждаете от презареждане на живо за производство, така че във вашия server.js просто бих проверил условно env. Ако е разработка, използвайте междинния софтуер. в противен случай просто пропуснете това. - person trekforever; 28.10.2015
comment
Благодаря за изчерпателния отговор! След като имате това, какво правите в производството? - person Madara's Ghost; 10.10.2016
comment
@BrickYang Работя с приложения Rails v3 и Rails v4 на Phusion Passenger (в производствена среда). Ако трябваше да създам приложение Rails 5.1 в моята кутия за разработка (Ubuntu) и да използвам Webpack, защо localhost не може да обслужва активи? Защо е необходим webpack-dev-сървър? - person Chris; 02.06.2017
comment
@Chris Не съм запознат с Rails, но сега използвам webpack-dev-server. Вие наистина не създавате никакъв файл на диск в dev env, така че няма такъв файл, който може да бъде обслужван в localhost. Webpack-dev-сървърът генерира и обслужва файловете в паметта. Преди да разгърнете приложението, трябва да стартирате webpack веднъж, за да създадете реални файлове на диск за pro env. - person Brick Yang; 02.06.2017