{"id":108,"date":"2017-08-07T00:16:10","date_gmt":"2017-08-07T00:16:10","guid":{"rendered":"http:\/\/lluo.ca\/?p=108"},"modified":"2017-11-09T20:13:40","modified_gmt":"2017-11-09T20:13:40","slug":"vue-js","status":"publish","type":"post","link":"http:\/\/lluo.ca\/?p=108","title":{"rendered":"Vue.js Basics"},"content":{"rendered":"<p>Vue.js Basics<\/p>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=z6hQqgvGI4Y&amp;t=47s\">https:\/\/www.youtube.com\/watch?v=z6hQqgvGI4Y&amp;t=47s<\/a><\/p>\n<p><a href=\"https:\/\/vuejs.org\/v2\/guide\/\">https:\/\/vuejs.org\/v2\/guide\/<\/a><\/p>\n<h2>Install<\/h2>\n<p>$npm install -g vue-cli<br \/>\n$vue init webpack myapp \u00a0 \u00a0 \/\/ Create new project with &#8216;webpack&#8217; template<br \/>\n$cd myapp<br \/>\n$npm install<br \/>\n$npm run dev<br \/>\n$npm run build<\/p>\n<p>$npm install vue-resource &#8211;save \u00a0 \u00a0(50 min)<\/p>\n<p>$npm install vue-router &#8211;save (55.34 min)<\/p>\n<h2>Tools<\/h2>\n<p>vue-router &#8211; Official router<br \/>\nvue-resource &#8211; Handle web requests<br \/>\nvue-async-data &#8211; Async data loading<br \/>\nvue-validator &#8211; Form validation plugin<br \/>\nvue-devtools &#8211; Chrome devtools extension<br \/>\nvue-touch &#8211; Touch guestures using Hammer.js<\/p>\n<h2>Basic<\/h2>\n<p>&lt;input type=&#8221;text&#8221; v-model=&#8221;title&#8221;&gt;<br \/>\n&lt;h1&gt;{{title}}<\/p>\n<p>&lt;button v-on:click=&#8221;myClickMethod&#8221;&gt;my button&lt;\/button&gt;<br \/>\n&lt;button v-on:submit=&#8221;mySubmitMethod&#8221;&gt;my button&lt;\/button&gt;<br \/>\n&lt;button v-on:keyup.enter=&#8221;myEnterMethod&#8221;&gt;my button&lt;\/button&gt;<\/p>\n<p>&lt;li v-for=&#8221;user in users&#8221;&gt;{{user.name}}&lt;\/li&gt;<\/p>\n<p>export default {<br \/>\nname: &#8216;users&#8217;,<br \/>\ndata(){<br \/>\nreturn{<br \/>\nusers:[&#8230;..]<br \/>\n}<br \/>\n},<br \/>\nmethods:{<br \/>\n&#8230;.<br \/>\n}<br \/>\n}<\/p>","protected":false},"excerpt":{"rendered":"<p>Vue.js Basics https:\/\/www.youtube.com\/watch?v=z6hQqgvGI4Y&amp;t=47s https:\/\/vuejs.org\/v2\/guide\/ Install $npm install -g vue-cli $vue init webpack myapp \u00a0 \u00a0 \/\/&hellip;<\/p>\n","protected":false},"author":2,"featured_media":146,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","jetpack_publicize_message":""},"categories":[6,9],"tags":[10],"jetpack_featured_media_url":"http:\/\/lluo.ca\/wp-content\/uploads\/2017\/08\/cover-850x416.jpg","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7kiDJ-1K","_links":{"self":[{"href":"http:\/\/lluo.ca\/index.php?rest_route=\/wp\/v2\/posts\/108"}],"collection":[{"href":"http:\/\/lluo.ca\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/lluo.ca\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/lluo.ca\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/lluo.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=108"}],"version-history":[{"count":9,"href":"http:\/\/lluo.ca\/index.php?rest_route=\/wp\/v2\/posts\/108\/revisions"}],"predecessor-version":[{"id":120,"href":"http:\/\/lluo.ca\/index.php?rest_route=\/wp\/v2\/posts\/108\/revisions\/120"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/lluo.ca\/index.php?rest_route=\/wp\/v2\/media\/146"}],"wp:attachment":[{"href":"http:\/\/lluo.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=108"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/lluo.ca\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=108"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/lluo.ca\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=108"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}