Update terbaru Adobe XD

Pembaruan terbaru untuk Adobe XD menghadirkan tools baru untuk menyederhanakan alur kerja desain dengan dukungan yang ditingkatkan untuk berbagai perangkat dan resolusi. Selain itu, pembaruan di bulan September memperkenalkan elemen transisi berjenjang untuk skenario prototyping, penampil layar penuh yang disempurnakan, dan fungsi untuk memeriksa pengejaan.Pembaruan terbaru untuk Adobe XD menghadirkan tools baru untuk menyederhanakan alur kerja desain dengan dukungan yang ditingkatkan untuk berbagai perangkat dan resolusi. Selain itu, pembaruan di bulan September memperkenalkan elemen transisi berjenjang untuk skenario prototyping, penampil layar penuh yang disempurnakan, dan fungsi untuk memeriksa pengejaan.

 

Responsive Resize

 

responsive resize

 

Fitur desain yang responsif akan memungkinkan desainer untuk mengubah ukuran kanvas desain dan elemen di atasnya tanpa mengubah penempatan atau skala. Secara default, Responsive Design Tool mempertahankan jarak relatif antara elemen kanvas sebagai perancang mengubah ukuran objek. Untuk mengatur penskalaan yang tepat, pengguna dapat beralih ke mode manual. Termasuk juga dapat mengatur tinggi dan lebarnya objek atau rataan dari sekelompok objek.

Desainer juga dapat menggunakan fitur tersebut untuk meningkatkan keseragaman elemen di seluruh perangkat dengan menyematkan objek individual dalam posisi yang telah ditentukan.

Timed Transition

 

XD-Transition-Big

 

Dengan Timed Transition, desainer dapat mensimulasikan berbagai efek loading, looping animasi, dan lainnya dengan menyetting time triggers. Misalnya, ketika prototype onboarding mengalir, desainer akan dapat mengatur transisi antara artboards berdasarkan delay tertentu. Time triggers juga dapat diatur untuk efek auto-fade, spinners, loader, progress bar, dan banyak lagi.

Untuk sebuah nilai tambah, trigger atribut secara otomatis digunakan sebagai nilai default pada layar selanjutnya. Tool baru ini juga di lengkapi dengan tap tool dan mengharuskan desainer untuk membuat prototype yang sangat mirip dengan produk akhir / aslinya.

Meningkatkan Full Screen Viewer

 

XD-Full-Screen-Display-0

 

Full Screen Viewer yang baru membuat prototype lebih realisme. Dengan menghapus black padding artifacts ke web dan artboads kustom, sambal menjaga artboards ponsel yang berpusat pada kanvas.

Pembaruan ini memecahkan masalah lebar yang melebihi ruang horizontal yang tersedia. Adobe secara otomatis  akan menskalakan  prototype agar selalu pada settingan medium, menghindari scrolling control yang sering mengganggu. Selain itu, kemungkinan adobe mengganti warna background hitam menjadi putih di mode full screen. Karena dirasa backgroumd hitam tidak memberikan representasi yang akurat.

Spellcheck

 

XD-Spell-Check-0

 

Setelah banyak permintaan dari para user, Adobe memperkenalkan fungsi real-time spellcheck di Adobe XD. Pengejaan kata yang salah, akan di tandai pada kanvas desain. Dan juga, tool ini memberikan rekomendasi kata pengganti untuk kata kata yang berpotensi salah eja.


What’s Next for XD?

Berkat XD, Adobe membuktikan bahwa mereka masih mendengarkan saran dan keluhan dari para penggunanya. Dengan pembaruan yang rutin dan konsisten, XD bertujuan untuk berada di bagian atas dari ekosistem sebuah prototyping. Dalam jangka pendek, pembaruan  terbaru harus menjaga para pengguna yang  ada puas dengan XD.

Progressive Web Apps Development : Fitur, Possibilitas adn perspektif untuk Bisnis Anda

Speed loading, usability, readability – semua faktor ini penting untuk UX situs web Anda. Tetapi apakah dengan itu saja sudah cukup untuk pengguna web modern? Saat ini, menyesuaikan untuk bergerak maju karena orang lebih memilih smart phone dari pada dekstop. Jika Anda ingin lebih Mju dari pesaing Anda, sudah waktunya untuk mempertimbangkan membangun progressive web app

Progressive web apps (PWA) hanya terdiri dari teknik modern untuk memberikan pengalaman terbaik kepada pengguna selular. Pada artikel ini, kami memfokuskan perhatian kami pada keuntungan yang Anda dapatkan dengan pengembangan PWA dan alat yang digunakan untuk membuat aplikasi semacam itu.

Apa itu Progressive web app?

Progressive web application adalah aplikasi yang berjalan sebagai halaman web dan sebagai aplikasi mobile native pada saat yang bersamaan. Ada tiga fitur utama dari produk yang dijelaskan oleh Google:

Reliabilitas : tidak masalah kondisi jaringan tempat pengguna bekerja, PWA akan memuat seketika. Service Worker yang ditulis dalam JavaScript yang bertanggungjawab atas pekerjaan ini.

Kecepatan : selain pemuatan(loading) instan, pengguna juga mendapatkan interaksi seperti kilat. Scrolling monoton atau animasi slow-mo tidak dapat diterima

Ketelibatan : aplikasi ini benar-benar terlihat seperti produk mobile native, jadi natural dalam hal pengalaman pengguna mobile. Web App Manifest menawarkan banyak pilihan di aplikais Anda : tampilan icon di layar awal, orientasi layar, halaman yang harus dimuat pertama, dll

Anda dapat melihat bahwa PWA sangat mirip dengan aplikasi mobile native, tetapi dimana garis batas diantara PWA dan aplikasi mobile native? Ada beberapa fitur asli dasar yang telah dimiliki oleh PWA, tetapi kami berharap lebih banyak lagi yang akan berkembang.

Fitur native yang digunakan oleh PWA

  • Full screen
  • Splash screen
  • Push notification

Fitur native yang tidak dapat digunakan oleh PWA

  • Akses ke sensor hardware (bersifat membatasi)
  • Akses ke phonebook
  • Alarm
  • Memodifikais pengaturan sistem

Mengapa Anda harus membangun PWA?

Daftar fitur native tidak terbatas pada yang di atas – ini hanya ciri-ciri utama yang dapat Anda terapkan dalam produk Anda segera. Sekarang, mari tinjau manfaat bisnis yang mungkin Anda dapatkan.

Ketika konsepnya menjadi lebih jelas bagi kami, kami akan beralih ke manfaat nyata yang dapat ditawarkan oleh PWA untuk bisnis Anda.

  1. Anda tidak akan mengalami masalah dengan app store

Apa yang biasanya pengembang berurusan dengan bekerja di app store? Ton dari red tape adalah jawabannya. Membangun PWA, mereka dapat dengan mudah menghindari langkah ini dan fokus pada kualitas produk. Semua yang diperlukan adalah hosting produk Anda di server web. Selain itu, Anda seharusnya sudah mendengar tentang aturan yang disediakan oleh iOS dan Android dan proses persetujuan. Memiliki PWA, itu tidak akan menjadi bagian dari realitas Anda.

Selain itu, Anda seharusnya sudah mendengar tentang aturan yang disediakan oleh iOS dan Android harus melalui proses persetujuan. Memiliki PWA, itu tidak akan menjadi bagian dari realitas Anda

  1. Produk Anda tidak memiliki batas perangkat

Kami telah menyebutkan bahwa solusi mobile-friendly sekarang dari niche situs web. Tetapi ada yang lebih penting, PWA dapat bekerja sama bagusnya di perangkat apapun, baik itu smartphone, dekstop PC ataupun tablet

Fitur tak ternilai ini tidak hanya memberikan pengalaman tanpa cela kepada audiens Anda tetapi juga membantu merk Anda tetap konsisten dalam lingkungan web

  1. PWA tidak memakan banyak ruang pada perangkat

Dengan penawaran dari app store, jumlah aplikasi di perangkat kami tumbuh secara eksponensial. Mempertimbangkan hal ini, produk PWA Anda memiliki keuntungan yang sangat besar- tidak akan memakan banyak ruang saat di hosting di web server. Jika pengguna ingin menginstall aplikasi Anda di home screen. Hal itu pun tetap tidak akan memerlukan penyimpanan atau pembaruan rutin.

  1. Produk Anda dapat dengan mudah untuk dibagikan

Manfaat ini juga dimungkinkan berkat penyimpanan server web. Pengguna baru tidak perlu pergi ke store, untuk mencari aplikasi disana, kemudian mengunduhnya. Untuk memulainya, seseorang hanya membutuhkan satu alamat URL. Dan akibatnya, aplikasi Anda akan tersebar lebih cepat karena orang-orang daoat membagikan alamat ini melalui too apapun dan perangkat apapun.

  1. PWA memiliki kekuatan SEO lebih banyak

Pada point ini, kami beralih ke promosi, dan disini kami menemukan kekuatan SEO. Ya PWA di index lebih detail daripada aplikasi native tradisional. Menurut laporan yang diberikan oleh Connexity, hampir 60% pencarian dilakukan melalui mobile device. Jadi produk PWA Anda memang lebih kuat daripada aplikasi native mobile ketika datang ke optimasi SEO.

0_wTfCrdy8vRfPcJ4v

Daftar Development Tool PWA yang dapat kita gunakan untuk membangun produk Anda.

Memberikan experience yang mengesankan bagi pengguna Anda dengan aplikasi PWA tidak sesulit seperti yang terlihat di awal. TecSynt developer tahu cara menangani pengembangan PWA dan cara mengejutkan user Anda

  1. Knockout

Knockout adalah tool JavaScript gratis yang membantu developer untuk membuat tampilan responsive. Jika ada situasi ketika UI aplikasi Anda harus diubah secara dinamis, Knockout tampaknya membuat proses ini lebih sederhana untuk teknisi.

Terlepas dari ini, KO menyediakan proses pengembangan dengan cara sederhana untuk menghubungkan UI Anda dengan model data yang digunakan. Bahkan jika ada UI kompleks, tool ini tau cara menanganinya. Bahkan ketika aplikasi web hampir siap untuk rilis, Knockout dapat ditambahkan diatas tanpa melakukan perubahan pada arsitektur.

  1. PWA Builder

PWA builder merupakan instrumen lain yang dapat digunakan dengan solusi web siap pakai. Pada awalnya, developer membuat manifes – manifest dapat dibuat tepat disitus web PWABuilder, menambahkan nama situs web, deskripsinya, dan icon untuk digunakan. Dan beberapa hal lagi yang dapat Anda ubah sesuai dengan preferensi Anda : orientasi layar PWA Anda, bahasanya dan warnanya.

Dengan semua data itu, PWA Builder akan membuat manifes. Akhirnya, PWA pertama dibangun dalam waktu singkat, dan siap untuk meningkatkan experience user Anda.

  1. Angular JS (React, Polymer)

Angular JS adalah framework JavaScript yang membantu membangun aplikasi web dari awal. Versi terbaru (Angular 5) menyediakan  teknik dengan environtment yang sama untuk solusi mobile dan dekstop.

React dan Polymer merupakan instrumen sederhana tetapi juga populer dikalangan pengembang UI. Polimer, pada gilirannya memiliki banyak komponen yang dapat digunakan kembali untuk mempercepat proses development

  1. Webpack

