JavaScriptは大きく分けて、クライアントサイドと、サーバーサイドJSがある。
JavaScriptを書くのが大変なので、その代替とするための言語群
下記のほかにもDart
Haxe
JSX
Scala.js
他100種ほどある。
2016とかは、JSのバージョン JavaScript の標準 ECMA(European Computer Manufacture Association)Internationalが、ECMAScript(ECMA-262)規格を策定し、 それによる標準化されたJavaScriptを ECMAScript を示している
ECMAScript6 の仕様を積極的に取り込んでいる。
classと宣言することで、クラスが書ける。
extendsでクラスの継承ができる。
moduleを使うことで型や、名前空間の定義を行うことができる。
CoffeeScriptよりコンパイル速度は遅い。
CoffeeScriptの書き方
&& -> and
|| -> or
hoge === huga -> hoge is huga
varやfunctionいらない。
()や{}ではなく、インデントで行う。カンマもセミコロンもいらない。
そのため書きやすい。
フロント側のみの操作なら、jQueryだけでも平気だが、大規模になってくると、UI操作のロジック、Ajaxだのコールバック関数だのが必要になり、複雑なコードになりがち
→そこでMVCパターンを考慮してアプリケーションを作成することで、UI操作ロジックとアプリケーションるロジック、さらに業務ロジックを分離、集約することができ、コードの可読性が向上。
また、「イベント」という仕組みにより業務ロジックがUIに依存しなくなるため、再利用もしやすくなる。
React.js
Angular.js
Angular.js 2.0
Backbone.js
Vue.js
Mithril.js
Aurelia.js
Knockout.js
Ember.js
Riot.js
Ractive.js
などなど…
jQuery
サーバサイドJavaScriptには、「CommonJS」と呼ばれる標準化が策定されている。 Node.jsは、このCommonJSに則って開発されている。
npmはnode.jsのpackageを管理するためのツール。
2016年4月現在のトレンドでは、GruntよりGulpとWebPackの方が人気。GulpはGruntと比べてシンプルな記述と高速な処理が可能なタスクランナー、WebPackはJavaScriptからCSS、画像等あらゆるアセットを生成する近年人気のビルドツールです。
Browserifyは非常に便利ですが、調べてみるとWebPackの方が良さげでした。
CSS, Image, json, フォント… 何でもビルドして1つのbundle.jsにしてしまえるから。
また、1ファイルではなく複数のファイルにビルドすることも可能なようです。
- コード分割
- requireの使い方で、AMDのような非同期のロードもサポート
- Loaderという読み込み時に適用するプラグイン
- require時に変数が入っていてもパースできるような、賢いパース
- Pluginによる拡張
→BrowserifyとWebpackとの一番の違いは、Browserifyが 単一ファイル を作成するのに特化していたのと比較して、Webpackは 複数ファイルを出力すること を念頭に置いている点
ここからはWebpackを実際にやってみた自分の備忘録
$ npm initパッケージの管理下におく$ npm install webpack --save-devwebpackをインストールするwebpackの部分を変えればbootstrapのような外部モジュールを読み込むことができる。パッケージをインストールし、package.jsonへ書き込む--saveオプションを指定して、package.jsonのdependenciesにバージョン付きで書き込む
--save--devオプションを指定して、package.jsonのdevDependenciesにバージョン付きで書き込む
-gオプションでグローバル領域にインストール
このオプションは開発時のみに利用するライブラリのバージョンを管理する。<script type="text/javascript" src="bundle.js" charset="utf-8"></script>head内に記述する$ webpack main.js bundle.jswebpack (ソース.js) (出力する.js)でビルドする$ npm ls -gグローバルインストールされたパッケージの一覧
ビルド時に圧縮--optmize-minimize
ファイルの変更を監$ webpack --watch
Webサーバーとして動作、移動リロード
webpack-dev-server --inline