Skip to content

Commit d1e98d0

Browse files
satotakumikazupon
authored andcommitted
Translate basic.md (#32)
* Translate basic.md via GitLocalize * Translate basic.md via GitLocalize * Translate basic.md via GitLocalize * Translate basic.md via GitLocalize
1 parent d30ee3f commit d1e98d0

File tree

1 file changed

+142
-0
lines changed

1 file changed

+142
-0
lines changed

Diff for: ja/basic.md

+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
# 基本的な使い方
2+
3+
## インストール
4+
5+
```bash
6+
npm install vue vue-server-renderer --save
7+
```
8+
9+
このガイドでは NPM を使って説明していきますが [Yarn](https://yarnpkg.com/en/) でも大丈夫です。
10+
11+
#### 注意
12+
13+
- Node.jsのバージョンは6以上を使用することを推奨します
14+
- `vue-server-renderer``vue` のバージョンは一致している必要があります
15+
- `vue-server-renderer` はNode.jsのネイティブモジュールに依存しているため、Node.jsでのみ使用できます。 私たちは、将来的に他のJavaScriptランタイムで実行できるよりシンプルなビルドを提供するかもしれません。
16+
17+
## Vue インスタンスをレンダリング
18+
19+
```js
20+
// ステップ 1: Vue インスタンスを作成
21+
const Vue = require('vue')
22+
const app = new Vue({
23+
template: `<div>Hello World</div>`
24+
})
25+
// ステップ 2: レンダラを作成
26+
const renderer = require('vue-server-renderer').createRenderer()
27+
// ステップ 3: Vue インスタンスをHTMLに描画
28+
renderer.renderToString(app, (err, html) => {
29+
if (err) throw err
30+
console.log(html)
31+
// => <div data-server-rendered="true">hello world</div>
32+
})
33+
```
34+
35+
## サーバと連携する
36+
37+
Node.js で作られたサーバで使う場合はとても簡単です。例えば [Express](https://expressjs.com/):
38+
39+
```bash
40+
npm install express --save
41+
```
42+
43+
---
44+
45+
```js
46+
const Vue = require('vue')
47+
const server = require('express')()
48+
const renderer = require('vue-server-renderer').createRenderer()
49+
server.get('*', (req, res) => {
50+
const app = new Vue({
51+
data: {
52+
url: req.url
53+
},
54+
template: `<div>The visited URL is: {{ url }}</div>`
55+
})
56+
renderer.renderToString(app, (err, html) => {
57+
if (err) {
58+
res.status(500).end('Internal Server Error')
59+
return
60+
}
61+
res.end(`
62+
<!DOCTYPE html>
63+
<html lang="en">
64+
<head><title>Hello</title></head>
65+
<body>${html}</body>
66+
</html>
67+
`)
68+
})
69+
})
70+
server.listen(8080)
71+
```
72+
73+
## ページテンプレートを使用する
74+
75+
Vueアプリを描画する際、レンダラはアプリのマークアップのみを生成します。この例では、出力を余計なHTMLページシェルでラップする必要がありました。
76+
77+
これをシンプル化するために、レンダラの作成時にページテンプレートを直接提供することができます。ほとんどの場合、ページテンプレートを単独のファイルに記述します。 例 `index.template.html`:
78+
79+
```html
80+
<!DOCTYPE html>
81+
<html lang="en">
82+
<head><title>Hello</title></head>
83+
<body>
84+
<!--vue-ssr-outlet-->
85+
</body>
86+
</html>
87+
```
88+
89+
`<!--vue-ssr-outlet-->` コメントに注目してみてください。 -- これはあなたのアプリケーションのマークアップが注入される場所です。
90+
91+
ファイルを読み込みVueレンダラに渡すことができます。
92+
93+
```js
94+
const renderer = createRenderer({
95+
template: require('fs').readFileSync('./index.template.html', 'utf-8')
96+
})
97+
renderer.renderToString(app, (err, html) => {
98+
console.log(html) // will be the full page with app content injected.
99+
})
100+
```
101+
102+
### テンプレート展開
103+
104+
テンプレートはシンプルな展開にも対応しています。 次のようなテンプレートであれば:
105+
106+
```html
107+
<html>
108+
<head>
109+
<title>{{ title }}</title>
110+
{{{ meta }}}
111+
</head>
112+
<body>
113+
<!--vue-ssr-outlet-->
114+
</body>
115+
</html>
116+
```
117+
118+
`renderToString` の第2引数として "描画コンテキストオブジェクト"(render context object) を渡すことで展開データを提供することができます
119+
120+
```js
121+
const context = {
122+
title: 'hello',
123+
meta: `
124+
<meta ...>
125+
<meta ...>
126+
`
127+
}
128+
renderer.renderToString(app, context, (err, html) => {
129+
// ページタイトルは "hello" になり、
130+
// メタタグが注入されます。
131+
})
132+
```
133+
134+
`context` オブジェクトもVueアプリインスタンスと共有することができ、コンポーネントがテンプレート展開のためにデータを動的に追加することができます。
135+
136+
さらに、テンプレートは次のような高度な機能をサポートしています:
137+
138+
- `*.vue` コンポーネントを使用する際の、重要なCSSの自動注入
139+
- `clientManifest` を使用する際の、アセットリンクとリソースヒントの自動注入
140+
- クライアントサイドハイドレーションのためにVuexの状態を埋め込む際にXSS防止の自動注入
141+
142+
関連する概念については、後でこのガイドで紹介します。

0 commit comments

Comments
 (0)