Langsung ke konten utama

Reusability Vue 3 - Composition API

 Ada 3 pembahasan dalam reusability pada vue js

  • Composable

Pada vue application "composable" itu function yang di manfaatkan oleh composition api untuk merangkum dan mengulang kembali stateful logic.
Yang biasanya gini 
<script setup>
import { ref, onMounted, onUnmounted } from "vue";

const y = ref(0);
const x = ref(0);

function update(event) {
x.value = event.pageX;
y.value = event.pageY;
}

onMounted(() => window.addEventListener("mousemove", update));
onUnmounted(() => window.addEventListener("mousemove", update));
</script>

<template>Mouse position {{ x }}, {{ y }}</template>

Ada perubahan di dalam <script>
<!-- template/ component -->
<script setup>
import { useMouse } from "../composable/mouse";

const { x, y } = useMouse();
</script>

<template>Mouse position {{ x }}, {{ y }}</template>

create 1 folder di dalam src/composable/mouse.js. 
import { ref, onMounted, onUnmounted } from "vue";

export function useMouse() {
const x = ref(0)
const y = ref(0)

function update(event) {
x.value = event.pageX
y.value = event.pageY
}

onMounted(() => window.addEventListener('mousemove', update))
onUnmounted(() => window.addEventListener('mousemove', update))

return { x, y}
}

Jangan lupa jika anda menggunakan vue js perlu tambahkan route. kalo nuxt tempatkan di folder /pages

  • Custom Directive

By default vue js sudah banyak directive yang bisa di pake contoh: v-show, v-model, etc. akan tetapi kita bisa custom directive. Perlu diketahui DOM sangat penting yang harus di kuasai
<template>
<input v-focus />
<div v-event>ready</div>
<div id="demo"></div>
</template>

<script setup>
const vFocus = {
mounted: (el) => el.focus(),
};

const vEvent = {
mounted: (el) => el.addEventListener("click", clickRun),
};

function clickRun() {
document.getElementById("demo").innerHTML = "Ready to go";
}
</script>

  • Plugin

Plugin di vue js seperti menambahkan function code untuk mempermudah di tempate. sebagai contoh kita install I18n language internationalize. 

Install package nya npm i vue-i18n. 
Note: Sebaiknya language di pisahkan dalam satu folder beda file. contoh en.json id.json/ en.js id.js. recomended json
import i18nPlugin from './plugins/i18n'

const app = createApp(App)

app.use(createPinia())
app.use(router)
app.use(i18nPlugin, {
greetings: {
hello: 'welcome',
class: 'Vue Js'
}
})

create file /plugins/i18n.js
export default {
install: (app, options) => {
// inject a globally available $t() method
app.config.globalProperties.$t = (key) => {
// retrieve a nested property in `options`
// using `key` as the path
return key.split('.').reduce((o, i) => {
if (o) return o[i]
}, options)
}
}
}

Jadi di template tinggal gini
<template>
<h1>{{ $t("greetings.class") }}</h1> // Vue Js
</template>


Bonus register global component

tambahkandi main.js
import GlobalComponent from './components/GlobalComponent.vue'
const app = createApp(App)
app.component('GlobalComponent', GlobalComponent)

ini contoh componentnya
<template>Create Global Component</template>

di template tinggal tanpa perlu import component
<template>
<global-component />
</template>

Komentar

Postingan populer dari blog ini

Apa itu API

Bagaimana membuat aplikasi atau website dengan performa yang baik? Bagaimana membuat website yang mudah dikembangkan di berbagai platform? Bagaimana mengintegrasikan website dengan aplikasi yang berbeda bahasa pemrograman? Jawabannya adalah dengan membuat API. Untuk membuat API, arsitektur yang paling populer yaitu RESTful API.   Pada tutorial kali ini saya akan sharing bagaimana membuat RESTful API menggunakan node.js, express, dan MySQL secara step by step. Api itu RESTful API? RESTful API  merupakan implementasi dari API  ( Application Programming Interface ). REST (REpresentational State Transfer) adalah suatu arsitektur metode komunikasi yang menggunakan protocol HTTP untuk pertukaran data dan metode ini sering diterapkan dalam pengembangan aplikasi. Mungkin terdengar rumit tapi sebenarnya tidak. Tujuannya untuk menjadikan system dengan performa yang baik, cepat, dan mudah untuk dikembangkan ( scale ) terutama dalam pertukaran dan komunikasi data...

Arsitektur & Organisasi Komputer

    Arsitektur Komputer  Dalam bidang teknik komputer, arsitektur komputer adalah konsep perencanaan dan struktur pengoperasian dasar dari suatu sistem komputer. Arsitektur komputer ini merupakan rencana cetak-biru dan deskripsi fungsional dari kebutuhan bagian perangkat keras yang didesain (kecepatan proses dan sistem interkoneksinya). Dalam hal ini, implementasi perencanaan dari masing–masing bagian akan lebih difokuskan terutama, mengenai bagaimana CPU akan bekerja, dan mengenai cara pengaksesan data dan alamat dari dan ke memori cache, RAM, ROM, cakram keras, dll). Beberapa contoh dari arsitektur komputer ini adalah arsitektur von Neumann, CISC, RISC, blue Gene, dll.     Arsitektur komputer juga dapat didefinisikan dan dikategorikan sebagai ilmu dan sekaligus seni mengenai cara interkoneksi komponen-komponen perangkat keras untuk dapat menciptakan sebuah komputer yang memenuhi kebutuhan fungsional, kinerja, dan target biayanya. Arsitektur komputer ini...

How to use CKEditor in Nuxt Js

Requirement:  Node 14.18.3 NPM 6.14.15 Yarn 1.22.4 yarn add @ckeditor/ckeditor5-vue@23.0.0 yarn add @blowstack/ckeditor5-full-free-build@1.0.2 // plugins/ckeditor.vue import Vue from ' vue ' import CKEditor from ' @ckeditor/ckeditor5-vue ' Vue . use ( CKEditor ) // components/CkEditor.vue < template > < ckeditor : editor = " editor " : value = " value " : config = " config " @ input = " ( event ) => $emit ( ' input ' , event) " /> </ template > < script > let FullFreeBuildEditor; let CKEditor; if (process . client ) { FullFreeBuildEditor = require ( ' @blowstack/ckeditor5-full-free-build ' ); CKEditor = require ( ' @ckeditor/ckeditor5-vue ' ); } else { CKEditor = { component: { template: ' <div></div> ' } }; } export default { name: ' CkEditor ' , components: { ckeditor: CKEditor . component , }, p...