Upgrade to Pro — share decks privately, control downloads, hide ads and more …

がんばらない Vue.js / Vuejs on VS Code & TypeScript

miyake
May 29, 2019

がんばらない Vue.js / Vuejs on VS Code & TypeScript

de:code 2019 で発表したスライドです。

Web フロントエンドの開発で近年人気が高まっている Vue.js ですが、移り変わりの激しいフロントエンド技術を追いかけることが目的になってしまい、開発自体の効率がなかなか上がらないという声もよく聞きます。

このセッションでは、Visual Studio Code + TypeScript 利用してクールに Vue.js を開発できる手法や Tips を紹介します。

miyake

May 29, 2019
Tweet

More Decks by miyake

Other Decks in Programming

Transcript

  1. About Me 三宅 和之 @kazuyukimiyake 株式会社ゼンアーキテクツ CTO Microsoft MVP Vue.js

    日本ユーザーグループ コアスタッフ typescript‑jp 立ち上げスタッフ PaaS がかりの部屋(Blog): https://k‑miyake.github.io/blog/
  2. Vue.js の現状 JavaScript フレームワークのひとつ React, Angular と並んで人気がある GitHub Star: 約

    13,900 プログレッシブフレームワーク 初学者でも習得しやすい: 日本語の 公式サイト や書籍が充実 小さくはじめられる: プログレッシブフレームワーク 常に進化している 2019 年は 3.x へのメジャーバージョンアップが予定されている
  3. 日本国内でもユーザーが急増中 Meetup は数分で満員に! 2018 年 11 月に Vue Fes Japan

    2018 が開催された 日本初となる大規模 Vue.js カンファレンス Vue.js の作者である Evan You が Vue.js 3.0 のコンセプトを説明した Vue Fes Japan 2019 も開催決定!
  4. がんばらない人() => VS Code + TypeScript 定番の開発環境 TypeScript 必須ではないが、これからやるなら推奨 2019

    年中のリリースが計画されている Vue.js 3.x では TypeScript サポートの大幅 な改善が予定されている クラス形式ではなく、 Vue.extend 方式がおすすめ (理由は こちら ) Visual Studio Code Vetur 機能拡張 .vue ファイル(SFC) + TypeScript で開発するならほぼ必須
  5. がんばらない人() => Vue CLI Vue CLI Vue.js の開発環境を整えてくれる 公式コマンドラインツール webpack

    を隠蔽してくれている さまざまなプロジェクト作成オプションがある TypeScript 利用有無 Router , Vuex , ESLint などプラグインの導入 CLI なのに UI もある!
  6. Inside the DEMO: Vue CLI $ vue create hello-vue Vue

    CLI v3.8.2 ? Please pick a preset: Manually select features ? Check the features needed for your project: ◯ Babel ❯◉ TypeScript ◯ Progressive Web App (PWA) Support ◉ Router ◯ Vuex ◯ CSS Pre-processors ◉ Linter / Formatter ◯ Unit Testing ◯ E2E Testing
  7. がんばらない人() => Vue CLI プラグイン やってくれること npm モジュールの導入 設定ファイル等の追加 Vue

    インスタンスへのロード etc たとえば HTTP クライアントである axios の導入 多言語対応を実現する vue-i18n の導入 など
  8. Inside the DEMO: Vue CLI Plugin - axios import Vue

    from "vue"; import axios, { AxiosResponse } from "axios"; export default Vue.extend({ methods: { // Azure Text Translator API の実行 async invokeTranslator(text: string): Promise<TranslatorResult> { const res: AxiosResponse = await axios.post( "https://xxx-vue.azurewebsites.net/api/translate", { target: text } ); return res.data; } } });
  9. Inside the DEMO: Element <template> <div class="form"> <el-form ref="form" :model="request"

    label-width="120px"> <el-form-item label=" タイトル"> <el-input v-model="request.title"></el-input> </el-form-item> <el-form-item label=" 本番環境"> <el-switch v-model="request.isProduction"></el-switch> </el-form-item> <el-form-item label=" 内容"> <el-input type="textarea" rows="3" v-model="request.desc"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="onSubmit"> 登録</el-button> </el-form-item> </el-form> </template>
  10. Advanced Vue.js Component を使った開発 トランジション、アニメーションの実装 Linter / Formatter の導入: ESLint

    Vuex によるステート管理 Testing: vue-test-utils , Jest サーバーサイドレンダリング etc.. 詳細: Vue.js 日本語公式ドキュメント