3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Vue.js 公式仕様を読み解く】インストール

Last updated at Posted at 2020-12-26

#この記事を書こうと思ったワケ

「vue.jsに詳しくなろうの会」の輪読成果物です。
わからないことや指摘など意見をいただけると嬉しいです。

今回はインストールについて、理解したこと+理解するために学び直した内容をざっとまとめました。もし誤りなどございましたら、ご指摘頂けますと幸いです。

※書かれたものの全てを要約したわけではありません。

#インストール

##ビルドについて詳しく
「さまざまなビルドについて」とあるけど、そもそもビルドって何だったっけ?

ソフトウェアのビルド(英: build)は、プログラミング言語で書かれたソースコードファイルや各種リソースファイルを独立したソフトウェア生成物に変換するコンピュータ上で実行されるプロセス、またはその結果を指す。

ビルドの最終生成物はバイナリ形式の実行ファイルであったり、再利用可能なライブラリであったり、バイトコードあるいはそれらをまとめたアーカイブであったりすることもある。

###「ビルド」の基本的な流れ
※以下はC言語を基に書いていますが、言語によってはその機能が存在しないものもある。じゃあなんで書いたの?ということだけれども「ビルド」そのものの基本を知りたかったため。

  1. 各ソースコードの静的解析を行う
  2. プリプロセッサで前処理を行う
  3. ソースコードのコンパイル
  4. 各オブジェクトファイルとライブラリをリンクする
  5. 4.の「リンカー」で各オブジェクトファイルやライブラリのリンクが行われ、全ての部品をリンクすることで、最終的に「実行ファイル」が完成

※リンカー(linker):ライブラリに収録された中間言語ファイル・ソースをコンパイルして生成された中間言語ファイルを1つに結合し、最終的な実行形式ファイルにするプログラム(これもCならではのものかと)。リンカーそのものは、Cならではの言語仕様だが、他の言語でも同じ役割をする物はあるのでは?

image.png

さまざまなビルドについて

JavaScriptをサーバーサイド上で実行する環境であるNode.jsのパッケージ管理システムnpmパッケージdist/ディレクトリ(vue@2.6.12/dist/) では Vue.js の多くのビルドファイルがある。具体的な中身は以下の添付の写真の通り。

スクリーンショット 2020-12-26 9.52.43.png

そして、それらの違いを区分すると以下の公式の通りになる。
スクリーンショット 2020-12-26 9.52.20.png

###Vue.jsの用語

  • 完全: コンパイラとランタイムの両方が含まれたビルド(ファイル群)。
  • Vue.jsのコンパイラ: テンプレート文字列を JavaScriptのrender関数にコンパイルするためのコード。テンプレートの表現をJavaScriptに落とし込むプログラムともいえる。
  • ランタイム: Vue インスタンスの作成やレンダリング、仮想 DOM の変更などのためのコード。基本的にコンパイラを除く全てのもの。

##ランタイム + コンパイラとランタイム限定の違い

  • もしクライアントでテンプレートをコンパイルする必要がある (例えば、 テンプレートオプションに文字列を渡す、もしくは DOM 内の HTML をテンプレートとして利用し要素にマウントする) 場合は、コンパイラすなわち、完全ビルドが必要。
main.js
// これはコンパイラが必要です(Vueのテンプレート構文を使っているため)
new Vue({
  template: '<div>{{ hi }}</div>'
})

// これはコンパイラは必要ありません(JavaScriptのrender関数だから)
new Vue({
  render (h) {
    return h('div', this.hi)
  }
})
  • vue-loader や vueify を使うと、.vueファイル内のテンプレートがビルドを始めるタイミングでJavaScriptに事前コンパイルされる。

開発モードと本番モードの違い

  • CommonJS と ES Module ビルドはバンドラでの利用を意図しているため、圧縮バージョンを提供していないため、開発者の責任で最終成果物を圧縮する必要がある。
  • バンドラー(bundler)
    • 複数ファイルに書かれたJavaScriptを、モジュールなどを読み込みつつ、ひとつのバンドルにしてくれるツール。
    • 例:Webpack、Rollup、Browserify

#参考

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?