Webpack digunakan untuk mengumpulkan semua sumber daya JS di satu tempat bahkan jika hal itu adalah data non-coding (seperti font atau gambar). Webpack merupaka salah satu tool untuk membangun front-end di situs web.

Mengapa Webpack sangat bagus untuk PWA? Webpack memungkinkan developer untuk menggunakan dua plugin yang menghasilkan service worker dan manifes. Kedua karaketristik ini diperlukan untuk setiap product PWA. Dan yang paling penting, Wbpack berhasil digunakan dengan projek kompleks dan dapat menangani kesulitan apapun

  1. PWA.rocks

Dan akhirnya, PWA.rocks merupakan sumber internasional yang digunakan oleh developer dan pengusaha. Disini Anda dapat menemukan banyak contoh PWA dan akhirnya melihat bagaimana tampilan PWA dan bagaimana cara kerjanya.

Dengan deretan contoh ini, Anda dapat membuat gambar produk masa depan dan membuat daftar persyaratan untuk developer. Konten situs web dibagi menjadi beberapa grup, sehinggan Anda dapat menemukan cabang dan terjun ke dalamnya.

0_ioLHmtiMsd6FkZ3s

PWA Powerful, Wonderful, Astonishing

Mempertimbangkan semakin banyak situs web, wirausahawan harus waspada ketika datang experience user yang beraneka ragam. Progressive web development adalah kunci untuk peningkatan dalam produk web Anda : Anda akan dapat menjadikan situs web Anda solusi mobile tanpa membuat aplikasi mobile (setidaknya untuk saat ini).

Market menawarkan banyak tool untuk membuat proses transisi secepat mungkin. Pengguna lebih banyak menggunakan mobile, dan Anda harus mengikutinya untuk melakukan percakapan dengan pengguna secara lebih efektif

Membandingkan Ukuran APK untuk Aplikasi di Flutter, React Native, Kotlin dan Java

Ada banyak cara untuk membuat aplikasi mobile mulai dari pengembangan spesifik platform langsung (menggunakan Java dan Kotlin untuk Android dan ObjC dan Swift untuk iOS), ada React Native dari Facebook, Electrode Native dari Walmart, Ionic framework, Unity untuk tipe-tipe aplikasi tertentu, dan framework flutter.io yang baru saja dirilis oleh Google

Pernah bertanya-tanya bagaimana library dan framework ini mempengaruhi ukuran aplikasi Anda? Mari kita menganalisis beberapa file apk untuk masing-masing aplikasi yang ditulis dalam beberapa cara ini. Aplikasinya sangat sederhana, hanya berisi judul dibagian atas dan teks di tengah layar. Kita akan menunjukan untuk aplikasi minimum apa yang perlu dikerjakan oleh framework ini bersama apk agar dapat dijalankan.

1_nS-7Ji11bTmO5HIkmoYA-g

  • Untuk percobaan kali ini kita akan membuat empat versi aplikasi yang berbeda, di masing-masing aplikasi diantaranya Java, Kotlin, React Native dan Flutter (Android API 27)
  • Apk tersebut kemudian di publikasikan untuk tipe rilis menggunakan Android studio untuk Java dan Kotlin dan menggunakan cli untuk React Native dan Native
  • Menggunakan konfigurasi default proguard
  • Apk dianalisis menggunakan fitur Analisis APK di Android Studio

Java (539 KB)

Mari kita mulai dari yang paling simple –Java. Seperti yang Anda harapkan, akan menjadi ukuran terkecil mengingat kita hanya menggunakan Java dan framework Android untuk membuat aplikasi ini, dengan satu-satunya dependency yakni Android Support Library, yang dapat Anda lihat disini membutuhkan cukup banyak ruang.

1_etBFAARt0K4yBa7d-nL0iQ

Kita dapat berpotensi menurunkan ukuran aplikasi dengan menghapus dependency ini saja dan menggunakan Activity dari pada AppCompatActivity

Kotlin (550 KB)

Selanjutnya Kotlin. Jika Anda sudah lama ngoding di Java, Kotlin menjadi angin segar. Apk rilis untuk aplikasi Kotlin membandingkan sesuatu yang kita lihat di apk Java, ditambah sebagian kecil dari info sugar sintaks berdasarkan Kotlin

1_9Qo6ULUNQJtiHOHme_sFMg

React Native (7 MB)

Jika Anda datang dari dunia web dan ingin menjadi mobile developer menggunakan javascript React Native bisa menjadi salah satu pilihan. React Native juha membantu jika Anda ingin mengintergrasi lebih cepat pada fitur tanpa merilis aplikasi untuk setiap perubahan kecil.

Rilis apk yang dihasilkan oleh React Native memiliki beberapa kelas dalam file classes.dex yang memiliki 12193 metode referensi untuk aplikasi tertentu ini.

1_VkAuQM-fi3Fe7yKBiwKC6w

React Native juga menambahkan beberapa dependensi asli di direktoru lib untuk X86 dan armeabi-v7a. Menambah hingga sekitar 6,4 MB dependensi secara total.

1_IiScBxnU_MhURFzFYnDsug

Flutter.io (7.5 MB)

Aplikasi rilis yang dihasilkan oleh Flutter cli berisi mesin C/C++ dan Dart VM yang membuat hampir semua apk. Aplikasi ini berjalan langsung menggunakan set intruksi native dan tidak ada interpreter yang terlibat.

1_JqPvjrCDx4ShWNR10aP1UA

Setiap metode penulisan aplikasi memiliki kelebihan dan kekurangannya. Pilih metode yang paling sesuai untuk digunakan baik untuk kasus kebutuhan Anda sendiri ataupun unutk perusahaan Anda. Anda juga bisa mengkombinasi dan mencocokan beberapa framework untuk membuat bagian yang berbeda dari aplikasi Anda.

Contohnya, jika Anda ingin bereksperimen membuat suatu komponen di React Native, jika Anda ingin membagi kode antara aplikasi iOS dan Android, lihat React Native atau Flutter,io dan jika Anda hanya ingin berfokus pada Android dan menjaga agar ukuran aplikasi lebih minimum sangat penting Anda bisa menggunakan Java atau Kotlin

Shortcut Keyboard di Visual Studio untuk Mac

Di artikel kali ini kita akan membahas tentang shortcut keyboard Mac di visual studio. Dalam Visual Studio untuk preferensi Mac, dibagian bawah Key Binding, Anda dapat memilih skema binding key. Anda dapat memilih skema dari list berikut :

1

Mencari Referensi

Suatu waktu Anda akan butuh pencarian referensi dari spesifikasi sebuah objek. Dalam kasus ini cukup tekan

Cmd + Shift + R atau Shift + F12

Dan hal yang akan terjadi adalah :

2

Menuju pendeklarasian

Kapanpun Anda menginginkan pendeklarasian objek/type tekan

Cmd + klik mouse atau F12 atau Cmd + D

4

Beralih breakpoint

Ketika memiliki kursor dalam satu baris cukup tekan

Cmd + \ atau F9

Jadi breakpoint akan muncul

5

Enable/Disable breakpoint

Dalam kasus Anda ingin enable/disable breakpoint cukup tekan

Cmd + Alt + / atau Cmd + F9

6

Step into

Ketika breakpoint mengenai dan Anda ingin definisi step into, cukup tekan

Shift + Cmd + I

Step over

Mungkin Anda ingin lanjut ke baris kode selanjutnya? Tak masalah

Shift + Cmd + O / F10

Step out

Apakah Anda ingin ke keluar dari step function? No Problem

Shift + Cmd + U

Continue debugging

Atau mungkin Anda hanya ingin melanjutkan program tanpa debug lebih lanjut?

Cmd + enter

Jadi, bayangkan saja kode Anda salah format. Selama kode C# bukan masalah besar, file XAML yang salah format bisa sangat menyakitkan

Format dokumen

Jadi kapanpun Anda ingin memformat kode Anda cukup tekan

Ctrl + I

7

Indent/Unindent section

Anda ingin indent/unindent section? Mudah kok

Cmd + ]

8

Unindent section

