SlideShare a Scribd company logo
1 of 34
Download to read offline
Progressive Framework
Vue.js 2.0
Toshiro Shimizu
Vue.js Tokyo v-meetup="#2" 祝 2.0 リリース記念 28.10.2016
About me
清水 俊郎 gh: @toshilow
• 元フリーランスで3月からABEJAで フロントエンドエンジニアをやってます
• もともとはサーバサイトJavaエンジニア
• 3年ほど前からフロントエンドで主にAngular 1xを使ってました
• Vue.jsを使い始めてから8ヶ月
• 群馬県の高崎から通ってます
祝 Vue.js2.0 リリース!!
Vue.jsのここが好き
Reactive リアクティブ
Lightweight 軽量
Simpleシンプル
Easy 簡単
Progressive プログレッシブ
Progressive Framework
https://docs.google.com/presentation/d/1zQ3Frm3DxSw_qY-KEuykkIUREO-ueFbOyMd1Kd8nqKE/edit#slide=id.p
必要になる知識
• Basic web (html, css, js)
• Declarative Rendering  (vueの基本)
• Component System (vueコンポーネント)
• Client-Side Routing (vue-router)
• Large Scale State Management (vuex, fluxの考え方)
• Build System (npm, webpack, browserify, xx-loader…)
• New JS (ES6, Babel, TypeScript …)
• CSS preprocessors (Sass, Less, Stylus, PostCSS …)
一度に学習するのは大変
Vue.jsは段階的な使い方ができる
Step1 既存のページにウィジェットを追加
Step2 簡単なSPAの作成
Step3 ちょっと複雑なSPAの作成
★ browserify - A full-featured Browserify + vueify setup with hot-reload, linting & unit testing.
★ browserify-simple - A simple Browserify + vueify setup for quick prototyping.
★ simple - The simplest possible Vue setup in a single HTML file
★ webpack - A full-featured Webpack + vue-loader setup with hot reload, linting, testing & css extraction.
★ webpack-simple - A simple Webpack + vue-loader setup for quick prototyping.
Step1
既存のページにウィジェットを追加
想定するケース
• 既存のページに動的な機能を追加したい
• 非SPAアプリケーション
• だからと言ってSPAに作りかえるとコストの方が高くつく
• 学習コストはあまりかけられない
• jQueryをやめたい
➜ step1 git:(master) ✗ vue init simple
? Generate project in current directory? Yes
This will install Vue 2.x version of template.
For Vue 1.x use: vue init simple#1.0
? name (step1)
simple template
必要になる知識
• Basic web (html, css, js)
• Declarative Rendering  (vueの基本)
• Component System (vueコンポーネント)
• Client-Side Routing (vue-router)
• Large Scale State Management (vuex, fluxの考え方)
• Build System (npm, webpack, browserify …)
• New JS (ES6, Babel, TypeScript …)
• CSS preprocessors (Sass, Less, Stylus, PostCSS …)
Vueの適用方法
1.vue.jsをscriptタグで読み込む (CDN, bowerなど好きな方法で)
2.適用したいページにvueアプリケーションを組み込む
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<body>

<div id=“app">
     ・
     ・
     ・
<script>
new Vue({

el: '#app'

})
</script>
HTMLへのマッピング
3.DOMとvueのデータをリンクする
<input type="radio"
id=“s"
name=“plan"
value=“100"
v-model="plan"/>
<input type="range"
name="size"
min="0" max="10" step="1"
v-model=“size"/>

new Vue({

el: ‘#app’,
data: {

plan: 100,

size: 0,

options: [],

},

})
HTMLへのマッピング
4.ロジックを追加
<li class=“title">
Total price 
</li>

<li class="subtitle is-3”>
¥{{total}} / 月
</li>
computed: {

sizeTotal: function () {

return (this.size * 500)

},

total: function () {

return

this.plan + 

this.sizeTotal,

].concat(this.options)
.reduce(function(a, b) {
return Number(a) + Number(b)
})

}

}
Step1 DEMO
Step2
簡単なSPAの作成
想定するケース
• 新規の小規模プロジェクト
• HTMLベースのWebデザイナーと協業する
• SPAアプリケーションを作った経験なし
• でもSPAをやってみたい
• あまり時間はかけられない
➜ step2 git:(master) ✗ vue init webpack-simple
? Generate project in current directory? Yes
This will install Vue 2.x version of template.
For Vue 1.x use: vue init webpack-simple#1.0
? Project name step2
? Project description A Vue.js project
? Author 清水俊郎 <toshilow@gramp.biz>
vue-cli · Generated "step2".
To get started:
cd step2
npm install
npm run dev
➜ step2 git:(master) ✗
webpack-simple template
必要になる知識
• Basic web (html, css, js)
• Declarative Rendering  (vueの基本)
• Component System (vueコンポーネント)
• Client-Side Routing (vue-router)
• Large Scale State Management (vuex, fluxの考え方)
• Build System (npm, webpack, browserify …)
• New JS (ES6, Babel, TypeScript …)
• CSS preprocessors (Sass, Less, Stylus, PostCSS …)
画面構成
リストログイン 詳細
vue-routerを導入
➜ step2 git:(master) ✗ yarn add vue-router
routes: [

{ path: '/login', component: Login },

{ path: '/app', component: App ,

children: [

{ path: '/', component: List },

{ path: ':id', component: Detail },

]

},

{ path: '*', redirect: '/login' }

]
<div id="app">

