Skip to content

Commit 3883d72

Browse files
naokiekazupon
andauthored
Guide > Tooling > Single File Components の翻訳を追従 (#309)
* fix: casing on npm vuejs/docs@8c8d85a#diff-7d4d6d18bce98fb202b53d0597ea1e4a7ba7f467b9db5a86e4c25d8d59fc7fe0 * fix: match lines with the original * Add bundling with rollup to docs vuejs/docs@d451d21#diff-7d4d6d18bce98fb202b53d0597ea1e4a7ba7f467b9db5a86e4c25d8d59fc7fe0 * Fix: typo in single-file-component.md vuejs/docs@2aa4491#diff-7d4d6d18bce98fb202b53d0597ea1e4a7ba7f467b9db5a86e4c25d8d59fc7fe0 * Correct spelling vuejs/docs@9436d6c#diff-7d4d6d18bce98fb202b53d0597ea1e4a7ba7f467b9db5a86e4c25d8d59fc7fe0 * chore: switch javascript code blocks to js vuejs/docs@5753b78#diff-7d4d6d18bce98fb202b53d0597ea1e4a7ba7f467b9db5a86e4c25d8d59fc7fe0 * docs: translate single-file-component page * fix: re-translate 'Here we are specifying' Co-authored-by: kazuya kawaguchi <[email protected]> Co-authored-by: kazuya kawaguchi <[email protected]>
1 parent f42db2b commit 3883d72

File tree

1 file changed

+112
-9
lines changed

1 file changed

+112
-9
lines changed

src/guide/single-file-component.md

+112-9
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
## 前書き
44

5-
多くの Vue プロジェクトでは、 グローバルコンポーネントは `app.mount('#app')` の後に各ページの body においてコンテナ要素のターゲットすることに続いて、`app.component()` を使用して定義されています。
5+
多くの Vue プロジェクトでは、グローバルコンポーネントは `app.mount('#app')` の後に各ページの body においてコンテナ要素のターゲットすることに続いて、`app.component()` を使用して定義されています。
66

77
これはある view を拡張するためだけに JavaScript が利用された中小規模のプロジェクトにおいてはとても有効です。しかしながら、あなたのフロントエンドで JavaScript 全体を操作するようなもっと複雑なプロジェクトでは、これらの点において不利益になります。:
88

99
- **グローバル宣言**は全てのコンポーネントに一意な名前を強制すること
1010
- シンタックスハイライトがない**文字列テンプレート**と複数行 HTML の時の醜いスラッシュが強要されること
1111
- **CSS サポート無し**だと HTML と JavaScript がコンポーネントにモジュール化されている間、これ見よがしに無視されること
12-
- **ビルド処理がない**と Pug(前 Jade)と Babel のようなプリプロセッサよりむしろ、 HTML や ES5 JavaScript を制限されること
12+
- **ビルド処理がない**と Pug(前 Jade)と Babel のようなプリプロセッサよりむしろ、HTML や ES5 JavaScript を制限されること
1313

1414
これらは全ては Webpack や Browserify のビルドツールにより実現された `.vue`拡張子の**単一ファイルコンポーネント**によって解決されます。
1515

@@ -23,19 +23,19 @@
2323
- [CommonJS モジュール](https://webpack.js.org/concepts/modules/#what-is-a-webpack-module)
2424
- [コンポーネントスコープ CSS](https://vue-loader.vuejs.org/en/features/scoped-css.html)
2525

26-
約束した通り、Pug、Babel (ES2015 モジュールと一緒に) や Stylus など 綺麗で機能が豊富なコンポーネントもプリプロセッサとして利用することができます
26+
約束した通り、Pug、Babel (ES2015 モジュールと一緒に) や Stylus など綺麗で機能が豊富なコンポーネントもプリプロセッサとして利用することができます
2727

2828
<a href="https://codesandbox.io/s/vue-single-file-component-with-pre-processors-mr3ik?file=/src/App.vue" target="_blank" rel="noopener noreferrer"><img src="/images/sfc-with-preprocessors.png" width="563" alt="Single-file component with pre-processors example (click for code as text)" style="display: block; margin: 15px auto; max-width: 100%"></a>
2929

3030
これらの特定の言語は単なる一例です。TypeScript、SCSS、PostCSS などの生産的なプリプロセッサも簡単に使うことができます。もし `vue-loader` で Webpack を使用しているならば、CSS Modules 向けに素晴らしいサポートがあります。
3131

3232
### 関心の分離について
3333

34-
注意すべき重要な点の1つは**関心の分離がファイルタイプの分離とは等しくないことです。** 現代の UI 開発では、私たちはコードベースを互いに織りなす3つの巨大なレイヤーに分割するのではなく、それらを疎結合なコンポーネントに分割して構成する方がはるかに理にかなっていることを発見しました。コンポーネントの内部では、そのテンプレート、ロジック、スタイルが本質的に結合しており、実際にそれらを配置することでコンポーネントの一貫性と保守性が高くなります。
34+
注意すべき重要な点の 1 つは**関心の分離がファイルタイプの分離とは等しくないことです。** 現代の UI 開発では、私たちはコードベースを互いに織りなす 3 つの巨大なレイヤーに分割するのではなく、それらを疎結合なコンポーネントに分割して構成する方がはるかに理にかなっていることを発見しました。コンポーネントの内部では、そのテンプレート、ロジック、スタイルが本質的に結合しており、実際にそれらを配置することでコンポーネントの一貫性と保守性が高くなります。
3535

3636
単一ファイルコンポーネントのアイディアが好きではなくても、JavaScript と CSS を別々ファイルに分けることによってホットリロードとプリコンパイル機能を活用することができます:
3737

38-
``` html
38+
```html
3939
<!-- my-component.vue -->
4040
<template>
4141
<div>This will be pre-compiled</div>
@@ -48,21 +48,124 @@
4848

4949
### サンドボックスの例
5050

51-
すぐに触ってそして単一ファイルコンポーネントを試したい方は、CodeSandBox 上の [この単純な todo アプリケーション](https://codesandbox.io/s/vue-todo-list-app-with-single-file-component-vzkl3?file=/src/App.vue)
52-
をチェックしてみてください。
51+
すぐに触ってそして単一ファイルコンポーネントを試したい方は、CodeSandBox 上の [この単純な todo アプリケーション](https://codesandbox.io/s/vue-todo-list-app-with-single-file-component-vzkl3?file=/src/App.vue) をチェックしてみてください。
5352

5453
### JavaScript でモジュールビルドシステムが初めてなユーザ向け
5554

5655
`.vue` コンポーネントにより、高度な JavaScript アプリケーションの分野へ入っていきます。 これはあなたがまだ使ったことのない、いくつかの追加のツールの使い方を学ぶことを意味します:
5756

58-
- **Node Package Manager (NPM)**: レジストリからパッケージを取得する方法については[Getting Started guide](https://docs.npmjs.com/packages-and-modules/getting-packages-from-the-registry) のセクションを読んでください。
57+
- **Node Package Manager (npm)**: レジストリからパッケージを取得する方法については[Getting Started guide](https://docs.npmjs.com/packages-and-modules/getting-packages-from-the-registry) のセクションを読んでください。
5958

6059
- **ES2015/16 を使ったモダンな JavaScript**: Babel の [Learn ES2015 guide](https://babeljs.io/docs/en/learn)を読んでみてください。今すぐには全ての機能を暗記する必要はないですが、参考として戻れるようにしておいてください。
6160

62-
これらのリソースに没頭した後は、[Vue CLI](https://cli.vuejs.org/)を確認することをお勧めします。 指示に従うことであっという間に `.vue` コンポーネントと ES2015、 Webpack、ホットリローティングを備えた Vue プロジェクトを手に入れられるはずです!
61+
これらのリソースに没頭した後は、[Vue CLI](https://cli.vuejs.org/)を確認することをお勧めします。 指示に従うことであっという間に `.vue` コンポーネントと ES2015、Webpack、ホットリローティングを備えた Vue プロジェクトを手に入れられるはずです!
6362

6463
### 上級ユーザ向け
6564

6665
CLI はツールの設定の大部分の面倒を見てくれますが、[設定オプション](https://cli.vuejs.org/config/)を通してよりきめ細かいカスタマイズをすることもできます。
6766

6867
あなたが独自のビルドセットアップをゼロから作ることを好む場合、webpack と [vue-loader](https://vue-loader.vuejs.org)を手動で設定する必要があるでしょう。webpack についてもっと学びたいときは、[公式ドキュメント](https://webpack.js.org/configuration/)[webpack learning academy](https://webpack.academy/p/the-core-concepts)を参照してください。
68+
69+
### Rollup でビルド
70+
71+
ほとんどの場合、サードパーティのライブラリを開発するときは、そのライブラリの利用者が [Tree Shaking](https://webpack.js.org/guides/tree-shaking/) できるような方法でビルドしたいと考えています。Tree Shaking を有効にするためには、`esm` モジュールをビルドする必要があります。 Webpack や Vue CLI は `esm` モジュールのビルドをサポートしていないため、[Rollup](https://rollupjs.org/) の依存が必要です。
72+
73+
#### Rollup のインストール
74+
75+
Rollup といくつかの依存関係をインストールする必要があります:
76+
77+
```bash
78+
npm install --save-dev rollup @rollup/plugin-commonjs rollup-plugin-vue
79+
```
80+
81+
これらは `esm` モジュールのコードをコンパイルするために必要な最小限の Rollup プラグインです。コードをコンパイルするために [rollup-plugin-babel](https://github.com/rollup/plugins/tree/master/packages/babel) を、ライブラリにバンドルしたい依存関係を使うならば [node-resolve](https://github.com/rollup/plugins/tree/master/packages/node-resolve) を追加できます。
82+
83+
#### Rollup の設定
84+
85+
Rollup でビルドを設定するには、プロジェクトのルートに `rollup.config.js` ファイルを作成する必要があります:
86+
87+
```bash
88+
touch rollup.config.js
89+
```
90+
91+
ファイルを作成したら、お好きなエディタで開き、以下のコードを追加します。
92+
93+
```js
94+
// サードパーティのプラグインをインポート
95+
import commonjs from 'rollup-plugin-commonjs'
96+
import VuePlugin from 'rollup-plugin-vue'
97+
import pkg from './package.json' // 名前を再利用するために package.json ファイルをインポート
98+
99+
export default {
100+
// エクスポートされたすべてのコンポーネントや関数を含むファイル
101+
input: 'src/index.js',
102+
// 出力されるフォーマットの配列
103+
output: [
104+
{
105+
file: pkg.module, // esm ライブラリの名前
106+
format: 'esm', // フォーマットの選択
107+
sourcemap: true, // ソースマップを含めるか
108+
}
109+
],
110+
// 含めるプラグインの配列
111+
plugins: [
112+
commonjs(),
113+
VuePlugin()
114+
],
115+
// ライブラリに Vue をバンドルしないように
116+
external: ['vue']
117+
}
118+
```
119+
120+
#### package.json の設定
121+
122+
新しく作成した `esm` モジュールを利用するためには、`package.json` ファイルにいくつかのフィールドを追加する必要があります:
123+
124+
```json
125+
"scripts": {
126+
...
127+
"build": "rollup -c rollup.config.js",
128+
...
129+
},
130+
"module": "dist/my-library-name.esm.js",
131+
"files": [
132+
"dist/",
133+
],
134+
```
135+
136+
ここでは、以下の内容を指定しています:
137+
138+
- パッケージのビルド方法
139+
- パッケージにバンドルするファイル
140+
- `esm` モジュールを示すファイル
141+
142+
#### `umd``cjs` のバンドル
143+
144+
`umd``cjs` モジュールを一緒にビルドするには、`rollup.config.js``package.json` に数行の設定を追加するだけです。
145+
146+
##### rollup.config.js
147+
```js
148+
output: [
149+
...
150+
{
151+
file: pkg.main,
152+
format: 'cjs',
153+
sourcemap: true,
154+
},
155+
{
156+
file: pkg.unpkg,
157+
format: 'umd',
158+
name: 'MyLibraryName',
159+
sourcemap: true,
160+
globals: {
161+
vue: 'Vue',
162+
},
163+
},
164+
]
165+
```
166+
##### package.json
167+
```json
168+
"module": "dist/my-library-name.esm.js",
169+
"main": "dist/my-library-name.cjs.js",
170+
"unpkg": "dist/my-library-name.global.js",
171+
```

0 commit comments

Comments
 (0)