Slide 1

Slide 1 text

jspm+typescript で開発する

Slide 2

Slide 2 text

名前: @brn (青野健利) 職業: フロントエンドエンジニア・ネイティブエンジニア 会社: Cyberagent アドテクスタジオ RightSegment・AI Messenger ブログ: http://brn-log.hatenablog.com/

Slide 3

Slide 3 text

What is jspm? ブラウザ向けのモジュール管理ツール ES6 Moduleを利用してランタイムでトランスパイルを行う cliも用意されており、npmのようにモジュールのinstallも可能

Slide 4

Slide 4 text

What is jspm? Pros •  watch等のジョブが不要 •  npm・jspm・githubからインストールできる Cons •  jspm_packagesというディレクトリを管理しなければいけない •  常に再コンパイルするのでメモリ負荷が大きい

Slide 5

Slide 5 text

How dose it works? Systemjsのtranspilerという仕組みを利用する。 現在の所、typescriptとbabel、traceurが選択できる。

Slide 6

Slide 6 text

How to use? jspm init moduleのインストール jspm.config.jsの初期化 jspm install :

Slide 7

Slide 7 text

How to use? SystemJS.config({ paths: { "npm:": "jspm_packages/npm/", "test-package/": "src/" }, browserConfig: { "baseURL": "/" }, devConfig: { "map": { "plugin-babel": "npm:systemjs-plugin-babel@0.0.18" } }, transpiler: "plugin-babel", packages: { "test-package": { "main": "test-package.js", "meta": { "*.js": { "loader": "plugin-babel" } } } } }); SystemJS.config({ packageConfigPaths: [ "npm:@*/*.json", "npm:*.json" ], map: {}, packages: {} });

Slide 8

Slide 8 text

With Typescript jspm install ts compiler optionの設定 plugin-typescriptを使う typescriptOptions: { "tsconfig": true, "typeCheck": ‘strict’ }

Slide 9

Slide 9 text

With Typescript { “module”: “system” } tsconfig.json

Slide 10

Slide 10 text

With Typescript そのままブラウザで画面をチェック!

Slide 11

Slide 11 text

With Typescript typescriptでimportしたmoduleがsystemjs経由でロードされる

Slide 12

Slide 12 text

With Typescript Sourcemapsも勝手に生成してくれる!

Slide 13

Slide 13 text

Impressions 使い勝手は良い。 typescriptを書いて、コンパイルするフェーズが無いので、 ブラウザで直接typescriptを実行している感覚 一度設定してしまえば、開発するときには コードを書く => ブラウザをリロードする の流れで通常のJSを書いていた頃の感覚で作業できる。 またkarmaのプラグインもあるので、テストでも利用できる。

Slide 14

Slide 14 text

Impressions ただし、ブラウザ上で •  依存モジュールのロード •  ロードしたモジュールのコンパイル と少々負荷のかかる事を行うので、規模が大きくなってくると 非常にリロードに時間がかかるようになる。 特にnpmのモジュールを使っていると、 稀に依存が非常に多いモジュール等があり、 そういうものをロードすると 一気にストレスがたまる開発環境になってしまう。

Slide 15

Slide 15 text

Adopt or Hold? 使う分にはwebpack、browserifyに移行するのもそんなに難しくないので、 チャレンジしても問題ない。 特にtypescriptやbabelを利用する場合は出力するモジュール形式を 柔軟に変更できるため、どのモジュール管理システムを利用しても 移行・復帰共にあまり気にせず使うべき。 とりあえず、小・中規模程度のアプリにはjspmはかなり楽なのでおすすめ。