Vue.js Tokyo v-meetup #6 での発表資料です!
github(サンプルプロジェクト)はこちら https://github.com/maeharin/kotlin-dvd-rental-dev
10年前のレガシーシステムをVue.js TypeScript Elementでフルリニューアルしている話#vuejs_meetup62017/12/13 Vue.js Tokyo v-meetup #6エムスリー株式会社 前原@maeharin
View Slide
● 前原 秀徳● @maeharin(まえはりん)● エムスリー株式会社● エンジニアチームリーダー、グループ会社取締役等を歴任● 好きな言語等:Kotlin、Ruby、Vue.js● 好きな漫画:ベルセルク(心の支え。悩んだら読む)● 自慢:ブログ記事が、はてぶ1200超えた○http://maeharin.hatenablog.com/自己紹介
背景● 10年前のレガシーをリニューアル中● 詳しくは以下のスライドをご覧ください!
postgresqlElasticSearchメインサイトサテライトサイト postgresql管理画面(3種)Java10年ものJava7年もの生Lucene生Luceneリニューアル前の技術スタック約100テーブル重複
postgresqlElasticSearchメインサイトサテライトサイト postgresql管理画面(3種)Java10年ものJava7年もの生Lucene生Luceneリニューアル前の技術スタック約100テーブル重複廃止フルリプレイス
postgresqlElasticSearchメインサイトサテライトサイト管理画面(3種) APIサーバーリニューアル後の技術スタック
postgresqlElasticSearchメインサイトサテライトサイト管理画面(3種) APIサーバーリニューアル後の技術スタック今回の話
旧管理画面(10年もの)Javaの独自FW古の技術XSLT…旧管理画面(10年もの)独自FW・jQueryのコンボ...
新管理画面新管理画面ElementとTypeScriptが活躍!旧管理画面(10年もの)Javaの独自FW
● Vue.jsのデスクトップUIフレームワーク● 最新ver: 2.0.8(2017/12/13現在)○ 2017/10/27に2.0.0リリース○ TypeScript型定義がバンドルされた● フォームやボタンなど、大量のUIコンポーネントありElement
UIコンポーネントの例
人気npmダウンロードトレンドElement
i18n(日本語対応)
Vetur(VSCodeプラグイン)もサポート
個人的に重宝しているパーツ
Dialog
el-dialogのvisibleにbooleanのdataをバインドするだけ
Date Range
el-date-pickerでtypeをdaterangeにする
Select(Option Filtering)
el-selectにfilterableをつけるだけ
Validation
rulesにバリデーションルールをセット
バリデーションルールを記載* yiminghe/async-validatorの記法
他にも大量のパーツあり!・少ない手数でリッチなUIを実装できる・管理画面の開発にマッチ
TypeScript
Vue.js 2.5でTypeScript対応が強化された● Vue.js 2.5(2017/10/13 リリース)● オブジェクト型の構文でもthisの型が推論されるように
Vue.js 2.5以前● オブジェクト構文ではthisの型が推論されなかった● vue-class-component等を用いてクラス構文にする必要があった
Vue.js 2.5以降● オブジェクト構文でもthisの型が推論される!
コミッタの方々、ありがとうございます!
私達のプロジェクト:APIの型定義が欲しい● 業務用管理画面● APIの1エンドポイントのプロパティが50個とか● エンドポイントに対するTypeScript型定義が欲しい○ プロパティの補完・タイポ削減APIサーバーフロントサーバー※セッションを管理するプロキシとして動作。VueとKotlinの間でリクエスト内容を変換することはない
Kotlin&Spring Boot(APIサーバー)API定義ファイル(json)SpringFoxでAPI定義ファイル生成API定義ファイルを利用swagger-codegenコマンドRubyクライアント自動生成swagger-codegenで自動生成● SpringFoxでswagger definition(json)を生成● そのjsonをswagger-codegenに食わせるTypeScript型定義
githubにあげてますサンプルプロジェクトありますhttps://github.com/maeharin/kotlin-dvd-rental-dev
postgresqlElasticSearchcustomer-frontadmin-frontapiAPIクライアントswagger-codegenで自動生成サンプルプロジェクトの構成API型定義
開発の流れ
APIサーバーのエンドポイントを書く
swagger-codegenを実行(ビルド時に自動実行)
RubyとTypeScriptコードが自動生成されるRuby* GemTypeScript* npmライブラリ
Rubyのコードを書く
Vue.jsのコードを書く(TypeScript)APIのプロパティ補完。捗る!
● 特に管理画面の開発で、Elementはよい選択肢と思う● Vue.js 2.5でTypeScript強化されて嬉しみが増した○まだテンプレート部分には型補完が効かない模様○今後効くようになったら最高● swagger-codegenでTypeScriptの型定義生成はありまとめ
ご清聴ありがとうございました!