logo
hero image

Special Elements pada Svelte JS

Macam-macam built-in element pada Svelte JS
20 July 2020 · 5 Minutes

Nggak cuma nasi goreng aja yang spesial, di SvelteJS juga ada lho element yang spesial 🤣

element-element tersebut disediakan oleh Svelte untuk memudahkan kita dalam membuat aplikasi web, dengan memanfaatkan element2 tersebut code yang kita tulis juga akan lebih ringkas nantinya. pada saat artikel ini ditulis, ada 6 elemen spesial yang disediakan oleh Svelte, antara lain:

  1. svelte:head

  2. svelte:window

  3. svelte:body

  4. svelte:self

  5. svelte:component

  6. svelte:options


1. svelte:head

yang pertama adalah svelte:head, fungsinya untuk menyisipkan element ke dalam tag <head> pada dokumen html melalui component Svelte.

dengan svelte:head, kita bisa menyisipkan CSS eksternal, Javascript library, mengganti title, dan lain-lain.

berikut ini adalah contoh penggunaaan svelte:head untuk mengganti title :

Contoh svelte:headContoh svelte:head

OutputOutput

2. svelte:window

ini fungsinya untuk memberikan event listener pada window, sebagai contoh, kita bisa membuat keyboard shortcut dengan cara passing function handleShortcut pada attribute on:keydown, yang mana function tsb akan dijalankan ketika user menekan tombol di keyboard.

Contoh svelte:windowContoh svelte:window

OutputOutput

Ohya, kita juga bisa melakukan binding pada elemen svelte:window lho! berikut ini adalah property2 yang bisa dipakai untuk binding :

  • innerWidth

  • innerHeight

  • outerWidth

  • outerHeight

  • scrollX

  • scrollY

  • online : sebagai alias untuk window.navigator.onLine

contoh binding pada svelte:windowcontoh binding pada svelte:window

outputoutput

3. svelte:body

sama halnya dengan svelte:window, svelte:body berfungsi untuk memberikan event listener, tapi pada document.body, element ini bisa kita manfaatkan untuk memberikan event listener mouseenter dan mouseleave, yang mana tidak bisa dihandle oleh svelte:window.

berikut ini adalah contoh penggunaan-nya :

contoh svelte:bodycontoh svelte:body

OutputOutput

4. svelte:self

element ini memungkinkan sebuah component untuk merender dirinya sendiri secara rekursif. ini bisa kita manfaatkan untuk membuat fitur reply secara rekursif tanpa batas.

atau mungkin untuk menampilkan file dari sebuah folder yang isinya terdapat folder lagi yang folder tersebut berisi folder lagi yang didalamnya ada folder berisi folder 😜

Yo dawgYo dawg

berikut ini adalah contoh penggunaan element svelte:self :

App.svelteApp.svelte

Folder.svelteFolder.svelte

File.svelteFile.svelte

OutputOutput

Penjelasan kode :

  1. App.svelte : di component ini kita mempunyai variabel files yang berisi object file2 dan folder, kemudian kita render component Folder, di component Folder tersebut kita passing props nama dan files yg berisi object file2 dan folder.

  2. Folder.svelte : disini kita menampilkan nama foldernya yang berasal dari props nama, karena sebuah folder bisa berisi banyak file bahkan subfolder maka kemudian kita akan merender file2 dan subfolder miliknya yang berasal dari props files.

  3. File.svelte : di component ini kita hanya menampilkan nama filenya yang berasal dari props nama.

5. svelte:component

kita bisa memanfaatkan svelte:component untuk merender component secara dinamis, caranya gampang aja tinggal masukin component yg ingin dirender ke dalam props this

berikut ini adalah contoh penggunaan-nya :

Contoh svelte:componentContoh svelte:component

OutputOutput

daripada kita merender component dengan if else if else if … seperti ini :

Dynamic rendering
icon
1{#if selected.color === 'red'}
2 <RedComponent/>
3{:else if selected.color === 'green'}
4 <GreenComponent/>
5{:else if selected.color === 'blue'}
6 <BlueComponent/>
7{/if}

dengan memanfaatkan svelte:component, cukup begini saja 😉

Dynamic rendering
icon
1<svelte:component this={selected.component} />

6. svelte:options

yang terakhir adalah svelte:options, di element ini kita bisa menjelaskan kepada compiler bagaimana component kita dicompile, dengan cara passing opsi2-nya sebagai props.

berikut ini adalah beberapa opsi yang bisa kita atur :

  • Immutable (default=false) : jika di-set menjadi true, maka object props-nya akan diperlakukan sebagai immutable, menjadi immutable artinya parent component akan membuat object baru untuk object props daripada mengubah property pada object yang sudah ada. ini memungkinkan compiler Svelte untuk menentukan perubahan props dengan cara membandingkan Object Reference daripada Object Property. dengan begini, kalau parent component mengubah property pada object yang digunakan oleh child component, maka child component tidak akan mendeteksi perubahan dan tidak akan di-rerender.

  • accessors (default=false) : jika di-set menjadi true, maka akan ditambahkan method getter dan setter pada component props. ini akan berguna jika kita ingin membuat Custom Element yang bisa dipakai oleh non-Svelte (Vanilla JS, React, dll).

  • namespace : untuk menentukan namespace sebuah component, ini biasanya dipakai kalo kita ingin membuat svg component yang digunakan di dalam element <svg>

  • tag : ini adalah nama tag yang dipakai ketika Svelte Component dicompile menjadi Custom Element yang bisa dipakai oleh non-Svelte.

ini adalah contoh penggunaan svelte:options :

Svelte Options
icon
1<svelte:options immutable={true}/>

jika kamu masih bingung dengan opsiimmutable, perhatikan gambar berikut :

Mutable vs ImmutableMutable vs Immutable

pada gambar diatas, jika muncul flash merah itu tandanya component tsb sedang di-rerender, jadi, dengan set immutable pada svelte:options menjadi true, kita bisa sedikit mengoptimasi performa Svelte app kita karena kita hanya me-rerender component2 yg mengalami perubahan di DOM saja 🥳


kita telah mengetahui apa saja Special Elements pada Svelte, apa fungsinya dan bagaimana cara menggunakannya, congrats!! btw tadi saya menyinggung beberapa kali terkait Custom Element tapi sepertinya kurang detail yah 😅 mungkin di artikel selanjutnya kita akan bahas itu, karena cukup menarik sih, kita bisa membuat Svelte Component jadi element biasa yang bisa dipake di non-Svelte apps.

Oke mungkin itu saja yang bisa saya bagikan kali ini, kalau kamu merasa artikel ini bermanfaat silakan Like & Share artikel ini ke teman-teman kamu atau jika kamu punya pertanyaan, tulis aja di kolom komentar, Thank you! 😁 🙏

Svelte
Web Development

Written by :
Alfin Syahruddin
Developer · Stock Trader · Libertarian · Freethinker

Always open to new ideas 🕊️

Loading...

Related articles

Articles that you might want to read.

hero image
Reactivity pada Svelte JS

Reactive Programming yang sesungguhnya dengan Svelte JS

6 July 2020 · 7 Minutes
Svelte
Web Development
hero image
Membuat Web Components dengan Svelte JS

Buat custom Tag HTML-mu sendiri dengan Svelte! 🤓

3 August 2020 · 8 Minutes
Svelte
Web Components
Web Development
hero image
iOS Reverse Engineering

Tutorial membongkar dan memodifikasi aplikasi iOS 🍎

15 March 2025 · 10 Minutes
iOS Development
Security
Reverse Engineering
All rights reserved © Alfin Syahruddin · 2019
RSS Feed