Я написал облегченную живую перезагрузку для vue. js. Оперативная перезагрузка для шаблонов компонентов (скомпилированных для рендеринга) работает должным образом. Я сталкиваюсь с дилеммой, чтобы заменить весь компонент без перезагрузки страницы.
У меня есть собственная функция require(name) {...}
для браузера, чтобы изменить компонент:
const componentCache = {}
function modifyComponent(name, component, renderChanged, componentChanged) {
if (!componentCache[name] || renderChanged) {
componentCache[name] = {render: component.render, staticRenderFns: component.staticRenderFns}
component.render = renderProxy
}
if (componentChanged) {
location.reload()
} else {
forceUpdateComponents()
}
return component
}
Для отслеживания всех компонентов, я использую mixin {beforeCreate, beforeDestroy}
, поэтому renderProxy
и forceUpdateComponents
работают как положено.
Как заменить весь компонент, если реквизиты, некоторые методы или вычисленные свойства были изменены без перезагрузки всей страницы?
Я мог бы использовать функциональный компонент в качестве прокси для «перезагрузки» обновленного компонента, но, возможно, есть более элегантный способ добиться этого.