present

Diky Arga

Open Source Enthusiast

Part of

Doscom.org - Dinus Open Source Community

&

Mozilla Foundation as Mozilla Tech Speaker

Work for

 

 

as Front-end Developer

Coding + Gowes

@dikyarga || dikyarga.com

Vue.js

The Progressive

JavaScript Framework

Vue (pronounced /vjuː/, like view) is a progressive framework for building user interfaces.

Fun Fact about Vue.js

Created by Evan You @yyx990803

monthly npm downloads (~800k) or weekly dev tools users (~270k)

Why we migrate to Vue.js

Easy to integrate, Low Learning Curve

Beberapa Cara Instalasi Vue.js

  • Langsung include
  • Lewat CDN
  • Pakai NPM
  • Pakai CLI
  • Pakai Bower

Vue Component

Data Binding di Vue.js

v-bind

Data Binding di Vue.js

Binding data ke dalam view

Pakai double kurung kurawal

{{ }}

Data Binding di Vue.js

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.

 

Data Binding di Vue.js

Two way data binding

 v-model untuk melakukan two way binding yang biasanya sering ditempelkan pada sebuah elemen input dan textarea HTML

Data Binding di Vue.js

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

Mengenal Data dan Method

pada Vue Component

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.

Mengenal Data dan Method

pada Vue Component

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.

List Rendering

Mapping sebuah Array menjadi element dengan v-for

Conditional Rendering

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

Breakdown

  1. Buat kerangka tampilan statik
  2. Awalnya tombol jual harus disabled, setelah diisi baru aktif
  3. Tampilkan karakter tersisa
  4. Kondisional styling warna karakter tersisa
  5. Tambah dan hapus foto
  6. Bisa unggah lebih dari satu foto

1. Buat Kerangka Tampilan Statik

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

2. Buat Tombol Jual dari Disabled jadi Aktif

<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 \/

2. Buat Tombol Jual dari Disabled jadi Aktif

Contoh hasil nya

3. Tampilkan Karakter Tersisa

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 \/

3. Tampilkan Karakter Tersisa

Contoh hasil nya

4. Kondisional styling warna karakter tersisa

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

4. Kondisional styling warna karakter tersisa

Contoh hasil nya

5. Tambah dan Hapus Foto

agak ribet dikit, jadi perhatiin baik-baik ya :D

JS

HTML

\/ contoh hasil dibawah \/

Upload Foto

5. Tambah dan Hapus 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

4. Kondisional styling warna karakter tersisa

Contoh hasil nya

5. Tambah Lebih dari Satu Foto

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

5. Tambah Lebih dari Satu Foto

Contoh hasil nya

<terima-kasih/>

if (you == 'have questions') {

    console.log('Kindly let us know ')

}

We are hiring!

Ping me at

Telegram : @dikyarga

Email : diky.arga@bukalapak.com

Pengenalan Vue.js at MozSpaceJKT

By Diky Arga

Pengenalan Vue.js at MozSpaceJKT

  • 1,190