Skip to content

head.md доработки #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 2, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 3 additions & 21 deletions ru/head.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,9 @@

Аналогично внедрению ресурсов, управление заголовочными тегами следует той же идее: мы можем динамически присоединять данные к `context` рендерера в жизненном цикле компонента, а затем интерполировать эти данные в `template`.

Для этого нам нужно иметь доступ к контексту серверного рендеринга внутри вложенного компонента. Мы можем просто передать `context` в `createApp()` и предоставить к нему доступ через `$options` корневого экземпляра:
> С версии >=2.3.2 вы можете напрямую получать доступ к контексту SSR в компонентах через `this.$ssrContext`. В более ранних версиях вам потребуется вручную внедрять контекст SSR, передав его в `createApp()` и выставляя его на корневом экземплере `$options` — после чего, компоненты потомки смогут получить к нему доступ через `this.$root.$options.ssrContext`.

``` js
// app.js

export function createApp (ssrContext) {
// ...
const app = new Vue({
router,
store,
// все дочерние компоненты смогут получить доступ как this.$root.$options.ssrContext
ssrContext,
render: h => h(App)
})
// ...
}
```

Это также можно сделать с помощью `provide/inject`, но поскольку мы знаем, что это будет в `$root`, мы можем избежать затрат производительности.

С внедрением контекста, мы можем написать простую примесь для управления заголовком:
Мы можем написать простую примесь для управления заголовком:

``` js
// title-mixin.js
Expand All @@ -42,7 +24,7 @@ const serverTitleMixin = {
created () {
const title = getTitle(this)
if (title) {
this.$root.$options.ssrContext.title = title
this.$ssrContext.title = title
}
}
}
Expand Down