Comments 15
Vue.observable()
Т.е. теперь в Vue можно как в MobX или Knockout? Наконец то!
круто, спасибо за статью, плюсануть не могу к сожалению, все хорошеет библиотечка, это радует.
Немного странная логика «serverPrefetch()». Код выполняется на сервере, но при этом участок кода с этим хуком всё-равно попадает с билд для браузера.
Да, но в реальных проектах вряд ли кто-то станет прямо писать serverPrefetch() внутри компонента.
В примере кода, который я привел, логика загрузки повторяется два раза, в serverPrefetch() и mounted():
В некоторых компонентах понадобится писать похожую логику и в хуке updated().
Поэтому очевидное решение — своя абстракция над serverPrefetch() и mounted() через миксин или плагин.
В примере кода, который я привел, логика загрузки повторяется два раза, в serverPrefetch() и mounted():
export default {
/* ... */
async serverPrefetch() {
await this.fetchItem();
},
mounted() {
if (!this.item) {
this.fetchItem();
}
},
};
В некоторых компонентах понадобится писать похожую логику и в хуке updated().
Поэтому очевидное решение — своя абстракция над serverPrefetch() и mounted() через миксин или плагин.
Ну, изначально суть идеи была в том, чтоб на сервере обращаться напрямую к модели через ORM, а не выполнять http-запросы для получения данных. По этому подумал что метод, выполняемый только на сервере должен выпилиться при сборке из клиенсткой части.
Хмм, грязная идея, мне нравится.
Тогда можно написать свой babel-плагин, который выпилит все методы serverPrefetch() из экспортированных объектов во vue-файлах.
Тогда можно написать свой babel-плагин, который выпилит все методы serverPrefetch() из экспортированных объектов во vue-файлах.
Это уже костыли получатся, если не задумано разработчиком Vue и не будет поддерживаться в будущем :)
И тут есть ещё один гвоздь, собственно, для чего и затеивался серверный рендеринг — исполнение одних и тех-же компонентов как на клиенте, так и на сервере. Это не будет иметь нужного эффекта, если придётся поддерживать 2 разных интерфейса — для клиента и для сервера. Решением возможно могла бы послужить какая-нибудь универсальная ORM, у которой всё это под капотом, но это уже совсем другая история.
И тут есть ещё один гвоздь, собственно, для чего и затеивался серверный рендеринг — исполнение одних и тех-же компонентов как на клиенте, так и на сервере. Это не будет иметь нужного эффекта, если придётся поддерживать 2 разных интерфейса — для клиента и для сервера. Решением возможно могла бы послужить какая-нибудь универсальная ORM, у которой всё это под капотом, но это уже совсем другая история.
npm i vue@2.6.0-beta.2
Нужно ещё обновить vue-server-renderer и vue-template-compiler до соответствующей версии.
С такими темпами добавления нового синтаксиса в шаблонах скоро не останется валидных способов определения HTML атрибутов
Все больше становится похож на angular
Sign up to leave a comment.
Обзор Vue.js 2.6