Cmd + [

9

Rename

Setiap kali Anda ingin mengganti nama field/variable/property/apapun dan melakukannya hanya sekali sehingga akan memperbarui otomatis. Cukup tekan :

Ctrl + R

10

Toggle line comment

Ketika Anda ingin memformat satu baris kode atau seluruh blok kode maka cukup select kode nya dan tekan

Cmd + /

11

12

Toggle fold

Yang satu ini cukup rumit tapi berfungsi dengan baik. Adna masih dapat mengedit shortcut ini

Cmd + Shift + Alt + -> (left arrow/panah kiri)

13

Mengubah file

Saat menavigasi dengan cepat diantara yang dibuka, cukup tekan

Ctrl + tab

Dan menavigasi daftar dengan tombol Tab. Jika Anda ingin membataklan pemilihan tekan ESC

14

Menutup semua file

Berapa kali Anda memiliki situasi ketika banyak file yang terbuka? Dalam hal ini, ketika Anda ingin untuk menutup semuanya cukup tekan

Cmd + Shift + W

15

Menutup file

Disisi lain ketika Anda ingin menutup hanya satu file

Cmd + W

16

Menambahkan file projek

Ketika kita manambah projek melalui menu konteks, dan memilih “Add file” cukup memakan waktu. Jika Anda ingin menambahkan file ke projek, pilih folder yang Anda inginkan untuk menambahkan filenya.

Alt + Cmd + A

17

Membuat projek

Unutk membuat projek cukup dengan shorcut

Cmd + K / Shift + F6

Build All

Mirip dengan yang diatas namun disini adalah solusi build seluruhnya

Cmd + B / F6

Clean

Clean projek

Cmd + Shift + K

Start debugging

Hanya untuk memulai projek dengan cepat

Cmd + Enter / F5

Quick Fix

Ketika mengalami kesalahan atau peringatan cukup klik saja dan tekan

Alt + Enter

18

Pencarian

Hanya opsi pencarian standar dalam dokumen

Cmd + F

20

Pencarian selanjutnya

Ketika mempunyai bar pencarian terbuka

Cmd + G / F3

Menampilkan intellisense

Ketika ingin menunjukan instellisense

Ctrl + Space

21

Go to line

siapa yang tahu baris mana yang akan kita tuju? 🙂

Cmd + L

22

Mengganti file

Cara lain untuk mengubah nama dalam file tetapi menurut saya lebih berbahaya daripada Ctrl + R

Cmd + Alt + F

Rectangle selection

Tool yang cukup bagus, tetapi memiliki keterbatasan. Senang menggunakannya dengan pengubahan

tahan Alt + seleksi dengan mouse

23

pindah baris kode

terkadang Anda hanya ingin memindahkan baris kode 2 baris keatas/bawah. Anda mungkin bisa memotong seluruh baris, pergi ke tempat yang dipilih dan paste. Anda dapat melakukannya dengan lebih cepat.

Tahan Alt + arahkan panah atas/bawah

24

Pergi ke awal/akhir baris

ini merupakan shortcut mac yang bagus untuk menavigasi melalui teks. Bekerja di Mac, tidak hanya di VS untuk Mac

Cmd + panah kiri (left arrow) / panah kanan(right arrow)

Pergi ke awal/akhir dokumen

Mirip dengan yang diatas tetapi menavigasi secara vertikal

Cmd + panah bawah (arrow down)

Dua kolom editor

suatu hal untuk orang-orang yang memiliki layar lebar dan suka memiliki kode yang sebanyak mungkin tampil di layarnya

Cmd + Alt + 2

Satu kolom editor

Dan ini untuk mengembalikan ke halaman standar

Cmd + Alt + 1

25

Zoom in/zoom out

Dalam hal ini Anda memiliki prelection / Anda inign menunjukan kode Anda pada layar Anda yang mungkin ingin menyesuaikan ukuran font dengan menekan

Cmd + “+” atau “-”

Form Validasi HTML5 dengan menggunakan atribut “Pattern”

Dalam tutorial ini kita akan mengeksplorasi atribut pattern HTML, digunakan untuk membantu kita menyesuaikan cara kita memvalidasi form kita.

Validation

Form validasi snagat penting untuk keamanan situs web. Proses validasi mengoreksi apakah nilai input dalam format yang benar unyuk mengirimkannya. Misalnya, jika kita memiliki field inputang untuk alamat email, nilainya pasti berisi alamat email yang valid, harus dimulai huruf atau angka, diikuti oleh simbol @, lalu diakhiri dengan nama domain.

Spesifikasi HTML5 telah membuat validasi yang sedikit lebih mudah dengan diperkenalkannya jenis inputan baru seperti emailurl, dan tel dan juga dikemas dengan validasi yang telah ditentukan. Apapun nilai yang diberikan tidak terpengaruhi dengan format yang diharapkan, jenis input ini akan membuat pesan error sehingga mencegah pengiriman.

emaik

Mengharapkan setiap skenario inputan yang mungkin untuk dilayani tidak praktis. Bagaimana jika Anda memiliki nama pengguna, kode pos, atau jenis data khusus yang tidak ditentukan jenis standar inputan? Bagaimana kita memvalidasi inputan tersebut? Disinilah pola  pattern  ikut bermain

Menggunakan atribut pattern

Atribut pattern hanya berlaku pada elemen input. Hal ini memungkinkan kita untuk mendifiniskan aturan kita sendiri untuk memvalidasi nilai input menggunakan Regular Expressions(RegEx Express). Sekali lagi, jika nilainya tidak sesuai dengan pila yang ditentukan, input kan memunculkan error.

Misalnya, katakanlah kita memiliki username dalam form kita. Tidak ada tipe standar untuk username, oleh karena itu kita menggunakan tipe input text biasa:

<form action="somefile.php">
    <input type="text" name="username" placeholder="Username">
</form>

Mari mendefiniskan aturan untuk ditambahkan menggunakan atribut pattern. Dalam kasus ini, kita akan menentukan bahwa username hanya boleh terdiri dari huruf kecil, tidak ada huruf besar, angka atau karakter khusus lainnya yang diperbolehkan. Selain itu panjang username tidak boleh lebih dari 15 karakter. Di RegEx, aturan ini dapat dinyatakan sebagai [a-z]{1,15}.

Tambahkan [a-z] {1,15} sebagai nilai atribut pattern dalam inputan username kami:

<form action="somefile.php">
    <input type="text" name="username" placeholder="Username" pattern="[a-z]{1,15}">
</form>

Sekarang, karena hanya menerima huruf kecil, mengirimkan nilai lainnya akan mengeluarkan pesan error.

username

Seperti yang dapat Anda lihat diatas, muncul pesan error “Please match the requested format.”. jadi validasi kita berhasil, namun pesan ini tidak membantu user memahami format yang diminta sebenarnya . UX gagal.

Costumize pesan validasi

Untungnya kita bisa custom/menyesuaikan pesan agar lebih membantu user, dan kami memiliki beberapa cara untuk melakukannya. Pendekatan termudah adalah menentukan atribut title dalam elemen input.

<form action="somefile.php">
    <input
        type="text"
        name="username"
        placeholder="Username"
        pattern="[a-z]{1,15}"
        title="Username should only contain lowercase letters. e.g. john">
</form>

Sekarang sertakan title bersama dengan pesan default:

username1

Namun pesan popup tidak konsisten. Jika kita bandingkan dengan yang dikeluarkan dengan tipe input email yang ditunjukan sebelumnya, petunjuk sebenarnya bisa lebih menonjol.

Pendekatan kedua akan menyelesaikan ini untuk kita

Mengganti pesan default validasi

Mari sekarang ganti default “Please match the requested format” dengan pesan yang benar-benar di custom. Kami akan menggunakan sedikit JavaScript untuk melakukannya.

Mulailah dengan menambahkan id ke elemen input, sehingga bisa memilihnya dengan mudah.

<form action="somefile.php">
    <input
        type="text"
        name="username"
        placeholder="Username"
        pattern="[a-z]{1,15}"
        id="username">
</form>

Sekarang, kita dapat memilih elemen input menggunakan JavaScript dan menetapkannya ke variable (antara tag <script>) di halaman kita, dalam file JavaScript yang terpisah, atau di panek JS pada CodePen);

var input = document.getElementById('username');

Terakhir, kita tentukan pesan yang digunaan saat input menunjukan keadaannya yang tidak valid.

input.oninvalid = function(event) {
    event.target.setCustomValidity('Username should only contain lowercase letters. e.g. john');
}

Event oninvalid  event inheritense objek berisi beberapa properti termasuk properti target(elemen tidak valid) dan validationMessage yang berisi pesan teks error. Pada contoh diatas, kita telah ovveriden pesan teks menggunakan metode setCustomValidity()

Kita sekarang harus menemukan pesan custom dengan mulus mengganti default

username3

Styling

Untuk melengkapi jenis input baru dan metode-metode ini untuk mengatur pesan custom validasi, spesifikasi CSS3 membawa beberapa pseudo-code yang berguna, valid dan invalid.memungkinkan kita untuk menerapkan style tergantung pada keadaan validitas inputan, misalnya:

input:invalid {
    border-color: red;
}
input,
input:valid {
    border-color: #ccc;
}

Ada beberapa hal yang perlu diingat ketika menggunakan pseudo-class ini:

  • Pertama, valid digunakan sebagai default, bahkan ketika value input kosong. Dengan demikian, seperti yang Anda lihat diatas, kita atur border-color ke #ccc warna default yang diberikan ke elemen input. Value kosong selalu dianggap valid, kecuali jika kita telah menambahjan atribut required. Dalam hal ini, input tidak valid dan warna border merah diberikan
  • Style valid dan invalid berlaku saat pengguna mengetik, meskipun nilainya kosong. Perubahan style instan dapat membuat pengguna panik.

Sebuah kata tentang styling pesan popup

Form validasi telah menjadi standar baru sesuai spesifikasi HTML5, namun bagaimana tampilan kesalahan muncul sepenuhnya tergantung pada vendor browser. Harapkan berbagai estetika di berbagai browser, yang tidak akan membantu konsistensi UI Anda.

html5-validation-different-browsers

Google chroome mencegah kemampuan untuk mencustomize style popup default beberapa tahun yang lalu. Jika ini adalah sesuatu yang ingin Anda capau, satu-satunya pilihan yang tersisa adalah sepenuhnya mengganti pesan popup menggunakan JavaScript jadi mari kita lihat bagaimana cara kerjanya!

Ada yang lebih lagi nih

Kita akan membuat custom popup yang akan muncul saat nilai masukan kami tidak valid. Untuk memulainya kita perlu memilih beberapa elemen yang dibutuhkan yaitu input and the form

var input = document.getElementById('username');
var form  = document.getElementById('form');

Selanjutnya, kita akan membuat elemen baru yang akan berisi pesan kita:

var elem               = document.createElement('div');
    elem.id            = 'notify';
    elem.style.display = 'none';
    form.appendChild(elem);

Kita membuat elemen div baru, kita akan memberinya notify dan menyembunyikan settingan display dengan property no, terakhir, kita menambahkan div baru dengan form

Bekerja dengan event

Ada dua event yang harus kita jalani. Pertama event invalid yang dipanggil ketika value dari input tidak sesuai dengan pola/pattern. Kita akan menjalankan event invalid :

input.addEventListener('invalid', function(event){
    event.preventDefault();
    if ( ! event.target.validity.valid ) {
        elem.textContent   = 'Username should only contain lowercase letters e.g. john';
        elem.className     = 'error';
        elem.style.display = 'block';
 
        input.className    = 'invalid animated shake';
    }
});

Disini dengan event.preventDefault(); kita prevent default tindakan sehingga pesan popup browser default tidak muncul. Sebaliknya, kita akan menunjukannya melalui elemen div baru. Kita tambahkan text message di dalam konten, menambahkan class baru, kesalahan dan menampilkan pesan dengan mengatur tampilan untuk diblokir.

Kita juga menambahkan class, invalid untuk elemen input, memberikan border color warna merah. Kita juga membutuhkan aturan style CSS pada stylesheet

input.invalid {
        border-color: #DD2C00;
}

selain itu, Anda juga dapat menambahkan animated shake class dari Animate.css. Yang akan memberikan efek dengan menggunakan shake animasi

Event kedua adalah event input. Event ini memanggil ketika nilai input diubah. Kita akan menggunakan event untuk mengembalikan masukan ke keadaan normalnya, serta menyembunyikan pesan popup sebagai berikut:

input.addEventListener('input', function(event){
    if ( 'block' === elem.style.display ) {
        input.className = '';
        elem.style.display = 'none';
    }
});

seperti yang Anda lihat diatas, kita akan menghapus nama class form input elemen dan menyembunyikan pesan popup.

error

Sekarang kita memiliki pesan validari popup yang telah di customize. Cobalah masukan nilai yang tidak valid

Catatan: Jangan lupa untuk melihat GraphicRiver jika Anda mencari desain UI yang inspiratif.

Terakhir

Menggunakan jenis input standar bersama dengan atribut pola akan memberikan formulir Anda lapisan tambahan validasi, tetapi ketahuilah bahwa Anda harus melakukan beberapa jenis validasi sisi server juga.

Secara mengejutkan, bahkan ketika pengguna telah menonaktifkan JavaScript di browser, browser terbaru masih akan menampilkan validasi popup dan mencegah pengiriman formulir. Safari, bagaimanapun, tidak mendukung atribut pola pada saat penulisan. Fungsi serupa bisa ditiru menggunakan webfim buatan Polyfill.

Kami harap Anda menikmati tutorial dan menyimpannya sebagai referensi praktis untuk Validasi HTML5. Semoga bermanfaat

10 Tips Git Useful

Selama beberapa tahun terakhir, git telah berkembang pesat menjadi salah satu sistem kontrol versi yang paling banyak digunakan. Git digunakan oleh developer coding, tim dan semuanya mulai dari proyek open source kecil hingga codebases besar seperti kernel linux dalam berbagai bahasa

Pada artikel ini kita akan berbagi tip yang dapat meningkatkan pengalaman dan alur kerja git Anda.

Git log –no-merges

Perintah git ini menunjukan keseluruhan history commit tapi skip commit yang menggabungkan dua branches bersama atau menyelesaikan konflik gabungan. Perintah ini memungkinkan Anda untuk cepat melihat semua perubahan yang dilakukan pada proyek, tanpa harus mengacaukan gabungan comit history git

$git log --no-merges

commit e75fe8bf2c5c46dbd9e1bc20d2f8b2ede81f2d93
Author:  John
Date:   Mon Jul 10 18:04:50 2017 +0300

    Add new branch.

