|
@@ -42,3 +42,50 @@ if (module.hot) {
|
|
```
|
|
```
|
|
|
|
|
|
[Пример counter-hot](https://github.com/vuejs/vuex/tree/dev/examples/counter-hot) позволяет посмотреть на горячую перезагрузку в реальной жизни.
|
|
[Пример counter-hot](https://github.com/vuejs/vuex/tree/dev/examples/counter-hot) позволяет посмотреть на горячую перезагрузку в реальной жизни.
|
|
|
|
+
|
|
|
|
+## Горячая перезагрузка динамических модулей
|
|
|
|
+
|
|
|
|
+Если в приложении используются только модули, то можно использовать `require.context` для загрузки и горячей перезагрузки всех модулей динамически.
|
|
|
|
+
|
|
|
|
+```js
|
|
|
|
+// store.js
|
|
|
|
+import Vue from 'vue'
|
|
|
|
+import Vuex from 'vuex'
|
|
|
|
+
|
|
|
|
+// Загружаем все модули
|
|
|
|
+function loadModules() {
|
|
|
|
+ const context = require.context("./modules", false, /([a-z_]+)\.js$/i)
|
|
|
|
+
|
|
|
|
+ const modules = context
|
|
|
|
+ .keys()
|
|
|
|
+ .map((key) => ({ key, name: key.match(/([a-z_]+)\.js$/i)[1] }))
|
|
|
|
+ .reduce(
|
|
|
|
+ (modules, { key, name }) => ({
|
|
|
|
+ ...modules,
|
|
|
|
+ [name]: context(key).default
|
|
|
|
+ }),
|
|
|
|
+ {}
|
|
|
|
+ )
|
|
|
|
+
|
|
|
|
+ return { context, modules }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const { context, modules } = loadModules()
|
|
|
|
+
|
|
|
|
+Vue.use(Vuex)
|
|
|
|
+
|
|
|
|
+const store = new Vuex.Store({
|
|
|
|
+ modules
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+if (module.hot) {
|
|
|
|
+ // Горячая перезагрузка при любых изменениях модуля
|
|
|
|
+ module.hot.accept(context.id, () => {
|
|
|
|
+ const { modules } = loadModules()
|
|
|
|
+
|
|
|
|
+ store.hotUpdate({
|
|
|
|
+ modules
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+}
|
|
|
|
+```
|