Skip to content

Commit 821df0c

Browse files
tejitakposva
authored andcommitted
Translate 2.0 docs for essentials (ja) (#685)
* Translate 2.0 docs for summary and essentials (ja) * reflect translation review comments * fix Japanese typo * fix typo according to PR #693
1 parent bbabb8f commit 821df0c

11 files changed

+544
-0
lines changed

docs/ja/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
SUMMARY.md

docs/ja/SUMMARY.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# vue-router 2
2+
3+
> 注意: [email protected] は Vue 2.x のみで動作します。
4+
5+
- [0.7 のドキュメントをお探しですか?](https://github.com/vuejs/vue-router/tree/1.0/docs/en)
6+
- [リリースノート](https://github.com/vuejs/vue-router/releases)
7+
- [インストール](installation.md)
8+
- 基本的な使い方
9+
- [はじめに](essentials/getting-started.md)
10+
- [動的ルートマッチング](essentials/dynamic-matching.md)
11+
- [ネストされたルート](essentials/nested-routes.md)
12+
- [プログラムによるナビゲーション](essentials/navigation.md)
13+
- [名前付きルート](essentials/named-routes.md)
14+
- [名前付きビュー](essentials/named-views.md)
15+
- [リダイレクトとエイリアス](essentials/redirect-and-alias.md)
16+
- [HTML5 History モード](essentials/history-mode.md)
17+
- 高度な使い方
18+
- [ナビゲーションガード](advanced/navigation-guards.md)
19+
- [ルートメタフィールド](advanced/meta.md)
20+
- [トランジション](advanced/transitions.md)
21+
- [データの取得](advanced/data-fetching.md)
22+
- [スクロールの振る舞い](advanced/scroll-behavior.md)
23+
- [遅延ローディング](advanced/lazy-loading.md)
24+
- API リファレンス
25+
- [router-link](api/router-link.md)
26+
- [router-view](api/router-view.md)
27+
- [ルートオブジェクト](api/route-object.md)
28+
- [ルートコンストラクタオプション](api/options.md)
29+
- [ルートインスタンス](api/router-instance.md)
30+
- [コンポーネント注入](api/component-injections.md)
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# 動的ルートマッチング
2+
3+
パターンを使って同じコンポーネントにルートをマップする必要がしばしばあるでしょう。例えば、 `User` コンポーネントは全てのユーザーに対してレンダリングされるべきであるが、それぞれ異なるユーザー ID を持つ場合などです。`vue-router` ではパスの中の動的なセグメントを使用して実現できます。
4+
5+
``` js
6+
const User = {
7+
template: '<div>User</div>'
8+
}
9+
10+
const router = new VueRouter({
11+
routes: [
12+
// コロンで始まる動的セグメント
13+
{ path: '/user/:id', component: User }
14+
]
15+
})
16+
```
17+
18+
これで `/user/foo``/user/bar` などの URL 両方とも同じルートにマッチします。
19+
20+
動的セグメントはコロン `:` を使って表されます。ルートがマッチした時、この動的セグメントの値は全てのコンポーネント内で `this.$route.params` として利用可能になります。したがって、現在の `User' のテンプレートを次のように更新することで現在のユーザー ID を表示することができます。
21+
22+
``` js
23+
const User = {
24+
template: '<div>User {{ $route.params.id }}</div>'
25+
}
26+
```
27+
28+
[こちら](http://jsfiddle.net/yyx990803/4xfa2f19/) のデモの例も確認してみてください。
29+
30+
1 つのルートが複数の動的なセグメントを持つこともできます。そして、それらは `$route.params` の一致したフィールドとマップされます。例:
31+
32+
| パターン | マッチしたパス | $route.params |
33+
|---------|------|--------|
34+
| /user/:username | /user/evan | `{ username: 'evan' }` |
35+
| /user/:username/post/:post_id | /user/evan/post/123 | `{ username: 'evan', post_id: 123 }` |
36+
37+
`$route.params` に加えて、`$route` オブジェクトでは `$route.query` (もし URL 上にクエリがあるなら) や `$route.hash` など便利な情報も利用可能です。それらの詳細については [API リファレンス](../api/route-object.md) でご確認ください。
38+
39+
### パラメーター変更の検知
40+
41+
ルートのパラメーターを使う際に特筆すべき点は、ユーザーが `/user/foo` から `/user/bar` へ遷移するときに**同じコンポーネントインスタンスが再利用される**ということです。 両方のルートが同じコンポーネントをレンダリングするため、古いインスタンスを破棄して新しいものを生成するよりも効率的です。**しかしながら、これはコンポーネントのライフサイクルフックが呼ばれないことを意味しています。**
42+
43+
同じコンポーネントでパラメーター変更を検知するためには、 `$route` オブジェクトを watch するだけです。
44+
45+
``` js
46+
const User = {
47+
template: '...',
48+
watch: {
49+
'$route' (to, from) {
50+
// ルートの変更の検知...
51+
}
52+
}
53+
}
54+
```
55+
56+
### 高度なマッチングパターン
57+
58+
`vue-router` はパスのマッチングエンジンとして [path-to-regexp](https://github.com/pillarjs/path-to-regexp) を使っています。これは Optional による動的なセグメント、Zero or more / One or more に対する要求、また、カスタム正規表現パターンまでもサポートしています。 これらの高度なパターンについてはこちらの [ドキュメンテーション](https://github.com/pillarjs/path-to-regexp#parameters) または、 `vue-router` の中でそれらを使っている [こちらの例](https://github.com/vuejs/vue-router/blob/dev/examples/route-matching/app.js) をご参照ください。
59+
60+
### マッチングの優先度
61+
62+
しばしば同じURLで複数のルートがマッチすることがあります。そのようなケースではマッチングの優先度はルートの定義された順番によって決定されます。先に定義されたルートほど優先度が高くなります。

docs/ja/essentials/getting-started.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# はじめに
2+
3+
> ガイド内のコードのサンプルは [ES2015](https://github.com/lukehoban/es6features) を使っています。
4+
5+
Vue.js と vue-router を使ったシングルページアプリケーションの構築は驚くほど簡単です。Vue.js のコンポーネントを使ってアプリケーションを既に構成しています。vue-router を混ぜ込むには、コンポーネントとルートをマッピングさせて vue-router にどこでレンダリングするかを知らせるだけです。以下が基本的な例です。
6+
7+
### HTML
8+
9+
``` html
10+
<div id="app">
11+
<h1>Hello App!</h1>
12+
<p>
13+
<!-- ナビゲーションに router-link コンポーネントを使う -->
14+
<!-- リンク先を `to` プロパティに指定します -->
15+
<!-- デフォルトで <router-link> は `<a>` タグとしてレンダリングされます -->
16+
<router-link to="/foo">Go to Foo</router-link>
17+
<router-link to="/bar">Go to Bar</router-link>
18+
</p>
19+
<!-- ルートアウトレット -->
20+
<!-- ルートとマッチしたコンポーネントがここへレンダリングされます -->
21+
<router-view></router-view>
22+
</div>
23+
```
24+
25+
### JavaScript
26+
27+
``` js
28+
// 0. モジュールシステムを使っている場合、 Vue.use(VueRouter) を呼び出します
29+
30+
// 1. ルートコンポーネントを定義します
31+
// 他のファイルからインポートすることもできます
32+
const Foo = { template: '<div>foo</div>' }
33+
const Bar = { template: '<div>bar</div>' }
34+
35+
// 2. ルートをいくつか定義します
36+
// 各ルートは 1 つのコンポーネントとマッピングされる必要があります。
37+
// このコンポーネントは実際の Vue.extend() によって作られたコンポーネントコンストラクタでも
38+
// コンポーネントオプションのオブジェクトでも構いません
39+
// ネストされたルートに関しては後で説明します
40+
const routes = [
41+
{ path: '/foo', component: Foo },
42+
{ path: '/bar', component: Bar }
43+
]
44+
45+
// 3. ルーターインスタンスを作成して、ルートオプションを渡します
46+
// 追加のオプションをここで指定できますが、
47+
// この例ではシンプルにしましょう
48+
const router = new VueRouter({
49+
routes // routes: routes の短縮表記
50+
})
51+
52+
// 4. root となるインスタンスを作成してマウントします
53+
// アプリケーション全体がルーターを認知できるように、
54+
// ルーターをインジェクトすることを忘れないでください。
55+
const app = new Vue({
56+
router
57+
}).$mount('#app')
58+
59+
// これで開始です!
60+
```
61+
62+
[動作](http://jsfiddle.net/yyx990803/xgrjzsup/) の例も確認してみてください.
63+
64+
`<router-link>` は対象のルートがマッチした時に自動的に `.router-link-active` が付与されるのにお気づきでしょうか。
65+
より詳細については [API リファレンス](../api/router-link.md) をご参照ください。

docs/ja/essentials/history-mode.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# HTML5 History モード
2+
3+
`vue-router` のデフォルトは _hash モード_ です - 完全な URL を hash を使ってシミュレートし、 URL が変更された時にページのリロードが起きません。
4+
5+
その hash を取り除くために、ページのリロード無しに URL 遷移を実現する `history.pushState` API を利用したルーターの **history モード** を使うことができます。
6+
7+
``` js
8+
const router = new VueRouter({
9+
mode: 'history',
10+
routes: [...]
11+
})
12+
```
13+
14+
history モードを使用する時は、URL は "普通" に見えます e.g. `http://oursite.com/user/id`。美しいですね!
15+
16+
しかしながら一点問題があります。シングルページのクライアントサイドアプリケーションなので、適切なサーバーの設定をしないと、ユーザーがブラウザで直接 `http://oursite.com/user/id` にアクセスした場合に 404 エラーが発生します。
17+
18+
心配する必要はありません。この問題を直すためには、単純な catch-all フォールバックのためのルートをサーバー側で追加するだけです。もし URL がどの静的なアセットにもマッチしなかった時はあなたのアプリケーションが動作しているのと同じ `index.html` ページで受け付けましょう。これも美しいですね!
19+
20+
## サーバーの設定例
21+
22+
#### Apache
23+
24+
```apache
25+
<IfModule mod_rewrite.c>
26+
RewriteEngine On
27+
RewriteBase /
28+
RewriteRule ^index\.html$ - [L]
29+
RewriteCond %{REQUEST_FILENAME} !-f
30+
RewriteCond %{REQUEST_FILENAME} !-d
31+
RewriteRule . /index.html [L]
32+
</IfModule>
33+
```
34+
35+
#### nginx
36+
37+
```nginx
38+
location / {
39+
try_files $uri $uri/ /index.html;
40+
}
41+
```
42+
43+
#### Node.js (Express)
44+
45+
Node.js/Express では [connect-history-api-fallback middleware](https://github.com/bripkens/connect-history-api-fallback) の利用を検討してください。
46+
47+
## 注意
48+
49+
この点に関して注意があります。全ての not-found パスが `index.html` を提供するため、もはや 404 エラーをサーバーがレポートしなくなります。回避策として、Vue アプリケーション内で 404 ページを表示するために catch-all ルートを実装すべきです。
50+
51+
``` js
52+
const router = new VueRouter({
53+
mode: 'history',
54+
routes: [
55+
{ path: '*', component: NotFoundComponent }
56+
]
57+
})
58+
```
59+
60+
他の方法として、もしあなたが Node.js サーバーを使っている場合、入ってきた URL とマッチさせて、マッチしなかった場合に 404 を返答するサーバーサイドのルーターを使って fallback を実装することもできます。

docs/ja/essentials/named-routes.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# 名前付きルート
2+
3+
しばしば、名前を使ってルートを特定できるとより便利です。特にルートにリンクするときやナビゲーションを実行するときなどです。Router インスタンスを作成するときに `routes` オプションの中でルートに名前を付けることができます。
4+
5+
``` js
6+
const router = new VueRouter({
7+
routes: [
8+
{
9+
path: '/user/:id',
10+
name: 'user',
11+
component: User
12+
}
13+
]
14+
})
15+
```
16+
17+
名前を付けたルートにリンクするには、 `router-link` コンポーネントの `to` プロパティにオブジェクトを渡します。
18+
19+
``` html
20+
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
21+
```
22+
23+
これはプログラムで `router.push()` を呼び出すときに使われるオブジェクトと全く同じです。
24+
25+
``` js
26+
router.push({ name: 'user', params: { userId: 123 }})
27+
```
28+
29+
どちらのケースもルーターは `/user/123` のパスにナビゲーションします。
30+
31+
完全な例は [こちら](https://github.com/vuejs/vue-router/blob/dev/examples/named-routes/app.js) です。

docs/ja/essentials/named-views.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# 名前付きビュー
2+
3+
しばしば、ネストをさせずに同時に複数の view を表示する必要があるでしょう。例えば、`sidebar` view と `main` view を使ったレイアウトを作成する時です。そんな時に名前付きビューは便利です。あなたの view に 1 つのアウトレットを持つのではなく、複数のそれぞれが名前付きの view を持つことができます。名前を持たない `router-view` はその名前として `default` が付与されます。
4+
5+
``` html
6+
<router-view class="view one"></router-view>
7+
<router-view class="view two" name="a"></router-view>
8+
<router-view class="view three" name="b"></router-view>
9+
```
10+
11+
1 つの view は 1 つのコンポーネントを使ってレンダリングされます。したがって、同じルートに対する複数の view には複数のコンポーネントが必須になります。この `components` (s が付いている) オプションに注意してください。
12+
13+
``` js
14+
const router = new VueRouter({
15+
routes: [
16+
{
17+
path: '/',
18+
components: {
19+
default: Foo,
20+
a: Bar,
21+
b: Baz
22+
}
23+
}
24+
]
25+
})
26+
```
27+
28+
この例の動作しているデモは
29+
[こちら](https://jsfiddle.net/posva/9b80nxx1/) です。

docs/ja/essentials/navigation.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# プログラムによるナビゲーション
2+
3+
宣言的なナビゲーションとしてアンカータグを作成する `<router-link>` がありますが、ルーターのインスタンスメソッドを使ったプログラムによる方法でもそれは可能です。
4+
5+
#### `router.push(location)`
6+
7+
異なる URL へ遷移するときに `router.push` が使えます。このメソッドは history スタックに新しいエントリを追加します。それによってユーザーがブラウザの戻るボタンをクリックした時に前の URL に戻れるようになります。
8+
9+
10+
このメソッドは `<router-link>` をクリックした時に内部的に呼ばれています。つまり `<router-link :to="...">` をクリックすることは `router.push(...)` を呼ぶことと等価です。
11+
12+
| 宣言的 | プログラム的 |
13+
|-------------|--------------|
14+
| `<router-link :to="...">` | `router.push(...)` |
15+
16+
引数は文字列のパス、もしくは、location を記述するオブジェクトが使えます。例:
17+
18+
``` js
19+
// 文字列
20+
router.push('home')
21+
22+
// オブジェクト
23+
router.push({ path: 'home' })
24+
25+
// 名前付きルート
26+
router.push({ name: 'user', params: { userId: 123 }})
27+
28+
// 結果的に /register?plan=private になる query
29+
router.push({ path: 'register', query: { plan: 'private' }})
30+
```
31+
32+
#### `router.replace(location)`
33+
34+
これは `router.push` のように動作しますが、異なる点は新しい history エントリを追加しないで遷移することです。この名前から推定されるように、現在のエントリを置換します。
35+
36+
| 宣言的 | プログラム的 |
37+
|-------------|--------------|
38+
| `<router-link :to="..." replace>` | `router.replace(...)` |
39+
40+
41+
#### `router.go(n)`
42+
43+
このメソッドは、history スタックの中でどのくらいステップを進めるか、もしくは戻るのか、を表す 1 つの integer をパラメーターとして受け取ります。`window.history.go(n)` と類似しています。
44+
45+
46+
47+
``` js
48+
// 1 つレコードを進める。history.forward() と同じ
49+
router.go(1)
50+
51+
// 1 つレコードを戻す。history.back() と同じ
52+
router.go(-1)
53+
54+
// 3 つレコードを進める
55+
router.go(3)
56+
57+
// もし多くのレコードが存在しない場合、サイレントに失敗します
58+
router.go(-100)
59+
router.go(100)
60+
```
61+
62+
#### History 操作
63+
64+
もしかすると `router.push``router.replace``router.go`[`window.history.pushState``window.history.replaceState``window.history.go`](https://developer.mozilla.org/en-US/docs/Web/API/History) と対応することにお気づきかもしれません。これらは `window.history` API を模倣しています。
65+
66+
したがって、もしあなたが既に [Browser History APIs](https://developer.mozilla.org/en-US/docs/Web/API/History_API) について詳しい場合は、vue-router による History 操作はとても簡単です。
67+
68+
vue-router のナビゲーションメソッド (`push``replace``go`) は全てのモード (`history``hash``abstract`) で一貫して動作することは特筆すべき点です。

0 commit comments

Comments
 (0)