commit 080dfd342ab0dbdf69858e3b01e18584d4eade34
Author:  John
Date:   Mon Jul 11 15:40:56 2017 +0300

    Added index.php.

commit 2965803c0deeac1f2427ec2f5394493ed4211655
Author:  John
Date:   Mon Jul 13 12:14:50 2017 +0300

    Added css files.

git revert –no-commit [commit]

git kembali menghasilkan komit baru yang membatalkan perubahan yang dilakukan oleh komit yang ada dan menghasilkan komit baru dengan konten yang dihasilkan. Jika Anda ingin mengembalikan komit yang telah disebutkan dan menghindari komit otomatis, Anda dapat menggunakan tanda flag –no-commit atau shorthand -n.

git diff –w

git diff menunjukan antara dua komit, dua work tree atau dua file pada disk. Karena banyak ornag mengerjakan proyek yang sama, seringkali ada perubahan karena tab editor teks dan pengaturan ruang. Untuk mengabaikan perbedaan yang disebabkan oleh whitespace(spasi putih) saat membandingkan garis, Anda dapat menggunakannya dengan -w flag.

git diff –stat

menunjukan bagaimana setiap file telah berubah dari waktu ke waktu. Anda dapat menambahkan 3 parameter: width untuk menimpa lebar output default, name-width untuk mengatur lebar nama file dan count membatasi output ke jumlah baris pertama.

$ git diff --stat
 index.php | 83 +++++++++++++++++++++++++++++---------------------------
 1 file changed, 43 insertions(+), 40 deletions(-)
$ git diff --stat-width=10
 index.php | 83 +++---
 1 file changed, 43 insertions(+), 40 deletions(-)

git reset –soft HEAD^

reset head ke komit tertentu tanpa menyentuh file indeks dan work tree. Semua perubahan yang dilalukan setelah komit ini dipindahkan ke tahap “staged for commit”. Setelah itu Anda perlu menjalankan git komit untuk menambahkannya kembali.

git stash branch [branch-name] [stash]

perintah ini membuat branch baru bernama branch-name dan check it out, kemudian menerapkan perubahan dari simpanan yang diberikan padanya dan menghapus simpanan. Jika tidak ada simpanan yang diberikan yang terbaru. Hal ini memungkinkan Anda untuk menerapkan perubahan tersimpa ke lingkungan yang lebih aman, yang nantinya dapat digabungkan menjadi master.

git branch –a

perintah tersebut menunjukan daftar semua branch jarak jauh dan branch lokal. Anda dapat menggunakan flag untuk melihat hanya branch yang sepenuhnya digabungkan ke branch induk. Dengan cara ini Anda bisa melacak branch Anda dan mencari tahu mana yang tidak digunakan lagi dan bisa dihapus.

$ git branch -a

  dev
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev

git commit –amend

dengan git commit –amend Anda bisa mengubah komit sebelumnya, daripada membuat yang baru. Jika Anda belum mendorong perubahan terbaru dan bahkan mengubah pesan komit Anda.

git pull –rebase

git pull –rebase memaksa git untuk terlebih dahulu menarik perubahan dan kemudian rebase yang tidak ditipu melakukan diatas versi terbaru dari remote branch. Pilihan –rebase dapat digunakan untuk memastikan history linier dengan mencegah penggabungan yang tidak perlu dilakukan.

git add –p

bila Anda menggunakan perintah ini, alih-alih segera menambahkan semua yang berubah ke indeks, ia melewati setiap perubahan dan menanyakan apa yang ingin Anda lakukan dengannya. Dengan cara ini, memungkinkan Anda untuk secara interaktif memilih apa yang ingin Anda lakukan.