<router-view></router-view>

</div>
import Vue from 'vue';

import router from './router'



new Vue({

router

}).$mount('#app');
外部のコンポーネントを導入
➜ step2 git:(master) ✗ yarn add vue-charts
import Vue from 'vue'

import Charts from 'vue-charts'



Vue.use(Charts)
<vue-chart

:columns="columns"

:rows="rows"

:options="options"></vue-chart>
data: function () {

return {

columns: [{'type': 'string','label': ‘Year'}
, {'type': 'number','label':'Power'}],

rows: [

['2004', 1000],

['2005', 1170],

['2006', 660],

['2007', 1030]

],

options: {

title: 'Performance',

hAxis: { title: 'Year'},

vAxis: { title: '' },

width: '100%',height: 300}

}

}
Step2 DEMO
Step3
ちょっと複雑なSPAの作成
想定するケース
• 新規の中・大規模プロジェクト
• 本格的にSPAに挑戦したい
• チーム開発
• テストもしっかりやりたい
• 型チェックしたい
• 構文チェックもしたい
➜ step3 git:(master) ✗ vue init webpack
? Generate project in current directory? Yes
This will install Vue 2.x version of template.
For Vue 1.x use: vue init webpack#1.0
? Project name step3
? Project description A Vue.js project
? Author 清水俊郎 <toshilow@gramp.biz>
? Vue build runtime
? Use ESLint to lint your code? Yes
? Pick an ESLint preset Standard
? Setup unit tests with Karma + Mocha? Yes
? Setup e2e tests with Nightwatch? Yes
vue-cli · Generated "step3".
To get started:
cd step3
npm install
npm run dev
Documentation can be found at https://vuejs-templates.github.io/
webpack
webpack template
必要になる知識
• Basic web (html, css, js)
• Declarative Rendering  (vueの基本)
• Component System (vueコンポーネント)
• Client-Side Routing (vue-router)
• Large Scale State Management (vuex, fluxの考え方)
• Build System (npm webpack, browserify …)
• New JS (ES6, Babel, TypeScript …)
• CSS preprocessors (Sass, Less, Stylus, PostCSS …)
• Unit test E2E test Lint more…
好きにやっちゃってください
ABEJAで使っている技術セット
•Vue.js (まだ1.xです…)
•vue-router vue-i18n vuex vuex-router-sync vue-fire vue-google-map
•yarn
•webpack
•babel es2015
•esLint
•karma + mocha + power-assert
•FlowType
•bootstrap-sass
•Firebase
まとめ
最初から全て覚えなくても始められる
ステップアップして大規模にも対応出来る
規模によって道具を使い分ける必要がないのはメリット
自分は選択肢が広く多様性はいいことだと思う
まずはStep1みたいなものからやってみてはどうでしょう
Sample Code https://github.com/toshilow/progressive-vue
Join us!! 
フロントエンドエンジニア募集
参考
Modern Frontend Development with Vue.js
https://docs.google.com/presentation/d/1zQ3Frm3DxSw_qY-KEuykkIUREO-ueFbOyMd1Kd8nqKE/
edit#slide=id.p
Vue.js Progressive Framework
http://qiita.com/mikakane/items/3bd6af69259f5af6fecb
第1回 プログレッシブフレームワーク Vue.js
https://github.com/vuejs/vue-router/tree/next-doc
vuejs/vue-cli
https://github.com/vuejs/vue-cli
おわり

More Related Content

What's hot

iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
Kosuke Ogawa
 
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話AngularJSでの非同期処理の話
AngularJSでの非同期処理の話
Yosuke Onoue
 
ライオンでも分かるVuejs
ライオンでも分かるVuejsライオンでも分かるVuejs
ライオンでも分かるVuejs
lion-man
 

What's hot (20)

iOS WebView App
iOS WebView AppiOS WebView App
iOS WebView App
 
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
iOS 8のWebKit Frameworkでアプリ内ブラウザがどう変わる?
 
プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話プロダクトに 1 から Vue.js を導入した話
プロダクトに 1 から Vue.js を導入した話
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
 
チュートリアルではじめるVue.js
チュートリアルではじめるVue.jsチュートリアルではじめるVue.js
チュートリアルではじめるVue.js
 
WKWebViewとUIWebView
WKWebViewとUIWebViewWKWebViewとUIWebView
WKWebViewとUIWebView
 
はじめてのVue.js
はじめてのVue.jsはじめてのVue.js
はじめてのVue.js
 
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱いiOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
 
let UIWebView as WKWebView
let UIWebView as WKWebViewlet UIWebView as WKWebView
let UIWebView as WKWebView
 
AngularJSでの非同期処理の話
AngularJSでの非同期処理の話AngularJSでの非同期処理の話
AngularJSでの非同期処理の話
 
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよクライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
 
ライオンでも分かるVuejs
ライオンでも分かるVuejsライオンでも分かるVuejs
ライオンでも分かるVuejs
 
はじめよう Backbone.js
はじめよう Backbone.jsはじめよう Backbone.js
はじめよう Backbone.js
 
Async Enhancement
Async EnhancementAsync Enhancement
Async Enhancement
 
The master plan of scaling a web application
The master plan ofscaling a web applicationThe master plan ofscaling a web application
The master plan of scaling a web application
 
AngularJSの高速化
AngularJSの高速化AngularJSの高速化
AngularJSの高速化
 
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
サーバサイドで動的にhtml生成していたりjQueryをガッツし使っている既存プロジェクトにAngularJSを部分的につっこんでみた @jscafe21
 
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
Vue.jsの関連ツール・ライブラリ(Vuex, Vue-Router, Nuxt)
 
DevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJSDevLOVE Kansai KnockoutJS
DevLOVE Kansai KnockoutJS
 
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べたWkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
 

Viewers also liked

Viewers also liked (20)

Vue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.jsVue 2.0 + Vuex Router & Vuex at Vue.js
Vue 2.0 + Vuex Router & Vuex at Vue.js
 
Vue.js for beginners
Vue.js for beginnersVue.js for beginners
Vue.js for beginners
 
Vue JS Intro
Vue JS IntroVue JS Intro
Vue JS Intro
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0
 
An Introduction to Vuejs
An Introduction to VuejsAn Introduction to Vuejs
An Introduction to Vuejs
 
Vue.js
Vue.jsVue.js
Vue.js
 
Vue js and Vue Material
Vue js and Vue MaterialVue js and Vue Material
Vue js and Vue Material
 
Why Vue.js?
Why Vue.js?Why Vue.js?
Why Vue.js?
 
Javascript MVVM with Vue.JS
Javascript MVVM with Vue.JSJavascript MVVM with Vue.JS
Javascript MVVM with Vue.JS
 
Vue js 大型專案架構
Vue js 大型專案架構Vue js 大型專案架構
Vue js 大型專案架構
 
Love at first Vue
Love at first VueLove at first Vue
Love at first Vue
 
Vue.js
Vue.jsVue.js
Vue.js
 
Vue.js is boring - and that's a good thing
Vue.js is boring - and that's a good thingVue.js is boring - and that's a good thing
Vue.js is boring - and that's a good thing
 
Vue.js - o framework progressivo
Vue.js - o framework progressivoVue.js - o framework progressivo
Vue.js - o framework progressivo
 
Vue.js with Go
Vue.js with GoVue.js with Go
Vue.js with Go
 
Enjoy the vue.js
Enjoy the vue.jsEnjoy the vue.js
Enjoy the vue.js
 
從改寫後台 jQuery 開始的 Vue.js 宣告式渲染
從改寫後台 jQuery 開始的 Vue.js 宣告式渲染從改寫後台 jQuery 開始的 Vue.js 宣告式渲染
從改寫後台 jQuery 開始的 Vue.js 宣告式渲染
 
Vue
VueVue
Vue
 
フロントエンドエンジニアとしてAWS re:invent に行ってきました
フロントエンドエンジニアとしてAWS re:invent に行ってきましたフロントエンドエンジニアとしてAWS re:invent に行ってきました
フロントエンドエンジニアとしてAWS re:invent に行ってきました
 
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
Сергей Морковкин "Разработка realtime SPA с использованием VueJS и RethinkDB"
 

Similar to Progressive Framework Vue.js 2.0

13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
Hiroaki Wakamatsu
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626
Taku AMANO
 

Similar to Progressive Framework Vue.js 2.0 (20)

13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Vue入門
Vue入門Vue入門
Vue入門
 
HTML5 on ASP.NET
HTML5 on ASP.NETHTML5 on ASP.NET
HTML5 on ASP.NET
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころ
 
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみようJavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
JavaScript + CSS3を活用して スマートフォンサイト/アプリに 動きを付けてみよう
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
Vue.js で XSS
Vue.js で XSSVue.js で XSS
Vue.js で XSS
 
20200304 vuejs
20200304 vuejs20200304 vuejs
20200304 vuejs
 
Node.js勉強会 Framework Koa
Node.js勉強会 Framework KoaNode.js勉強会 Framework Koa
Node.js勉強会 Framework Koa
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
Infrastructure as code for azure
Infrastructure as code for azureInfrastructure as code for azure
Infrastructure as code for azure
 
ASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみたASP.NET MVCとEntity Frameworkで作ってみた
ASP.NET MVCとEntity Frameworkで作ってみた
 
Logic Apps と Api Apps の話
Logic Apps と Api Apps の話Logic Apps と Api Apps の話
Logic Apps と Api Apps の話
 
HTML5-20100626
HTML5-20100626HTML5-20100626
HTML5-20100626
 

Progressive Framework Vue.js 2.0