present
Part of
Doscom.org - Dinus Open Source Community
&
Mozilla Foundation as Mozilla Tech Speaker
Work for
as Front-end Developer
@dikyarga || dikyarga.com
Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces.
Created by Evan You @yyx990803
monthly npm downloads (~800k) or weekly dev tools users (~270k)
Easy to integrate, Low Learning Curve
v-bind
Binding data ke dalam view
Pakai double kurung kurawal
{{ }}
Attribute Binding
Pakai v-bind:nama-atribut
banyak variasi v-bind ini seperti v-bind:src, v-bind:class, v-bind:alt, dan lain sebagainya.
shortcut seperti :title, :src, :class, :alt dan sebagainya.
Two way data binding
v-model untuk melakukan two way binding yang biasanya sering ditempelkan pada sebuah elemen input dan textarea HTML
Event Binding
v-on trigger event seperti : v-on:click, v-on:blur, v-on:focus, v-on:keyup dan sebagainya.
Shorthand: v-on adalah @, jadi sama dengan @click, @change
Data
Data di dalam Vue.js merupakan sekumpulan variabel yang digunakan oleh html template dan dapat dimanipulasi dan dimanfaatkan oleh internal komponen masing-masing dan tidak dapat diakses oleh komponen lainnya. Jadi sebuah variabel di dalam suatu komponen Vue.js hanya akan berpengaruh terhadap komponen itu sendiri.
Method
Methods merupakan opsi dalam Vue.js yang berupa object berisi function-function. Function ini sendiri akan memiliki berbagai tujuan yang berbeda-beda dan bervariasi baik memanipulasi data ataupun melakukan sebuah logika bisnis sebuah aplikasi.
Mapping sebuah Array menjadi element dengan v-for
Render view ketika sesuatu terpenuhi dengan v-if atau tidak terpenuhi dengan v-else
Let's build something useful!
input field of product name
sell button
character remaining
upload photo
remove photo from the form
Buka aja
<body style="padding: 25px">
<div class="container" id="BukaVue">
<div class="row">
<div class="col-xs-12">
<h5>Jual Barang di BukaVue</h5>
<div class="form-horizontal">
<div class="form-group" >
<label class="control-label col-sm-3">Nama Barang :</label>
<div class="col-sm-5">
<input placeholder="Nama Barang">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-10">
<button type="submit" class="btn btn-primary">Jual</button>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
contekan, biar cepet aja dan fokus ke Vue.js nya
setup CSS: Bootstrap dan JS: Vue
<button type="submit" class="btn btn-primary" :disabled="nameIsEmpty">Jual</button>
init Vue.js and let's go
new Vue({
el: '#BukaVue',
data: {
name: '',
},
computed: {
nameIsEmpty() {
return this.name.length == 0;
}
}
})
JS
<input placeholder="Nama Barang" v-model="name">
HTML
tambah disabled attribute binding
\/ contoh hasil dibawah \/
Contoh hasil nya
kita butuh konstanta MAX_NAME_LENGTH
// tambah function characterRemaining()
// pada option computed
characterRemaining(){
return MAX_NAME_LENGTH - this.name.length;
}
JS
// buat tag baru
<span>
{{ characterRemaining }} karakter tersisa
</span>
HTML
\/ contoh hasil dibawah \/
Contoh hasil nya
kita pakai class binding v-bind:class / shorthand :class
// tambah function showDanger()
// pada option computed
showDanger(){
return this.characterRemaining <= 0;
}
JS
<span v-bind:class="{'text-danger': showDanger}">
{{ characterRemaining }} karakter tersisa
</span>
HTML
\/ contoh hasil dibawah \/
good bye addClass() & removeClass() :D
Contoh hasil nya
agak ribet dikit, jadi perhatiin baik-baik ya :D
JS
HTML
\/ contoh hasil dibawah \/
Upload Foto
agak ribet dikit, jadi perhatiin baik-baik ya :D
JS
HTML
\/ contoh hasil dibawah \/
Conditional rendering dan Hapus Foto
tambahin di computed
tambahin di methods
Contoh hasil nya
agak ribet dikit, jadi perhatiin baik-baik ya :D
\/ contoh hasil dibawah \/
Refactor
Bisa kerjain dalam < 10 menit
dapat Voucher Pulsa / Data / Game seneliai 50K
Bukalapak.com
Contoh hasil nya
Ping me at
Telegram : @dikyarga
Email : diky.arga@bukalapak.com