diff --git a/package.json b/package.json
index db78332..a814f7e 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,6 @@
   },
   "devDependencies": {
     "bootstrap-sass": "^3.3.7",
-    "gulp": "^3.9.1",
     "jquery": "^3.1.0",
     "laravel-elixir": "^6.0.0-11",
     "laravel-elixir-vue-2": "^0.2.0",
Stage this hunk [y,n,q,a,d,/,e,?]? 

5 Contoh Praktis Belajar Vue.js

Vue js merupakan salah satu framework JavaScript. Vue JS merupakan framework untuk kebutuhan front end dari sebuah project. Vue js juga telah mengumpulkan komunitas developer yang sangat antusias.

Filosofi dibalik vue js adalah menyediakan API yang paling sederhana untuk membuat data dua arah secara real-time, antara tampilan(HTML) dan model (objek JavaScript). Seperti yang akan Anda lihat pada contoh berikut, library memegang gagasan itu dan dapat bekerja dengan mudah dan menyenangkan tanpa mengorbankan apa pun.

Cara termudah untuk menginstall vuejs adalah dengan menyertakaj tag <script> di akhit body HTML Anda. Semua librari terletak dalam satu file JavaScript yang dapat Anda download dari situs resmi atau langsung masuk melalui CDN:

Jika Anda ingin menggunakan library di proyek Node.js, vue tersedia sebagai modul npm. Ada juga CLI resmi, yang memungkinkan pengguna untuk mengatur keseluruhan proyek dengan cepat berdasarkan kerangka pratinjau

Berikut adalah lima editor yang berisi contoh aplikasi yang telah disiapkan untuk Anda. Kode ini memiliki banyak komentar dan dipisahkan dalam tab untuk setiap file, sehingga sangat mudah untuk diikuti. Editor memiliki vue.js built-in jadi jangan takut untuk bereksperimen. Selain itu, Anda dapat mendownload arsip yang berisi semua contoh.

  1. Menu Navigasi

Screenshot_14

<!DOCTYPE html>
<html>
  <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <title>Vue.js Menu Navigasi</title>
      <style>
      *{
        margin:0;
        padding:0;
      }
      body{
        font:15px/1.3 'Open Sans', sans-serif;
        color: #5e5b64;
        text-align:center;
      }
      a, a:visited {
        outline:none;
        color:#389dc1;
      }
      a:hover{
        text-decoration:none;
      }
      section, footer, header, aside, nav{
        display: block;
      }
      nav{
        display:inline-block;
        margin:60px auto 45px;
        background-color:#5597b4;
        box-shadow:0 1px 1px #ccc;
        border-radius:2px;
      }
      nav a{
        display:inline-block;
        padding: 18px 30px;
        color:#fff !important;
        font-weight:bold;
        font-size:16px;
        text-decoration:none !important;
        line-height:1;
        text-transform: uppercase;
        background-color:transparent;
        -webkit-transition:background-color 0.25s;
        -moz-transition:background-color 0.25s;
        transition:background-color 0.25s;
      }
      nav a:first-child{
        border-radius:2px 0 0 2px;
      }
      nav a:last-child{
        border-radius:0 2px 2px 0;
      }
      nav.home .home,
      nav.projects .projects,
      nav.services .services,
      nav.contact .contact{
        background-color:#e35885;
      }
      p{
        font-size:22px;
        font-weight:bold;
        color:#7d9098;
      }
      p b{
        color:#ffffff;
        display:inline-block;
        padding:5px 10px;
        background-color:#c4d7e0;
        border-radius:2px;
        text-transform:uppercase;
        font-size:18px;
      }
      </style>
  </head>
  <body>
    <div id="main">
      <nav v-bind:class="active" v-on:click.prevent>
        <a href="#" class="home" v-on:click="makeActive('home')">Home</a>
        <a href="#" class="services" v-on:click="makeActive('service')">Service</a>
        <a href="#" class="projects" v-on:click="makeActive('About')">About Us</a>
        <a href="#" class="contact" v-on:click="makeActive('galeri')">Galeri</a>
        <a href="#" class="contact" v-on:click="makeActive('news')">News</a>
      </nav>
      <p>Menu Pilihan Anda <b>{{active}}</b></p>
    </div>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
    <script>
    var demo = new Vue({
      el: '#main',
      data: {
        active: 'home'
      },
      methods: {
        makeActive: function(item){
          this.active = item;
        }
      }
    });
    </script>
  </body>
</html>

Pertama kita akan membangun bar navigasi sederhana. Ada beberapa komponen dasar yang hampir setiap aplikasi vue.js perlu miliki seperti sebagai berikut:

  • Model atau dengan kata lain data aplikasi kami. Di vue.js, ini hanyalah sebuah objek JavaScript yang berisi variabel dan nilai awalnya
  • Template HTML, istilah yang benar untuk tampilan. Disini kita bisa memilih apa yang akan ditampilkan, menambahkan event listener dan menganggapi penggunaan yang berbeda untuk model.
  • ViewModel – contoh Vue yang mengikat model dan tampilan bersama, memungkinkan nya untuk berkomunikasi satu sama lain

Gagasan dibalik kata-kata ini adalah bahwa model dan tampilan akan selalu sinkron. Mengubah model akan langsung mengupdate tampilan dan sebaliknya. Pada contoh pertama kami ditunjukan dengan variabel aktif, yang mewakili item menu yang saat ini dipilih.

Seperti yang bisa Anda lihat bekerja dengan library cukup mudah. Vue.js melakukan banyak pekerjaan untuk kita dan memberikan sintaks yang akrab, simple dan mudah diingat.

  • Objek JavaScript sederhana untuk semua pilihan
  • {{double brackets}} untuk template
  • Atribut inline v-something untuk menambahkan fungsionalitas secara langsung di HTML
  1. Inline Editor

Screenshot_15

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Vue.js Inline Editor</title>
        <style>
            [v-cloak] {
              display: none;
            }
            *{
                margin:0;
                padding:0;
            }
            body{
                font:15px/1.3 'Open Sans', sans-serif;
                color: #5e5b64;
                text-align:center;
            }
            a, a:visited {
                outline:none;
                color:#389dc1;
            }
            a:hover{
                text-decoration:none;
            }
            section, footer, header, aside, nav{
                display: block;
            }
            .tooltip{
                background-color:#5c9bb7;
                background-image:-webkit-linear-gradient(top, #5c9bb7, #5392ad);
                background-image:-moz-linear-gradient(top, #5c9bb7, #5392ad);
                background-image:linear-gradient(top, #5c9bb7, #5392ad);
                box-shadow: 0 1px 1px #ccc;
                border-radius:3px;
                width: 290px;
                padding: 10px;
                position: absolute;
                left:50%;
                margin-left:-150px;
                top: 80px;
            }
            .tooltip:after{
                content:'';
                position:absolute;
                border:6px solid #5190ac;
                border-color:#5190ac transparent transparent;
                width:0;
                height:0;
                bottom:-12px;
                left:50%;
                margin-left:-6px;
            }
            .tooltip input{
                border: none;
                width: 100%;
                line-height: 34px;
                border-radius: 3px;
                box-shadow: 0 2px 6px #bbb inset;
                text-align: center;
                font-size: 16px;
                font-family: inherit;
                color: #8d9395;
                font-weight: bold;
                outline: none;
            }
            p{
                font-size:22px;
                font-weight:bold;
                color:#6d8088;
                height: 30px;
                cursor:default;
            }
            p b{
                color:#ffffff;
                display:inline-block;
                padding:5px 10px;
                background-color:#c4d7e0;
                border-radius:2px;
                text-transform:uppercase;
                font-size:18px;
            }
            p:before{
                content:'✎';
                display:inline-block;
                margin-right:5px;
                font-weight:normal;
                vertical-align: text-bottom;
            }
            #main{
                height:300px;
                position:relative;
                padding-top: 150px;
            }
        </style>
    </head>
    <body>
        <div id="main" v-cloak v-on:click="hideTooltip">
            <div class="tooltip" v-on:click.stop v-if="show_tooltip">
                <input type="text" v-model="text_content" />
            </div>
            <p v-on:click.stop="toggleTooltip">{{text_content}}</p>
        </div>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
        <script>
        var demo = new Vue({
            el: '#main',
            data: {
                show_tooltip: false,
                text_content: 'Edit me.'
            },
            methods: {
                hideTooltip: function(){
                    this.show_tooltip = false;
                },
                toggleTooltip: function(){
                    this.show_tooltip = !this.show_tooltip;
                }
            }
        })        
        </script>
    </body>
</html>

Pada contoh sebelumnya, model kita hanya memiliki beberapa nilai yang telah ditentukan. Jika kita ingin memberi kemampuan untuk mengatur data apa pun, kita dapat melakukan pengikatan dua arah dan menghubungkan field masukan dengan properti model.  Saat teks dimasukan, maka secara otomatis disimpan dalam model text_content, yang kemudian menyebabkan tampilan untuk diperbarui.

Hal lain yang perlu diperhatikan dalam kode diatas adalah atribut v-if. Menunjukan atau menyembunyikan keseluruhan elemen tergantung pada kebenaran variabe. Anda bisa membaca lebih banyak tentang itu disini.

  1. Form Order

Screenshot_16

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Vue.js Form Order</title>
        <style>
            @import url(https://fonts.googleapis.com/css?family=Cookie);
            [v-cloak] {
              display: none;
            }
            *{
            	margin:0;
            	padding:0;
            }
            body{
            	font:15px/1.3 'Open Sans', sans-serif;
            	color: #5e5b64;
            	text-align:center;
            }
            a, a:visited {
            	outline:none;
            	color:#389dc1;
            }
            a:hover{
            	text-decoration:none;
            }
            section, footer, header, aside, nav{
            	display: block;
            }
            form{
            	background-color: #61a1bc;
            	border-radius: 2px;
            	box-shadow: 0 1px 1px #ccc;
            	width: 400px;
            	padding: 35px 60px;
            	margin: 50px auto;
            }
            form h1{
            	color:#fff;
            	font-size:64px;
            	font-family:'Cookie', cursive;
            	font-weight: normal;
            	line-height:1;
            	text-shadow:0 3px 0 rgba(0,0,0,0.1);
            }
            form ul{
            	list-style:none;
            	color:#fff;
            	font-size:20px;
            	font-weight:bold;
            	text-align: left;
            	margin:20px 0 15px;
            }
            form ul li{
            	padding:20px 30px;
            	background-color:#e35885;
            	margin-bottom:8px;
            	box-shadow:0 1px 1px rgba(0,0,0,0.1);
            	cursor:pointer;
            }
            form ul li span{
            	float:right;
            }
            form ul li.active{
            	background-color:#8ec16d;
            }
            div.total{
            	border-top:1px solid rgba(255,255,255,0.5);
            	padding:15px 30px;
            	font-size:20px;
            	font-weight:bold;
            	text-align: left;
            	color:#fff;
            }
            div.total span{
            	float:right;
            }
        </style>
    </head>
    <body>
        <form id="main" v-cloak>
        	<h1>Barang</h1>
        	<ul>
        		<li v-for="service in services" v-on:click="toggleActive(service)" v-bind:class="{ 'active': service.active}">
        			{{service.name}} <span>{{service.price | currency}}</span>
        		</li>
        	</ul>
        	<div class="total">
        		Total: <span>{{total() | currency}}</span>
        	</div>
        </form>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
        <script>
            Vue.filter('currency', function (value) {
                return 'Rp ' + value.toFixed(2);
            });
            var demo = new Vue({
                el: '#main',
                data: {
                    services: [
                    	{
                    		name: 'Buku Tulis',
                    		price: 5000,
                    		active:true
                    	},{
                    		name: 'Pensil',
                    		price: 2500,
                    		active:false
                    	},{
                    		name: 'Penghapus',
                    		price: 1000,
                    		active:false
                    	},{
                    		name: 'Ballpoint',
                    		price: 3000,
                    		active:false
                    	}
                    ]
                },
                methods: {
                	toggleActive: function(s){
                        s.active = !s.active;
                	},
                	total: function(){
                    	var total = 0;
                    	this.services.forEach(function(s){
                    		if (s.active){
                    			total+= s.price;
                    		}
                    	});
                	   return total;
                    }
                }
            });	
        </script>
    </body>
</html>

Contoh ini menggambarkan beberapa layanan dan total biaya. Karena layanan kami simpan didalam array, kita dapat memanfaatkan v-for directive untuk loop melalui semua entri dan menampilkannya. Jika elemen baru ditambahkan ke array atau elemen lama diubah, vue.js akan memperbarui dan menampilkan data baru secara otomatis.

Untuk menampilkan harga dalam format yang benar, kita harus mendefinisikan filter mata uang sederhana. Filter memungkinkan kita untuk malas memodifikasi atau memfilter data model. Untuk menentukan filter khusu kita harus menggunakan sintaks berikut:

Seperti yang Anda lihat, filternya cukup mudah, hanya menambahkan tanda dolar dan jumlah desimal yang tepat. Sama seperti pada filter sudut diterapkan dengan menggunakan | sintaks

  1. Instant search

Screenshot_17

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Vue.js Instant Search</title>
        <style>
            [v-cloak] {
              display: none;
            }
            *{
                margin:0;
                padding:0;
            }
            body{
                font:15px/1.3 'Open Sans', sans-serif;
                color: #5e5b64;
                text-align:center;
            }
            a, a:visited {
                outline:none;
                color:#389dc1;
            }
            a:hover{
                text-decoration:none;
            }
            section, footer, header, aside, nav{
                display: block;
            }
            .bar{
                background-color:#5c9bb7;
                background-image:-webkit-linear-gradient(top, #5c9bb7, #5392ad);
                background-image:-moz-linear-gradient(top, #5c9bb7, #5392ad);
                background-image:linear-gradient(top, #5c9bb7, #5392ad);
                box-shadow: 0 1px 1px #ccc;
                border-radius: 2px;
                width: 400px;
                padding: 14px;
                margin: 45px auto 20px;
                position:relative;
            }
            .bar input{
                background:#fff no-repeat 13px 13px;
                background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkU5NEY0RTlFMTA4NzExRTM5RTEzQkFBQzMyRjkyQzVBIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkU5NEY0RTlGMTA4NzExRTM5RTEzQkFBQzMyRjkyQzVBIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RTk0RjRFOUMxMDg3MTFFMzlFMTNCQUFDMzJGOTJDNUEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RTk0RjRFOUQxMDg3MTFFMzlFMTNCQUFDMzJGOTJDNUEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4DjA/RAAABK0lEQVR42pTSQUdEURjG8dOY0TqmPkGmRcqYD9CmzZAWJRHVRIa0iFYtM6uofYaiEW2SRJtEi9YxIklp07ZkWswu0v/wnByve7vm5ee8M+85zz1jbt9Os+WiGkYdYxjCOx5wgFeXUHmtBSzpcCGa+5BJTCjEP+0nKWAT8xqe4ArPGEEVC1hHEbs2oBwdXkM7mj/JLZrad437sCGHOfUtcziutuYu2v8XUFF/4f6vMK/YgAH1HxkBYV60AR31gxkBYd6xAeF3VzMCwvzOBpypX8V4yuFRzX2d2gD/l5yjH4fYQEnzkj4fae5rJulF2sMXVrAsaTWttRFu4Osb+1jEDT71/ZveyhouTch2fINQL9hKefKjuYFfuznXWzXMTabyrvfyIV3M4vhXgAEAUMs7K0J9UJAAAAAASUVORK5CYII=);
                border: none;
                width: 100%;
                line-height: 19px;
                padding: 11px 0;
                border-radius: 2px;
                box-shadow: 0 2px 8px #c4c4c4 inset;
                text-align: left;
                font-size: 14px;
                font-family: inherit;
                color: #738289;
                font-weight: bold;
                outline: none;
                text-indent: 40px;
            }
            ul{
                list-style: none;
                width: 428px;
                margin: 0 auto;
                text-align: left;
            }
            ul li{
                border-bottom: 1px solid #ddd;
                padding: 10px;
                overflow: hidden;
            }
            ul li img{
                width:60px;
                height:60px;
                float:left;
                border:none;
            }
            ul li p{
                margin-left: 75px;
                font-weight: bold;
                padding-top: 12px;
                color:#6e7a7f;
            }
        </style>
    </head>
    <body>
        <form id="main" v-cloak>
            <div class="bar">
                <input type="text" v-model="searchString" placeholder="Enter your search terms" />
            </div>
            <ul>  
                <li v-for="article in filteredArticles">
                    <a v-bind:href="article.url"><img v-bind:src="article.image" /></a>
                    <p>{{article.title}}</p>
                </li>
            </ul>
        </form>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
        <script>
            var demo = new Vue({
                el: '#main',
                data: {
                    searchString: "",
                    articles: [
                        {
                            "title": "5 Alternatif Node.js untuk WordPress",
                            "url": "https://trustme.co.id/5-alternatif-node-js-untuk-wordpress/",
                            "image": "https://trustme.co.id/wp-content/uploads/2017/11/Screenshot_26.png"
                        },
                        {
                            "title": "Perbandingan Umum Antara Dua Framework Kontemporer : AngularJS vs Vue.js",
                            "url": "https://trustme.co.id/perbandingan-umum-antara-dua-framework-kontemporer-angularjs-vs-vue-js/",
                            "image": "https://trustme.co.id/wp-content/uploads/2017/03/a-vs-v.png"
                        },
                        {
                            "title": "Tutorial SQL",
                            "url": "https://trustme.co.id/tutorial-sql/",
                            "image": "https://trustme.co.id/wp-content/uploads/2017/04/AAEAAQAAAAAAAAeiAAAAJDRhZGUzMWRhLTI4ODMtNDc1OS1hMDc5LTQwODAwZGI2OTdlMg.png"
                        },
                        {
                            "title": "Bahasa Apa Sajakah yang Harus Dipelajari untuk Web Developer",
                            "url": "https://trustme.co.id/bahasa-apa-sajakah-yang-harus-dipelajari-untuk-web-developer/",
                            "image": "https://trustme.co.id/wp-content/uploads/2016/11/web-dev.jpg"
                        },
                        {
                            "title": "Pure.css Menawarkan Alternatif dari Bootstrap",
                            "url": "https://trustme.co.id/pure-css-menawarkan-alternatif-dari-bootstrap/",
                            "image": "https://trustme.co.id/wp-content/uploads/2016/07/get-started.jpg"
                        },
                        {
                            "title": "5 Framework PHP Terbaik untuk Developer",
                            "url": "https://trustme.co.id/5-framework-php-terbaik-untuk-developer/",
                            "image": "https://trustme.co.id/wp-content/uploads/2017/04/top10.png"
                        }
                    ]
                },
                computed: {
                    filteredArticles: function () {
                        var articles_array = this.articles,
                            searchString = this.searchString;
                        if(!searchString){
                            return articles_array;
                        }
                        searchString = searchString.trim().toLowerCase();
                        articles_array = articles_array.filter(function(item){
                            if(item.title.toLowerCase().indexOf(searchString) !== -1){
                                return item;
                            }
                        })
                        return articles_array;;
                    }
                }
            });
        </script>
    </body>
</html>

Disini kita akan membuat sebuah aplikasi yang menampilkan beberapa artikel di website kami aplikasi ini juga akan memiliki field pencarian teks yang memungkinkan kita untuk memfilter artikel yang mana yang akan ditampilkan. Semua artikel akan disimpan dalam array artikel, dan artikel yang sesuai dengan query penelusuran akan berada dalam properti yang dihitung disebut filteredArticles.

Field input terikat pada model searchString. Saat teks yang dimasukan, model ini langsung diperbarui dan rangkaian filteredArtices yang dihitung akan dihasilkan lagi. Dengan cara ini kita bisa membuat pencarian real-time tanpa harus khawatir rendering atau setting event listener – vue.js menangani semua itu

  1. Switchable Grid

Screenshot_18

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Vue.js Switchable Grid</title>
        <style>
            [v-cloak] {
              display: none;
            }
            *{
            	margin:0;
            	padding:0;
            }
            body{
            	font:15px/1.3 'Open Sans', sans-serif;
            	color: #5e5b64;
            	text-align:center;
            }
            a, a:visited {
            	outline:none;
            	color:#389dc1;
            }
            a:hover{
            	text-decoration:none;
            }
            section, footer, header, aside, nav{
            	display: block;
            }
            .bar{
            	background-color:#5c9bb7;
            	background-image:-webkit-linear-gradient(top, #5c9bb7, #5392ad);
            	background-image:-moz-linear-gradient(top, #5c9bb7, #5392ad);
            	background-image:linear-gradient(top, #5c9bb7, #5392ad);
            	box-shadow: 0 1px 1px #ccc;
            	border-radius: 2px;
            	width: 580px;
            	padding: 10px;
            	margin: 45px auto 25px;
            	position:relative;
            	text-align:right;
            	line-height: 1;
            }
            .bar a{
            	background:#4987a1 center center no-repeat;
            	width:32px;
            	height:32px;
            	display:inline-block;
            	text-decoration:none !important;
            	margin-right:5px;
            	border-radius:2px;
            	cursor:pointer;
            }
            .bar a.active{
            	background-color:#c14694;
            }
            .bar a.list-icon{
            	background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYzNkFCQ0ZBMTBCRTExRTM5NDk4RDFEM0E5RkQ1NEZCIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYzNkFCQ0ZCMTBCRTExRTM5NDk4RDFEM0E5RkQ1NEZCIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjM2QUJDRjgxMEJFMTFFMzk0OThEMUQzQTlGRDU0RkIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjM2QUJDRjkxMEJFMTFFMzk0OThEMUQzQTlGRDU0RkIiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7h1bLqAAAAWUlEQVR42mL8////BwYGBn4GCACxBRlIAIxAA/4jaXoPEkMyjJ+A/g9MDJQBRhYg8RFqMwg8RJIUINYLFDmBUi+ADQAF1n8ofk9yIAy6WPg4GgtDMRYAAgwAdLYwLAoIwPgAAAAASUVORK5CYII=);
            }
            .bar a.grid-icon{
            	background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjBEQkMyQzE0MTBCRjExRTNBMDlGRTYyOTlBNDdCN0I4IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjBEQkMyQzE1MTBCRjExRTNBMDlGRTYyOTlBNDdCN0I4Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MERCQzJDMTIxMEJGMTFFM0EwOUZFNjI5OUE0N0I3QjgiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MERCQzJDMTMxMEJGMTFFM0EwOUZFNjI5OUE0N0I3QjgiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4MjPshAAAAXklEQVR42mL4////h/8I8B6IGaCYKHFGEMnAwCDIAAHvgZgRyiZKnImBQsACxB+hNoDAQyQ5osQZIT4gH1DsBZABH6AB8x/JaQzEig++WPiII7Rxio/GwmCIBYAAAwAwVIzMp1R0aQAAAABJRU5ErkJggg==);
            }
            .bar input{
            	background:#fff no-repeat 13px 13px;
            	border: none;
            	width: 100%;
            	line-height: 19px;
            	padding: 11px 0;
            	border-radius: 2px;
            	box-shadow: 0 2px 8px #c4c4c4 inset;
            	text-align: left;
            	font-size: 14px;
            	font-family: inherit;
            	color: #738289;
            	font-weight: bold;
            	outline: none;
            	text-indent: 40px;
            }
            ul.list{
            	list-style: none;
            	width: 500px;
            	margin: 0 auto;
            	text-align: left;
            }
            ul.list li{
            	border-bottom: 1px solid #ddd;
            	padding: 10px;
            	overflow: hidden;
            }
            ul.list li img{
            	width:120px;
            	height:120px;
            	float:left;
            	border:none;
            }
            ul.list li p{
            	margin-left: 135px;
            	font-weight: bold;
            	color:#6e7a7f;
            }
            ul.grid{
            	list-style: none;
            	width: 570px;
            	margin: 0 auto;
            	text-align: left;
            }
            ul.grid li{
            	padding: 2px;
            	float:left;
            }
            ul.grid li img{
            	width:280px;
            	height:280px;
            	object-fit: cover;
            	display:block;
            	border:none;
            }
        </style>
    </head>
    <body>
        <form id="main" v-cloak>
        	<div class="bar">
        		<a class="list-icon" v-bind:class="{ 'active': layout == 'list'}" v-on:click="layout = 'list'"></a>
        		<a class="grid-icon" v-bind:class="{ 'active': layout == 'grid'}" v-on:click="layout = 'grid'"></a>
        	</div>
        	<ul v-if="layout == 'grid'" class="grid">
        		<li v-for="a in articles">
        			<a v-bind:href="a.url" target="_blank"><img v-bind:src="a.image.large" /></a>
        		</li>
        	</ul>
        	<ul v-if="layout == 'list'" class="list">
        		<li v-for="a in articles">
        			<a v-bind:href="a.url" target="_blank"><img v-bind:src="a.image.small" /></a>
        			<p>{{a.title}}</p>
        		</li>
        	</ul>
        </form>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
        <script>
            var demo = new Vue({
            	el: '#main',
            	data: {
            		layout: 'grid',
                    articles: [{
                        "title": "5 Alternatif Node.js untuk WordPress",
                        "url": "https://trustme.co.id/5-alternatif-node-js-untuk-wordpress/",
                        "image": {
                            "large": "https://trustme.co.id/wp-content/uploads/2017/11/Screenshot_26.png",
                            "small": "http://localhost/learning-vue-js/1.png"
                        }
                    },
                    {
                        "title": "Perbandingan Umum Antara Dua Framework Kontemporer : AngularJS vs Vue.js",
                        "url": "https://trustme.co.id/perbandingan-umum-antara-dua-framework-kontemporer-angularjs-vs-vue-js/",
                        "image": {
                            "large": "https://trustme.co.id/wp-content/uploads/2017/03/a-vs-v.png",
                            "small": "http://localhost/learning-vue-js/4.png"
                        }
                    },
                    {
                        "title": "Tutorial SQL",
                        "url": "https://trustme.co.id/tutorial-sql/",
                        "image": {
                            "large": "https://trustme.co.id/wp-content/uploads/2017/04/AAEAAQAAAAAAAAeiAAAAJDRhZGUzMWRhLTI4ODMtNDc1OS1hMDc5LTQwODAwZGI2OTdlMg.png",
                            "small": "http://localhost/learning-vue-js/3.png"
                        }
                    },
                    {
                        "title": "Bahasa Apa Sajakah yang Harus Dipelajari untuk Web Developer",
                        "url": "https://trustme.co.id/bahasa-apa-sajakah-yang-harus-dipelajari-untuk-web-developer/",
                        "image": {
                            "large": "https://trustme.co.id/wp-content/uploads/2016/11/web-dev.jpg",
                            "small": "http://localhost/learning-vue-js/2.png"
                        }
                    },
                    {
                        "title": "Pure.css Menawarkan Alternatif dari Bootstrap",
                        "url": "https://trustme.co.id/pure-css-menawarkan-alternatif-dari-bootstrap/",
                        "image": {
                            "large": "https://trustme.co.id/wp-content/uploads/2016/07/get-started.jpg",
                            "small": "http://localhost/learning-vue-js/5.png"
                        }
                    },
                    {
                        "title": "5 Framework PHP Terbaik untuk Developer",
                        "url": "https://trustme.co.id/5-framework-php-terbaik-untuk-developer/",
                        "image": {
                            "large": "https://trustme.co.id/wp-content/uploads/2017/04/top10.png",
                            "small": "http://localhost/learning-vue-js/6.png"
                        }
                    }]
            	}
            });
        </script>
    </body>
</html>

Dalan contoh terakhir ini, kami akan menunjukan skenario umum dimana halaman memiliki layout yang berbeda. Sama seperti di aplikasi sebelumnya kita akan menampilkan daftar artikel trustme.co.id yang tersimpan dalam array.

Plugin JavaScript Terbaik dan Gratis

Bahkan dengan popularitas jQuery, tidak perlu bergantung pada library JS untuk setiap proyek. JavaScript klasik dapat berjalan di semua browser utama dan itu yang Anda butuhkan untuk membangun antarmuka dinamis.

Plugin ini harus berjalan pada semua browser modern dan Anda dapat menyesuaikan sebagian besar darinya meskipun belum paham sempurna tentang JavaScript

Plugin JavaScript Gratis

Headroom.js

01-headroom-js

Orang-orang di medium mempopulerkan header auto-heading dan sekarang menjadi fitur umum di banyak blog. Plugin Headroom menargetkan navbar situs Anda dan menyembunyikan secara otomatis melewati titik tertentu. Headroom juga membuat navbar muncul kembali setiap kali user kembali halaman

Fitur ini meniru medium dan juga bisa disesuaikan dengan fungsi utama plugin. Cek GitHub untuk dokumentasi dan Anda dapat melihat pratinjau langsung disini.

Drift

02-drift-js-plugin

Di situs eCommerce, Anda telah melihat dimana Anda membawa foto produk dan mendapatkan tampilan yang diperbesar kesamping. Ini adalah efek yang sangat teknis untuk diciptakan dengan plugin seperti Drift sangat mudah.

Anda bisa melihat beberapa contoh langsung di postingan ini dengan berbagai teknik klik dan efek hover zoom. Anda bisa mengubah gaya animasi, area zoom, dan efek zoom berdasarkan gambar yang berbeda.

Kami sangat merekomendasikan plugin ini kepada siapa saja yang memiliki galery foto web atau toko e-commerce. Dokumentasi sangat rinci dan plugin ini gratis dan terbaik untuk fungsi pembesaran gambar.

baguetteBox.js

03-baguettebox-js

lightbox adalah efek populer lainnya untuk gambar pada halaman web. Lightbox umum terjadi pada portofilio dan situs web yang memiliki banyak gambar yang dijejali bersama dalam satu halaman.

Plugin baguetteBox.js gratis membantu Anda membangun efek lightbox yang dapat digunakan kembali dengan jumlah foto yang tidak terbatas. BaguetteBox.js mendukung semua gerakan sentuh/geser untuk pengguna ponsel dan sangat responsif. Dan bahkan mendukung fitur tambahan seperti caption gambar dan efek transisi CSS3.

Ditambah plugin ini free dan open source jadi pasti kami rekomendasikan untuk plugin lightbox JS terbaik

Lory

04-lory-slider-slideshow

Plugin lory adalah slider foto berkemampuan sentuh namun tidak menggunakan efek lightbox. Sebagai gantinya, plugin ini memungkinkan Anda menanamkan tayangan slide dengan jumlah slide, lebar atau fixed variable dan menyesuaikannya dengan elemen wadah apapun

Lory sangat mudah diatur dan Anda dapat menyesuaikan opsi swipe dengan JavaScript. Plugin dilaman GitHub banyak contoh source code dan demo langsung yang dapat Anda coba lihat apakah ini sesuai dengan proyek Anda berikutnya.

noUiSlider

05-nouislider-js-library

HTML5 menambahkan input slider untuk mencatat nilai numerik. Tapi plugin noUiSlider adalah slider JavaScript yang hadir dengan pilihan dan fitur desain khusus yang tidak dapat Anda dapatkan dengan HTML biasa.

Plugin ini super ringan dan bekerja di semua browser utama termasuk perangkat mobile. Slider dapat direposisi secara vertikal atau horizontal sesuai kebutuhan sehingga sangat fleksibel

Jika Anda memerlukan masukan slider, cobalah gunakan versi HTML biasa dan gunakan plugin ini sebagai gantinya. Ini adalah plugin sederhana untuk setup dengan manfaatnya luar biasa.

Tingle

06-tingle-modal-window-js

Modal windows semuanya dari pengambilan e-mail ke notifikasi antarmuka. Plugin Tingle.js membawa jendela modal ke tingkat berikutnya dengan transisi CSS dasar dan opsi JS API untuk kustomisasi

Anda dapat melihat demo langsung disini dengan berbagai fitur termasuk tombol dan video tersemat. Dengan opsi JS Anda dapat menerapkan kelas CSS khusus, melampirkan konten internal, dan bahkan membangun fungsi panggilan setelah modal dibuka dan ditutup.

Tingle adalah plugin modal vanilla JS open source terbaik untuk proyek web manapun. Mudah untuk setup, mudah untuk menyesuaikan, dan bekerja seperti yang Anda harapkan.

Plyr

07-plyr-media-player-javascript

Default player terasa seperti interface premium dengan teks tertutup, mode full screen, shortcut tombol spasi untuk play/pause media.

Anda dapat menyematkan video HTML5 asli atau video eksternal dari YouTube / Vime. Dan library Plyr bahkan dilengkapi dengan pemutar audio khusus untuk estetika yang serupa tanpa panel video

Plyr tak dapat disangkal bahwa ia merupakan plugin pemutar video/audio terbaik yang berjalan di HTML5 dan vanilla JS. Plyr benar-benar gratis dan super mudah disesuaikan dengan sedikit usaha.

Jump.js

08-jumpjs-library-plugin

Kebanyakan developer tahu bagaimana kode hyperlink yang membantu user melompat di sekitar halaman. Tapi banyak devs ingin menulis library scroll sendiri? Jawabannya adalah “tidak ada” atau setidaknya tidak ada yang memiliki pekerjaan menumpuk

Itu sebabnya Jump.js adalah plugin yang sangat berharga. Anda tinggal memasukannya saja dan menambahkan pemanggilan fungsi ke tautan yang memerlukan scrolling. Anda akan membangunnya dalam waktu singkat dengan dasarnya tidak ada perawatan apapun.

Select.js

09-selectjs-menu

HTML native select menu berfungsi dengan baik namun bukan unsur tercantik di page. Tapi itu semua bisa berubah berkat select.js, sebuah plugin JS gratis yang dibuat oleh tom HubSpot.

Dengan plugin ini Anda bisa mengkustomisasi semua menu select dengan estetika desain minimalis. Ada juga demo live jika Anda ingin melihatnya beraksi.

Select tidak menambahkan fungsionalitas tambahan jadi ini hanya plugin yang dibuat untuk memperindah halaman Anda. Namun ringan, mudah diatur, dan lebih mudah disesuaikan dengan tema CSS Anda sendiri

Flatpickr

10-flatpickr-js-plugin

Setiap kali saya memasukan tanggal kedalam form, kami selalu memilih untuk menggunakan datepicker kalender. Ini hanya menghemat waktu dan membuat proses lebih cepat, tapi hanya jika datepicker dibangun dengan baik

Setelah menggali banyak plugin akhirnya menemukan Flatpickr. Flatpickr adalah datepicker gratis dengan desain flat sederhana yang cocok dengan halaman web manapun

Flatpickr bisa bekerja pada jQuery tapi juga dimaksudkan untuk menjadi plugin JS vanilla. Simak demo live untuk melihatnya dalam tindakan, dan jika Anda menyukai bagaimana rasanya merasa bebas untuk menambahkannya ke dalam proyek web berikutnya.

Dropzone

11-dropzone-js-plugin

Dengan fitur browser yang terus berkembang, pengguna internet selalu mengharapkan fitur yang lebih dinamis di setiap situs web. Drag-and-drop adalah perilaku umum dalam bentuk upload dan meskupin ini adalah fitur populer, ini juga sulit dibangun dari awal

Beruntung ada Dropzone, library JavaScript drag and drog gratis untuk mengupload apapun di web. Laman GitHub penuh dengan dokumentasi namun Anda bisa menemukan lebih banyak info dan demo langsung di situs web resmi Dropzone

Dropzone bekerja diluar kotak dengan sangat sedikit penyesuaian yang dibutuhkan. Tapi Anda selalu bisa memperluas library ini dengan kode JS Anda sendiri yang membuat Dropzone lebih dari sekedar plugin, ini benar-benar library JS lengkap untuk fungsi drag and drop

Holmes

12-holmes-javascript-plugin

Diharapkan sebagian besar pengguna mengenal CTRL + F (atau CMD + F) untuk pencarian teks dalam browser. Tapi dengan fitur penyortiran dinamis Anda bisa memberikan pengalaman pengguna yang lebih baik dengan plugin seperti Holmes.

Plugin JS gratis ini memngkinkan Anda menambahkan pencarian khusus ke halaman dengan filter penyortiran otomatis yang membatasi elemen halaman tertentu. Ini bisa berupa produk dalam chart, atau posting blog atau bahkan foto berdasarkan tag

Anda bisa menyortir apapun dengan Holmes asalkan memiliki kriteria keyword dan pencarian untuk di saring.

Bideo.js

13-bideo-js-plugin

Banyak sekali plugin video fullscreen yang tak terhitung jumlahnya dan kebanyakan memerlukan library JS. Pilihan JS murni terbaik adalah Bideo.js yang menggunakan JavaScript murni untuk fitur embed.

Bideo.js adalah salah satu plugin paling sederhana untuk ditambahkan ke situs Anda dan ini juga merupakan library yang cukup baru. Lihat halaman demo untuk mempelajari lebih lanjut dan jelajahi source kode jika Anda memerlukan template untuk disalin

Validate.js

14-validate-js-plugin

Validasi bentuk dinamis menghemat waktu bagi pengguna dan menghemat daya pemrosesan server pada backend. Tapi kebanyakan plugin validasi berjalan di library seperti jQuery atau Zepto.

Untungnya ada pilihan pure JS yang tersedia dan salah satu yang terbaik adalah Validate.js. Validate.js berjalan disemua browser modern termasuk IE6 yang luar biasa untuk era sekarnag. Anda dapat menyesuaikan semua pesan respons dan membuat aturan yang telah ditentukan untuk setiap field form

Dan plugin secara otomatis menghentikan form apapun sampai semua validasi telah selesai. Kami tidak bisa memikirkan plugin gratis lainnya yang menawarkan banyak fitur dengan kurva belajar sederhana seperti itu.

bLazy

15-blazy-javascript-plugin

lazy loading mengurangi request HTTP dan meningkatkan kecepatan load page untuk pengunjung baru. Namun tidak selalu menjadi fitur termudah untuk diterapkan disitus Anda.

Tapi dengan plugin seperti bLazy, prosesnya jauh lebih mudah. Anda dapat load lazy semuanya dari gambar ke tayangan slide, video HTML5, dan iframe. Plugin ini berjalan di IE7+ dan semua browser utama lainnya.

Setup cukup mudah dan pada halaman demo Anda bisa melihatnya dalam action + copy source kode untuk website Anda sendiri.

12 Perintah Terminal yang Harus Diketahui oleh Setiap Developer

Terminal adalah salah satu alat produktivitas terpenting di industri developer. Mastering dapat memiliki efek yang sangat positif pada alur kerja Anda. Karena banyak tugas sehari-hari yang dikurangi untuk menulis sebuah perintah sederhana dan mendapatkan Enter.

Pada artikel ini kami telah mempersiapkan koleksi perintah Unix yang akan membantu Anda memaksimalkan terminal Anda. Beberapa diantaranya built-in, ada pula tool gratis yang telah teruji secara waktu bahkan bisa dipasang dalam waktu kurang dari satu menit.

Curl

Curl adalah baris perintah untuk mengajukan request melalui HTTP(s), FTP dan puluhan protokol lain yang mungkin Anda belum dengar. Curl bisa mendownload file, cek header respon dan akses data remote secara bebas.

Dalam pengembangan web curl sering digunakan untuk menguji koneksi dan bekerja dengan Restful API

# Fetch the headers of a URL.
curl -I http://google.com
HTTP/1.1 302 Found
Cache-Control: private
Content-Type: text/html; charset=UTF-8
Referrer-Policy: no-referrer
Location: http://www.google.com/?gfe_rd=cr&ei=0fCKWe6HCZTd8AfCoIWYBQ
Content-Length: 258
Date: Wed, 09 Aug 2017 11:24:01 GMT

# Make a GET request to a remote API.
curl http://numbersapi.com/random/trivia
29 is the number of days it takes Saturn to orbit the Sun.

Perintah Curl bisa jadi jauh lebih rumit dari ini. Ada banyak pilihan untuk mengendalikan header, cookies, otentikasi dan banyak lagi. Anda bisa membaca lebih banyak tentang curl di buku gratis yang bagus semuanya.

Tree

Tree adalah utilitas baris perintah kecil yang menunjukan representasi virtual file dalam sebuah direktori. Tree bekerja secara rekursif, membahas setiap tingkat bersarang dan menggambar tree yang diformat dari semua isinya. Dengan cara ini Anda dapat dengan cepat mengecek dan menemukan file yang Anda cari.

tree
.
├── css
│   ├── bootstrap.css
│   ├── bootstrap.min.css
├── fonts
│   ├── glyphicons-halflings-regular.eot
│   ├── glyphicons-halflings-regular.svg
│   ├── glyphicons-halflings-regular.ttf
│   ├── glyphicons-halflings-regular.woff
│   └── glyphicons-halflings-regular.woff2
└── js
    ├── bootstrap.js
    └── bootstrap.min.j

Ada juga pilihan untuk memfilter hasilnya menggunakan pola regEx-like sederhana:

tree -P '*.min.*'
.
├── css
│   ├── bootstrap.min.css
├── fonts
└── js
    └── bootstrap.min.js

Tmux

Tmux adalah multiplexer terminal, yang diterjemahkan dalam bahasa manusia berarti bahwa tool ini menghubungkan beberapa terminal ke satu sesion terminal tunggal.

tmux

Tmux memungkinkan Anda beralih diantara program di satu terminal, menambahkan panel layar terpisah, dan melampirkan beberapa terminal ke sesi yang sama, membuat mereka tetap sinkron. Tmux sangat berguna  saat bekerja di server jauh, karena memungkinkan Anda membuat tab baru tanpa harus masuk lagi.

Disk usage – du

Perintah du menghasilkan laporan tentang penggunaan ruang dari file dan direktori. Hal ini sangat mudah digunakan dan dapat bekerja secara rekursif, melalui setiap sub direktori dan mengembalikan ukuran individual setiap file.

Kasus penggunaan umum untuk du adalah ketika salah satu drive Anda kehabisan ruang dan Anda tidak tahu mengapa. Dengan menggunakan perintah ini Anda dapat dengan cepat melihat berapa banyak penyimpanan yang diambil setiap folder, sehingga menemukan penimbun memori terbesar.

# Running this will show the space usage of each folder in the current directory.
# The -h option makes the report easier to read.
# -s prevents recursiveness and shows the total size of a folder.
# The star wildcard (*) will run du on each file/folder in current directory.

du -sh *

1.2G    Desktop
4.0K    Documents
40G     Downloads
4.0K    Music
4.9M    Pictures
844K    Public
4.0K    Templates
6.9M    Videos

Ada juga perintah serupa yang disebut df (Disk Free) yang mengembalikan berbagai informasi tentang ruang disk yang tersedia (kebalikan dari du).

Git

Git sejauh ini merupakan sistem kontrol versi terpopuler saat ini. Git adalah salah satu tool yang menentukan dev web modern

Ada banyak aplikasi dan alat pihak ketiga yang tersedia namun kebanyakan orang lebih suka mengakses git secara native meskipun terminalnya. CLI git benar-benar hebat dan bisa menangani bahkan sejarah yang paling kusut sekalipun

Tar

Tar adalah tool Unix standar untuk bekerja dengan arsip file. Tar memungkinkan Anda menggabungkan beberapa file menjadi satu paket dengan cepat, sehingga memudahkan untuk menyimpan dan memindahkannya nanti

tar -cf archive.tar file1 file2 file3

Menggunakan opsi -x juga bisa mengekstrak arsip .tar yang ada.

tar -xf archive.tar

Perhatikan bahwa sebagian besar format lain seperti .zip dan .rar tidak dapat dibuka oleh tar dan memerlukan utilitas perintah lainnya seperti .unzip

Banyak sistem Unix modern menjalankan versi tar yang diperluas (tar GNU) yang juga dapat melakukan kompresi ukuran file:

# Create compressed gzip archive.
tar -czf file.tar.gz inputfile1 inputfile2

# Extract .gz archive.
tar -xzf file.tar.gz

Jika OS Anda tidak memiliki versi tar tersebut, Anda bisa menggunakan gzip, zcat atau kompress untuk mengurangi ukuran arsip file.

Md5sum

Unix memiliki beberapa perintah built in hashing termasuk md5sum, sha1sum dan lain-lain. Tool baris perintah ini memiliki berbagai aplikasi dalam pemrograman, namun yang terpenting bisa digunakan untuk memeriksa integritas file.

Misalnya, jika Anda mendownload berkas .iso dari sumber yang tidak terpercaya, ada kemungkinan filte tersebut mengandung skript berbahaya. Untuk memastikan .iso aman, Anda bisa mengambil md4 atau hash lain darinya.

md5sum ubuntu-16.04.3-desktop-amd64.iso 

0d9fe8e1ea408a5895cbbe3431989295  ubuntu-16.04.3-desktop-amd64.iso

Anda kemudian dapat membandingkan string yang dihasilkan dengan yang diberikan dari penulis asli (misalnya Ubuntu)

Htop

Htop adalah alternatif yang lebih kuat untuk task manager buil-in. Htop menyediakan interface yang canggih dengan banyak pilihan untuk memantau dan mengendalikan proses sistem.

htop-1

Meski berjalan di terminal, htop memiliki dukungan yang sangat bagus untuk kontrol mouse hal ini membuat lebih mudah untuk menavigasi menu, memilih proses dan mengatur tugas yang dipilah dan disaring.

Ln

Link di Unix mirip dengan pintasan di windows, memungkinkan Anda mendapatkan akses cepat ke file tertentu. Link dibuat melalui perintah ln dan bisa dua tipe : hard atay symbolic. Setiap jenis memiliki sifat yang berbeda dan digunakan untuk berbagai hal

Berikut adalah contoh salah satu dari banyak cara Anda bisa menggunakan link. Katakanlah kita memiliki sebuah direktori kita yang disebut Scripts. Ln berisi script bash yang terorganisi rapih yang biasa kita gunakan. Setiap kali kami ingin memanggil salah satu skrip kami, harus melakukan ini:

~/Desktop/Scripts/git-scripts/git-cleanup

Jelas, ini tidak terlalu convinient karena kita harus menulis jalur absolut setiap saat. Sebagai gantinya kita bisa membuat symlink dari folder Script kita ke /usr/local/bin, yang akan membuat skript dieksekusi dari semua direktori.

sudo ln -s ~/Desktop/Scripts/git-scripts/git-cleanup /usr/local/bin/

Dengan symlink yang tercipta kita sekarang bisa memanggil script kita dengan hanya menuliskan namanya di terminal yang terbuka.

git-cleanup

SSH

Dengan perintah ssh pengguna dapat dengan cepat terhubung ke host jarak jauh dan masuk ke shell Unix-nya. Hal ini memungkinkan untuk segera mengeluarkan perintah di server langsung dari terminal mesin loka Anda.

Untuk membuat koneksi Anda hanya perlu menentukan alamat ip atau url yang benar. Pertama kali Anda terhunung ke server baru akan ada beberapa bentuk otentikasi.

ssh username@remote_host

Jika Anda ingin cepat menjalankan perintah di server tanpa login, Anda cukup menambahkan sebuah perintah setelah url. Perintah akan berjalan di server dan hasilnya akan dikembalikan.

ssh username@remote_host ls /var/www

some-website.com
some-other-website.com

Ada banyak hal yang dapat Anda lakukan dengan SSH seperti membuat proxi dan tunnel, mengamankan koneksi Anda dengan kunci pribadi, mentransfer file dan banyak lagi. Anda dapat membaca lebih lanjut dalam panduan ini

Grep

Grep adalah Unix standar untuk menemukan string didalam teks. Dibutuhkan masukan dalam bentuk file atau direct stream, menjalankan isinya melalui ekspresi reguler, dan mengembalikan semua baris yang sesuai.

Perintah ini sangat berguna saat bekerja dengan file besar yang perlu disaring. Di bawah ini kita menggunakan grep dalam kombinasi dengan perintah tunggal untuk mencari file log besar dan menghasilkan file yang baru hanya berisi kesalahan dari hari ini

// Search for today's date (in format yyyy-mm-dd) and write the results to a new file. 
grep "$(date +"%Y-%m-%d")" all-errors-ever.log > today-errors.log

Perintah hebat lainnya untuk bekerja dengan string adalah sed. Sed lebih kuat (dan lebih rumit) dari pada grep dan dapat melakukan hampir semua tugas terkait string termasuk menambahkan, menghapus atau mengganti string.

Alias

Banyak perintah Unix, termasuk beberapa fitur dalam artikel ini, cenderung untuk mendapatkan cukup lama setelah Anda menambahkan semua pilihan kepada mereka. Agar lebih mudah diingat Anda bisa membuat alias pendek dengan perintah bawaan alias

# Create an alias for starting a local web server.
alias server="python -m SimpleHTTPServer 9000"

# Instead of typing the whole command simply use the alias.
server 

Serving HTTP on 0.0.0.0 port 9000 ...

Alias akan tersedia selama Anda tetap membuka terminal itu. Untuk membuatnya permanen Anda bisa menambahkan perintah alias ke file .bashrc Anda.

5 Alternatif Node.js untuk WordPress

Awalnya dirilis pada tahun 2003, WordPress masih menjadi raja CMS. Tapi dengan munculnya Node.js ada banyak penantang modern yang memiliki komunitas besar, support tema, plugin dan mudah dipasang di server Anda sendiri. Berikut adalah 5 daftarnya yang mungkin Anda ingin checkout :

KeystoneJS

border-image

KeystoneJS adalah framework CMS yang powerfull, dibangun di Express dan MongoDB. KeystoneJS memberikan cara mudah untuk membuat proyek dimanis dengan rute, template dan model yang terstruktur dengan baik.

Proyek ini dilengkapi dengan fitur hebat seperti UI admin yang bagus, helpful utilities yang sangat membantu, manajemen sesi, pengiriman email, ekstensi dan banyak lagi. KeystoneJS juga menawarkan alat baris perintah untuk membuat proyek baru dan menyiapkan semua asetnya.

Enduro.js

enduro

Enduro.js menawarkan cara cepat dan mudah untuk membangun proyek Anda, UI admin yang bagus dan sederhana serta alat yang terintegrasi untuk membangun segala sesuatu di server. Enduro.js bekerja tanpa database, malah mengandalkan sistem file flat yang bisa dibuka langsung di text editor. Sangat mudah untuk menginstall dan dapat digunakan melalui Git.

Proyek ini menawarkan sejumlah tema yang dapat Anda gunakan dan sesuaikan dengan keinginan Anda. Enduro js mendukung situs multi bahasa, rute yang disederhanakan, dan fitur lainnya. Bahkan ada live reload melalui browsersync, memungkinkan Anda untuk langsung melihat setiap perubahan yang Anda buat secara langsung di browser Anda.

Apostrophe

apostrphe

Apostrophe menawarkan fitur pencarian front-end dan back-end yang canggih, text editor yang penuh, kinerja cepat, dan drag and drop editing tepat dihalaman. Apostrophe sangat user friendly dengan dokumentasi yang detail dan komunitas yang aktif.

Apostrophe support beberapa extensions yang dapat Anda gunakan untuk menambah fitur baru ke proyek Anda. Built-in image dan file librari memudahkan untuk memasukan dan menggunakan kembali file dan sumber daya lainnya di situs Anda.

Ghost

ghost

Ghost adalah platform blogging modern dan kuat yang bisa Anda lihat dibeberapa situs web populer. Mudah diatur dan memiliki desain yang sederhana dan optimal, fokus pada memberikan pengalaman menulis terbaik.

Ghost merupakan framework Ember untuk front-end, Handlebars untuk templating dan layer database standard MySQL. Halaman proyek GitHub memiliki lebih dari repositori mengagumkan, menawarkan berbagai utilitas seperti setup Vagrant, tema dan CLI.

Hexo

hexo

Hexo adalah framework blog yang sederhana dan kuat dimana setiap posting ditulis dalam format markdown dan diterjemahkan kedalam halaman statis dengan layout dan style yang tepat.

Proyek ini menawarkan sistem plugin yang hebat dengan beberapa plugin yang dapat Anda install untuk memperluas fungsinya. Hexo juga menawarkan cara cepat dan mudah untuk menyebarkan proyek Anda ke halaman GitHub atau Heroku dengan satu perintah tunggal. Terlebih lagi, Hexo mendukung berbagai macam tema dan template cantik yang bisa Anda gunakan untuk membuat desain menarik dan mengasyikkan.