目次
Vue.jsは日本語のドキュメントも整備されていて情報も多いので助かりますね。
でそのVue.js + webpackでいい感じの環境を作る必要があって用意してみました。
- Vue.js
- webpack
- vue-router(あったほうが良さそうなので使います)
- Babel(これもあったほうが良さそう的なので使います)
- サーバーとのHTTP通信はjQueryを使います(元々プロジェクトに入っていたのでさらに追加するよりもいいだろうという判断です)
必要なものあるかどうか確認
1 | node -v |
まずはお決まりのNode.js入ってるか確認。
1 | npm -v |
npm(Node.jsのパッケージマネージャー)も入ってるか確認。
1 | webpack -v |
webpackも入っているか確認。
もし入ってなかったら
1 | npm install -g webpack |
-gオプションはGlobalオプションのこと。
ファイル・フォルダ構成
1 | git clone https://github.com/shigekitakeguchi/npm-webpack-vuejs.git |
https://github.com/shigekitakeguchi/npm-webpack-vuejs
GitHubから落として使ってください。
カスタマイズなりなんなりして。
1 | cd npm-webpack-vuejs |
落としたフォルダ内に移動する。
1 | ├── LICENSE |
ファイル・フォルダ構成はこんな感じ。
LICENSEやREADME.mdはプロジェクトには直接はいらないファイルですね。今回は、わかりよいようにコンポーネントを使ったサンプルを入れてます。
「.vue」という珍しい拡張子のファイルがVue.jsのコンポーネントですね。説明はのちほど。
1 | npm install |
これで必要なパッケージがインストールされるはず。
package.json
1 | { |
中身はこんな感じ。 けっこういろいろはいってますね。
パッケージの説明
落としてきたpackage.jsonからインストールすればいいんですがそれぞれのパッケージの説明を。
1 | npm install --save-dev babel |
はい、Babelです。
1 | npm install --save-dev babel-core |
https://github.com/babel/babel/tree/master/packages/babel-core
言わずもがな、Babelのコンパイラのコア。
1 | npm install --save-dev babel-loader |
https://github.com/babel/babel-loader
webpackでES2015構文で書いたファイルをトランスパイルするのに必要。
1 | npm install --save-dev babel-plugin-transform-runtime |
未対応なブラウザでも動くように変換するやるらしいですね。
babel-polyfillとbabel-runtimeの使い分けに迷ったので調べた
1 | npm install --save-dev babel-preset-es2015 |
BabelでES2015を使うときに必要なやつです。
1 | npm install --save-dev vue-loader |
webpackでVue.jsを扱うようにするやつです。
1 | npm install --save-dev concurrently |
https://github.com/kimmobrunfeldt/concurrently
concurrentlyは複数のコマンド実行できるようにするため。具体的に何をしているかは後ほど説明。
1 | npm install --save-dev lite-server |
https://github.com/johnpapa/lite-server
webpackにもwebpack dev serverというのがあるみたいだけどlite-serverのがシンプルで良さそうなので使ってみた。
ただし設定ファイルは必要でした。
1 | npm install --save-dev webpack |
https://github.com/webpack/webpack
webpackですね。
1 | npm install --save vue |
Vue.jsです。HTMLでscriptタグで読み込むのではなくrequireで読み込めるようにするためですね。
1 | npm install --save jquery |
同じくjqueryもwebpack.ProvidePluginで設定して利用できるようにします。
1 | npm install --save vue-router |
vue-router.jsもrequireで読み込めるようにします。
package.jsonの中のscriptsで何をしているか
1 | "scripts": { |
1 | npm start |
このコマンドでlite-serverを立ち上げwebpackでwatchを行いJavaScriptの変更を監視するようにしている。
1 | "start": "concurrently \"npm run lite\" \"npm run webpack\"" |
scriptsの中にあるstartがこれにあたる。
1 | npm run lite |
1 | npm run webpack |
これらのコマンドはそれぞれ独立したコマンドですが、最初にちょっと触れたがconcurrentlyにダブルクオーテーションでくくってスペースで区切って引数で渡せば並行して実行することになる。便利。
1 | "webpack": "webpack -w", |
これはwebpackのwatch(監視)を走らせている。こちらも後ほど触れるがwebpack.config.jsonで記述されたことをもとに監視している。
1 | "lite": "lite-server", |
lite-serverを立ち上げている。bs-config.jsonに設定ないようを記述している(こちらも後ほど触れる)。
webpack.config.json
webpackの設定です。
1 | var webpack = require("webpack"); |
entryにもとファイル(複数ある場合は配列で持たせる)。outputに出力される設定を記述。今回はbundle.jsっていう一般的によく使われているらしい名称のまま。
けっこうシンプルですね。
依存するパッケージがいろいろあってエラーが出てインストールする感じでした。うーん。
1 | npm install --save-dev css-loader |
1 | npm install --save-dev vue-style-loader |
このふたつのパッケージは「.vueファイル」(コンポーネント化したファイル)でCSSを記述するのでそのために必要ってことですね。
1 | npm install --save-dev vue-html-loader |
これも「.vueファイル」(コンポーネント化したファイル)でHTMLを記述するのでそのために必要ってことです。
bs-config.json
1 | { |
lite-serverの設定はドキュメントルートをappの直下にしたかったのと監視対象のファイル(html、css、js)が変更されたらリロードしてinjectChangesというBrowsersyncを動すため。
サンプルのソースコード
このページを参考にHello Worldしました。
1 |
|
app/index.htmlです。
1 | <style> |
src/app.vueです。styleとhtmlとscriptsがひとつになってるのでキモい人にはキモいかもですが考え方を変えればわかりやすいですね。好みの別れるところでしょうが。。。
language-vue-component
あとAtomでvueのコンポーネントをシンタックスハイライトしてくれるパッケージです。
1 | var Vue = require('vue'); |
routerを使ってコンポーネントapp.vueを呼び出します。 成功すると赤い文字で「Hello world!」と表示されます。
Vue.jsは軽量で扱いやすいMVVMフレームワークですね。
Riot.jsの方が新しくてここのところ注目されているらしいですがVue.jsは日本語ドキュメントが充実していて情報も豊富なので入門しやすいのが特徴ですね。