Skip to content

Commit ad4adee

Browse files
authored
Merge pull request #398 from t0yohei/add-migration-build
2 parents 34ec818 + b0d7303 commit ad4adee

29 files changed

+481
-10
lines changed

src/.vuepress/config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ const sidebar = {
172172
],
173173
migration: [
174174
'/guide/migration/introduction',
175+
'/guide/migration/migration-build',
175176
{
176177
title: '詳細',
177178
collapsable: false,

src/guide/migration/array-refs.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,11 @@ export default {
6969

7070
- `itemRefs` は配列である必要はありません。 反復キーで参照できるオブジェクトでも構いません。
7171

72-
- これにより、必要に応じて `itemRefs` をリアクティブにして監視することもできます。
72+
- これにより、必要に応じて `itemRefs` をリアクティブにして監視することもできます。
73+
74+
## 移行の戦略
75+
76+
[移行ビルドのフラグ:](migration-build.html#compat-の設定)
77+
78+
- `V_FOR_REF`
79+
- `COMPILER_V_FOR_REF`

src/guide/migration/async-components.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,4 @@ const asyncComponent = defineAsyncComponent(
9595
非同期コンポーネントの使い方のさらなる情報は、以下を見てください:
9696

9797
- [ガイド: 動的 & 非同期コンポーネント](/guide/component-dynamic-async.html#動的コンポーネントにおける-keep-alive-の利用)
98+
- [移行ビルドのフラグ: `COMPONENT_ASYNC`](migration-build.html#compat-の設定)

src/guide/migration/attribute-coercion.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ badges:
125125
<td><code>"false"</code></td>
126126
</tr>
127127
<tr>
128-
<td rowspan="2">その他の非ブール属性<br><small>例えば
128+
<td rowspan="2">その他の非ブール属性<br><small>例えば
129129
<code>aria-checked</code>、<code>tabindex</code>、<code>alt</code>など</small></td>
130130
<td><code>undefined</code>, <code>null</code>, <code>false</code></td>
131131
<td><code>undefined</code>, <code>null</code></td>
@@ -138,3 +138,8 @@ badges:
138138
</tr>
139139
</tbody>
140140
</table>
141+
142+
[移行ビルドのフラグ:](migration-build.html#compat-の設定)
143+
144+
- `ATTR_FALSE_VALUE`
145+
- `ATTR_ENUMERATED_COERSION`

src/guide/migration/attrs-includes-class-style.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ export default {
6060

6161
`inheritAttrs: false` を使用しているコンポーネントでは、スタイルの適用が意図したとおりに動作することを確認してください。もし以前に `class``style` の特別な動作に依存していた場合、これらの属性が別の要素に適用されている可能性があるため、一部の見た目が崩れている可能性があります。
6262

63+
[移行ビルドのフラグ: `INSTANCE_ATTRS_CLASS_STYLE`](migration-build.html#compat-の設定)
64+
6365
## 参照
6466

6567
- [関連する RFC](https://github.com/vuejs/rfcs/blob/master/active-rfcs/0031-attr-fallthrough.md)

src/guide/migration/children.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,7 @@ export default {
3838
## 3.x の更新
3939

4040
3.x では、 `$children` プロパティが削除され、サポートされなくなりました。代わりに、もし子コンポーネントのインスタンスにアクセスする必要がある場合は、 [$refs](/guide/component-template-refs.html#template-refs) を使用することをお勧めします。
41+
42+
## 移行の戦略
43+
44+
[移行ビルドのフラグ: `INSTANCE_CHILDREN`](migration-build.html#compat-の設定)

src/guide/migration/custom-directives.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ Vue.directive('highlight', {
3737

3838
## 3.x での構文
3939

40-
4140
ただし、Vue 3 では、カスタムディレクティブ用のよりまとまりのある API を作成しました。Vue 2 では、似たようなイベントにフックしているにもかかわらず、コンポーネントのライフサイクルメソッドとは大きく異なります。これらを次のように統合しました。
4241

4342
- **created** - 追加されました! これは、要素の属性やイベントリスナーが適用される前に呼び出されます。
@@ -104,3 +103,7 @@ mounted(el, binding, vnode) {
104103
:::warning
105104
[fragments](/guide/migration/fragments.html#overview) のサポートにより、コンポーネントは複数のルートノードを持つ可能性があります。マルチルートコンポーネントに適用すると、カスタムディレクティブは無視され、警告がログ出力されます。
106105
:::
106+
107+
## 移行の戦略
108+
109+
[移行ビルドのフラグ: `CUSTOM_DIR`](migration-build.html#compat-の設定)

src/guide/migration/custom-elements-interop.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ Vue では、ブラウザで普遍的に利用できるようになる前のネ
9696
document.createElement('button', { is: 'plastic-button' })
9797
```
9898

99+
[移行ビルドのフラグ: `COMPILER_IS_ON_ELEMENT`](migration-build.html#compat-の設定)
100+
99101
## `v-is` は In-DOM テンプレートパースのための回避策
100102

101103
>: このセクションは、Vue テンプレートがページの HTML に直接記述されている場合にのみ影響します。

src/guide/migration/data-option.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ Vue 2.x での `$data` の結果は:
111111
}
112112
```
113113

114+
[移行ビルドのフラグ: `OPTIONS_DATA_FN`](migration-build.html#compat-の設定)
115+
114116
## 移行の戦略
115117

116118
オブジェクト宣言を利用しているユーザーには以下を推奨します:
@@ -119,3 +121,8 @@ Vue 2.x での `$data` の結果は:
119121
- 共有データへの参照、新しい共有オブジェクトを指すようにを書き換える
120122

121123
ミックスインのディープマージに依存しているユーザーには、そのような依存を完全に避けるためにコードをリファクタリングすることをお勧めします。ミックスインのディープマージは非常に暗黙的であり、コードロジックの理解やデバッグがより難しくなる可能性があります。
124+
125+
[移行ビルドのフラグ:](migration-build.html#compat-の設定)
126+
127+
- `OPTIONS_DATA_FN`
128+
- `OPTIONS_DATA_MERGE`

src/guide/migration/events-api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,5 @@ export default {
7979
これは Vue 2 と同じような Event Emitter API を提供します。
8080

8181
これらのメソッドは、Vue 3 の将来の互換ビルドでもサポートされる可能性があります。
82+
83+
[移行ビルドのフラグ: `INSTANCE_EVENT_EMITTER`](migration-build.html#compat-の設定)

src/guide/migration/filters.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ badges:
7373

7474
フィルタを使う代わりに、算出プロパティか関数に置き換えることを推奨します。
7575

76+
[移行ビルドのフラグ:](migration-build.html#compat-の設定)
77+
78+
- `FILTERS`
79+
- `COMPILER_FILTERS`
80+
7681
### グローバルフィルタ
7782

7883
もし、グローバルにフィルタを登録していて、そしてアプリケーション全体でそのフィルタを使用している場合、そのフィルタを個々のコンポーネントで算出プロパティやメソッドに置き換えるのは不便でしょう。

src/guide/migration/functional-components.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,4 @@ export default {
117117

118118
- [移行: Render 関数](/guide/migration/render-function-api.html)
119119
- [ガイド: Render 関数](/guide/render-function.html)
120+
- [移行ビルドのフラグ: `COMPONENT_FUNCTIONAL`](migration-build.html#compat-の設定)

src/guide/migration/global-api.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ const app = createApp({})
8585
| Vue.mixin | app.mixin |
8686
| Vue.use | app.use ([以下を参照](#a-note-for-plugin-authors)) |
8787
| Vue.prototype | app.config.globalProperties ([以下を参照](#vue-prototype-replaced-by-config-globalproperties)) |
88+
| Vue.extend | _削除_ ([以下を参照](#vue-extend-replaced-by-definecomponent)) |
8889

8990
グローバルに振る舞いを変更しないその他のグローバル API は [グローバル API の Treeshaking](./global-api-treeshaking.html) にあるように、名前付きエクスポートになりました。
9091

@@ -94,6 +95,8 @@ Vue 3.x では "use production build" のヒントは、"dev + full build" (ラ
9495

9596
ES Modules ビルドでは、モジュールバンドラーと一緒に使用されていることと、ほとんどの場合 CLI やボイラープレートで本番環境が適切に設定されているため、このヒントは表示されなくなりました。
9697

98+
[移行ビルドのフラグ: `CONFIG_PRODUCTION_TIP`](migration-build.html#compat-の設定)
99+
97100
### `config.ignoredElements``config.isCustomElement` に変更
98101

99102
この設定オプションはネイティブのカスタム要素をサポートする意図で導入されたため、それがわかるように名前に変更しました。新しいオプションでは、以前の 文字列 / RegExp の方法より、柔軟な方法を提供する関数を期待します。
@@ -115,6 +118,8 @@ Vue 3 では、要素がコンポーネントであるかどうかのチェッ
115118
- これは、Vue CLI 設定の新しいトップレベルのオプションになります。
116119
:::
117120

121+
[移行ビルドのフラグ: `CONFIG_IGNORED_ELEMENTS`](migration-build.html#compat-の設定)
122+
118123
### `Vue.prototype``config.globalProperties` と置換
119124

120125
Vue 2 では、すべてのコンポーネントでアクセス可能なプロパティを追加するために、 `Vue.prototype` がよく使われていました。
@@ -134,6 +139,58 @@ app.config.globalProperties.$http = () => {}
134139

135140
また `globalProperties` の代わりに `provide` ([後述](#provide-inject)) を使うことも考えられます。
136141

142+
[移行ビルドのフラグ: `GLOBAL_PROTOTYPE`](migration-build.html#compat-の設定)
143+
144+
### `Vue.extend` の削除
145+
146+
Vue 2.x では、`Vue.extend`を使って、コンポーネントのオプションを含むオブジェクトを引数に、Vue のベースコンストラクタの「サブクラス」を作成していました。Vue 3.x では、コンポーネントコンストラクタの概念はもうありません。コンポーネントのマウントには、常に `createApp` グローバル API を使用する必要があります。
147+
148+
```js
149+
// 以前 - Vue 2
150+
151+
// コンストラクタの作成
152+
const Profile = Vue.extend({
153+
template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
154+
data() {
155+
return {
156+
firstName: 'Walter',
157+
lastName: 'White',
158+
alias: 'Heisenberg'
159+
}
160+
}
161+
})
162+
// Profile のインスタンスを作成し、それを要素にマウントする
163+
new Profile().$mount('#mount-point')
164+
```
165+
166+
```js
167+
// 今後 - Vue 3
168+
const Profile = {
169+
template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>',
170+
data() {
171+
return {
172+
firstName: 'Walter',
173+
lastName: 'White',
174+
alias: 'Heisenberg'
175+
}
176+
}
177+
}
178+
179+
Vue.createApp(Profile).mount('#mount-point')
180+
```
181+
182+
#### 型推論
183+
184+
Vue 2 では、`Vue.extend`は、コンポーネントのオプションに TypeScript の型推論を提供するためにも使われていました。Vue 3 では、同じ目的のために、`defineComponent`グローバル API を`Vue.extend`の代わりに使用することができます。
185+
186+
なお、`defineComponent`の戻り値の型はコンストラクタのような型ですが、これは TSX の推論にのみ使用されます。実行時には、`defineComponent`はほとんど何もせず、オプションオブジェクトをそのまま返します。
187+
188+
#### コンポーネントの継承
189+
190+
Vue 3 では継承やミックスインよりも、 [Composition API](/api/composition-api.html) によるコンポジションを強く推奨しています。 何らかの理由でコンポーネントの継承が必要な場合は、`Vue.extend` の代わりに [`extends` オプション](/api/options-composition.html#extends) を使用することができます。
191+
192+
[移行ビルドのフラグ: `GLOBAL_EXTEND`](migration-build.html#compat-の設定)
193+
137194
### プラグイン作者へのノート
138195

139196
プラグイン作者の一般的なプラクティスとして、`Vue.use` を使ってプラグインを自動的に UMD ビルドにインストールさせるものがありました。例えば、公式の `vue-router` プラグインのブラウザ環境へのインストールは以下のようになっていました:
@@ -187,6 +244,8 @@ app.directive('focus', {
187244
app.mount('#app')
188245
```
189246

247+
[移行ビルドのフラグ: `GLOBAL_MOUNT`](migration-build.html#compat-の設定)
248+
190249
## Provide / Inject
191250

192251
Vue 2.x のルートインスタンスで `provide` オプションを使用するのとどうように、Vue 3 のアプリケーションインスタンスでも、アプリケーション内の任意のコンポーネントに注入できる依存関係を提供できます:

src/guide/migration/inline-template-attribute.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ Vue 2.x では子コンポーネントの内部のコンテンツを分散コン
3030

3131
`inline-template` のユースケースの多くでは、すべてのテンプレートが HTML ページ内に直接書かれるようなビルドツールを使わないセットアップを想定しています。
3232

33+
[移行ビルドのフラグ: `COMPILER_INLINE_TEMPLATE`](migration-build.html#compat-の設定)
34+
3335
### オプション #1: `<script>` タグを使う
3436

3537
このような場合の最も簡単な回避策は、`<script>` を代替として使うことです:

src/guide/migration/introduction.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ Vue.js を使うのは初めてですか? [エッセンシャルガイド](/gu
77
このガイドは主に、Vue 3 の新機能と変更点について学びたい Vue 2 の経験があるユーザーを対象としています。 **Vue 3 を試す前にこのガイドを上から下まで読む必要はありません。** 多くの変更があったように見えますが、Vue についてあなたが知っていて愛していることの多くは同じままです。 しかし、私たちは可能な限り徹底し、文書化されたすべての変更について詳細な説明と例を提供したいと考えました。
88

99
- [クイックスタート](#クイックスタート)
10-
- [注目すべき新機能](#注目すべき新機能)
10+
- [移行ビルド](#移行ビルド)
11+
- [注目すべき新機能](#注目すべき新機能)
1112
- [破壊的変更](#破壊的変更)
1213
- [サポートライブラリ](#サポートライブラリ)
1314

@@ -20,6 +21,8 @@ Vue.js を使うのは初めてですか? [エッセンシャルガイド](/gu
2021

2122
## クイックスタート
2223

24+
新しいプロジェクトで Vue 3 をすぐに試してみたい場合:
25+
2326
- CDN 経由: `<script src="https://unpkg.com/vue@next"></script>`
2427
- [Codepen](https://codepen.io/yyx990803/pen/OJNoaZL) 上のブラウザ内プレイグラウンド
2528
- [CodeSandbox](https://v3.vue.new) 上のブラウザ内サンドボックス
@@ -37,6 +40,10 @@ Vue.js を使うのは初めてですか? [エッセンシャルガイド](/gu
3740
# select vue 3 preset
3841
```
3942

43+
## 移行ビルド
44+
45+
既存の Vue 2 プロジェクトやライブラリを Vue 3 にアップグレードする場合は、Vue 2 と互換性のある API を提供する Vue 3 のビルドを提供しています。詳しくは[移行ビルド](./migration-build.html)のページをご覧ください。
46+
4047
## 注目すべき新機能
4148

4249
Vue 3 で注目すべきいくつかの新機能の次のとおりです。
@@ -53,10 +60,6 @@ Vue 3 で注目すべきいくつかの新機能の次のとおりです。
5360

5461
## 破壊的変更
5562

56-
::: info INFO
57-
Vue 2 と互換性のある動作と、互換性のない使用法に対する実行時警告を備えた Vue 3 の移行専用ビルドの開発に取り組んでいます。 重要な Vue 2 アプリの移行を計画している場合は、よりスムーズな体験のために移行ビルドを待つことを強くお勧めします。
58-
:::
59-
6063
以下は、2.x からの破壊的変更の一覧です。:
6164

6265
### グローバル API

src/guide/migration/keycode-modifiers.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,8 @@ Vue.config.keyCodes = {
5454
## 移行の戦略
5555

5656
キーコードを利用している場合は、ケバブケースでの命名に変更することを推奨します。
57+
58+
[移行ビルドのフラグ:](migration-build.html#compat-の設定)
59+
60+
- `CONFIG_KEY_CODES`
61+
- `V_ON_KEYCODE_MODIFIER`

src/guide/migration/listeners-removed.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ export default {
6565

6666
`$listeners` の使用をすべて削除します。
6767

68+
[移行ビルドのフラグ: `INSTANCE_LISTENERS`](migration-build.html#compat-の設定)
69+
6870
## 参照
6971

7072
- [関連する RFC](https://github.com/vuejs/rfcs/blob/master/active-rfcs/0031-attr-fallthrough.md)

0 commit comments

Comments
 (0)