Langsung ke konten utama

Membuat Halaman Penjualan Pre-Order Menggunakan ReactJS

Apa itu React JS?

React JS adalah library JavaScript yang biasa digunakan saat membangun UI suatu website atau aplikasi web. Jadi, React JS bisa dianggap seperti perpustakaan yang berisi berbagai kode JavaScript yang sudah tertulis (pre-written). Anda tinggal mengambil kode yang ingin Anda gunakan. Sehingga, ini membuat proses coding menjadi lebih efisien.

Sebentar, apakah Anda belum tau apa itu JavaScript? Jika belum, JavaScript adalah bahasa pemrograman yang dapat membantu Anda membuat konten web yang dinamis, seperti form, slideshow, atau konten interaktif lainnya. 

Dengan JavaScript, Anda dapat membuat tampilan website yang lebih menarik. Nah, inilah mengapa library ini berguna untuk membangun UI, karena pengaplikasian kode JavaScript di website Anda bisa menjadi lebih mudah. 

Oh ya, library ini juga bersifat open source. Artinya, isinya akan terus berkembang karena semua orang bebas memodifikasi kode di dalamnya. Berkat kegunaannya, React JS adalah salah satu library yang sangat populer. Saat ini ada lebih dari satu juta website yang sudah menggunakannya. Bahkan website-website terkenal seperti bbc.com, paypal.com, dan yahoo.com juga menggunakannya.


Apa Kelebihan React JS?

Di atas, kita sudah membahas sebagian fungsi dari library ini, yaitu untuk mempermudah penggunaan JavaScript. Selain itu, ada dua fitur tambahan yang menjadi keunggulannya yaitu JSX dan Virtual DOM. 

Kedua fitur ini yang seringkali disebut jika React JS sedang dibandingkan dengan library JavaScript yang lain – seperti Inferno JS atau Preact. Oleh karena itu, mari kita lihat kedua fitur tersebut secara lebih detail!


JSX 

JSX adalah extension syntax JavaScript yang memungkinkan Anda untuk memodifikasi Document Object Model (DOM) dengan kode bergaya HTML. Untuk mengetahui fungsi JSX dengan lebih jelas, Anda perlu tahu tentang DOM terlebih dahulu.

DOM adalah application programming interface (API) yang berfungsi untuk mengatur struktur halaman web. Nah, untuk menambah konten dinamis ke dalam halaman web, developer mesti memodifikasi DOM.

Dengan kata lain, JSX akan mempermudah Anda untuk menambah konten dinamis. Karena extension ini dapat membantu Anda untuk memasukkan syntax bergaya HTML ke dalam DOM. Akan tetapi, JSX bukanlah HTML. Mungkin bahasa sederhananya seperti ini: JSX terlihat seperti HTML, tapi memiliki fungsi seperti JavaScript.

Selain itu, Anda juga bisa menggunakan JSX di berbagai browser. Karena JSX cocok dengan semua platform browser modern – seperti Chrome atau Firefox.


Virtual DOM

Ketika developer mengupdate DOM dengan menggunakan JSX, React JS akan membuat Virtual DOM, yaitu salinan dari DOM asli yang ingin diupdate. Nah, Virtual DOM berguna untuk melihat bagian dari DOM asli yang berubah. Contohnya, ketika pengguna website mengklik tombol like atau comment, tentu yang perlu berubah hanya bagian like dan comment saja, bukan?

Ketika menemukan bagian yang perlu diubah, React JS akan mengubah bagian itu saja. Jadi, pengguna tidak perlu reload satu halaman untuk melihat perubahannya. Hal ini dapat berpengaruh terhadap performa website. Karena setiap perubahan hanya dilakukan pada bagian yang diperlukan saja.

Tanpa Virtual DOM, website Anda akan menggunakan HTML untuk update DOM.  Sehingga, seluruh DOMnya mesti direload untuk menampilkan perubahan di satu bagian – seperti mengklik tombol like atau menambahkan komentar.


Kode HTML

Pada pembahasan Kali ini Kita akan coba Membuat Tampilan Penjuala Pre-Order pada ReactJS, juga akan memakai CSS dan JS.

Selanjutnya buat file dengan nama penjualanPreOrder.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Hello Bulma!</title>
<!-- REACT LIBRARY-->
<script src="https://unpkg.com/react@15.5.4/dist/react.js"></script>
<!-- REACT DOM LIBRARY-->
<script src="https://unpkg.com/react-dom@15.5.4/dist/react-dom.js"></script>
<!--BABEL LIBRARY-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.25.0/babel.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
<link rel="stylesheet" href="./public/style/style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta2/css/all.min.css" integrity="sha512-YWzhKL2whUzgiheMoBFwW8CKV4qpHQAEuvilg9FAn5VJUDwKZZxkJNuGM4XkWuk94WCrrwslk8yWNGmY1EduTA==" crossorigin="anonymous" referrerpolicy="no-referrer">
<script src="./public/script/script.js"></script>
</head>
<body>
<div id="app"></div>

<script type="text/babel">
class Hello extends React.Component {
render() {
return (
<div>
<nav className="navbar navigasi" role="navigation" aria-label="main navigation">
<div className="navbar-brand">
<a className="navbar-item" href="#">
<img src="./image/user.png" className="avatar" width="40" height="40" alt=""></img>
<h2 className="title is-size-3-desktop is-size-5-mobile pl-2 green">Ridho Ganteng</h2>
</a>
<a role="button" className="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div id="navbarBasicExample" className="navbar-menu">
<div className="navbar-end">
<a className="navbar-item">
Dashboard
</a>
<a className="navbar-item">
Belanja
</a>
<a className="navbar-item">
Penjualan
</a>

<a className="navbar-item">
Laporan
</a>

</div>
</div>
</nav>

<div className="columns is-mobile my-5">
<div className="column has-text-centered divi">
<a href="./index.html" className="is-size-3-desktop gray">Langsung</a>
</div>
<div className="column has-text-centered">
<a href="./penjualanPreOrder.html" className="is-size-3-desktop active">Pre Order</a>
</div>
</div>

<div className="block my-5 tp-border">
<div className="list-transaksi is-flex is-align-items-center is-justify-content-space-between px-5 mt-3 pb-3 btm-border">
<h3 className="is-size-5-mobile is-size-3-desktop" >Transaksi</h3>
<div className="aksi buttons are-small">
<button className="button is-rounded bg-green white">Ubah</button>
<button className="button is-rounded bg-green white">Detail</button>
</div>
</div>
<div className="list-transaksi is-flex is-align-items-center is-justify-content-space-between px-5 mt-3 pb-3 btm-border">
<h3 className="is-size-5-mobile is-size-3-desktop" >Transaksi</h3>
<div className="aksi buttons are-small">
<button className="button is-rounded bg-green white">Ubah</button>
<button className="button is-rounded bg-green white">Detail</button>
</div>
</div>
<div className="list-transaksi is-flex is-align-items-center is-justify-content-space-between px-5 mt-3 pb-3 btm-border">
<h3 className="is-size-5-mobile is-size-3-desktop" >Transaksi</h3>
<div className="aksi buttons are-small">
<button className="button is-rounded bg-green white">Ubah</button>
<button className="button is-rounded bg-green white">Detail</button>
</div>
</div>
</div>
</div>
);
}
}

ReactDOM.render(<Hello/>, document.getElementById("app"));
</script>
</body>
</html>

Kode CSS

Lalu buat file dengan nama style.css

.bg-green{
background-color : green;
}
.white{
color : white;
}
.gray{
color : gray;
}
.green {
color : green;
}
.navbar-item {
color : green;
font-size: medium;
}

.navbar-end .navbar-item:hover {
color: white;
background-color : green;
border-radius: 50px;
}

.navigasi {
padding:10px 20px;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}

.bg-green {
background-color: green;
}

.navbar-brand .navbar-item img {
max-height: 50px;
background-color: green;
border-radius: 50%;
}

.divi {
border-right: 2px solid gray;
}

.active {
color: green;
}

div.aksi .button:hover {
color: white;
}

.btm-border {
border-bottom: 2px solid green;
}

.tp-border {
border-top: 2px solid green;
}

.masukan {
width: 80
}

form.form{
max-width: 1000px;
}

.hscroll {
overflow-x: auto;
padding : 10px;
margin: 10px;
}

Kode JS

Kemudian buat file dengan nama script.js

document.addEventListener('DOMContentLoaded', () => {

// Get all "navbar-burger" elements
const $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0);
// Check if there are any navbar burgers
if ($navbarBurgers.length > 0) {
// Add a click event on each of them
$navbarBurgers.forEach( el => {
el.addEventListener('click', () => {
// Get the target from the "data-target" attribute
const target = el.dataset.target;
const $target = document.getElementById(target);
// Toggle the "is-active" class on both the "navbar-burger" and the "navbar-menu"
el.classList.toggle('is-active');
$target.classList.toggle('is-active');
});
});
}
});

Output



Komentar

Postingan populer dari blog ini

Membuat Halaman Profil Konsumen Dengan NextJS & Bulma

Apa itu Next.js?  Next.js merupakan sebuah React framework yang dibentuk buat mengatasi kasus client-side rendering yang dimiliki React. Sebuah halaman website yang dibentuk memakai React ‘terasa ringan’ lantaran tampilan website sangat interaktif.  Selain itu, ketika data berubah, React menggunakan efisien akan mengupdate bagian menurut halaman website yang memang perlu diupdate tanpa perlu reload satu halaman penuh.  Untuk menerima itu seluruh, client wajib load seluruh file JavaScript sebelum konten halaman ditampilkan. apabila file JS relatif akbar maka ketika yang diperlukan buat load pertama kali pula sebagai lebih lama.  Masalah lain menurut client-side rendering merupakan SEO, terdapat kemungkinan web crawler berusaha mengindex halaman yang belum terselesaikan dirender sepenuhnya (lantaran ketika load yang lama). Dan menduga web tadi blank.  Kedua kasus diatas bisa diselesaikan menggunakan teknik pre-rendering. Yaitu halaman HTML dan file JavaScript pada...

Membuat Database Menggunakan Aplikasi Excel ~ Part 4

Pengertian Normalisasi Database Normalisasi database adalah proses pengelompokan atribut data yang membentuk entitas sederhana, nonredundant, fleksibel, dan mudah beradaptasi. Sehingga dapat dipastikan bahwa database yang dibuat berkualitas baik. Tujuan Normalisasi Database Tujuan utama dari normalisasi database adalah: Menghilangkan dan mengurangi redudansi data. Memastikan dependensi data (data berada pada tabel yang tepat). Jika sebuah database belum dinormalisasi, kemungkinan terburuk yang akan merugikan sistem adalah: INSERT Anomali Situasi dimana tidak memungkinkan untuk memasukkan beberapa jenis data secara langsung di database. UPDATE Anomali Situasi dimana nilai yang diubah mengakibatkan ketidakkonsistenan database, artinya data yang diubah tidak sesuai dengan yang diinginkan. DELETE Anomali Penghapusan data tidak sesuai yang diharapkan, artinya data yang seharusnya tidak terhapus malah terhapus. Pada proses normalisasi terhadap tabel pada database dapat dilakukan dengan tiga ...

Design Sprint Alur Fitur Dari Wlijo

Design Sprint Fitur Wlijo      Wlijo adalah platform yang menghubungankan antara petani, pedagang sayur dan konsumen melalui aplikasi belanja sayur online. Saat ini wlijo masih dalam tahap pengembangan dan perbaikan. Untuk membantu proses pengembangan wlijo agar bisa selesai sesuai waktu yang ditargetkan diperlukannya sebuah metode efektif yakni metode design sprint. Apa Itu Metode Desain Sprint ?     Design sprint merupakan sebuah metode 5 langkah kerja untuk membantu perusahaan agar dapat membuat suatu produk berdasarkan design thinking dengan waktu lima hari. Design thinking sendiri merupakan proses yang mencakup proses strategis, kognitif, dan praktis. Design sprint sendiri dibuat pada tahun 2010 oleh seseorang yang berasal dari Google Venture bernama Jake Knapp. Sampai saat ini, sudah banyak perusahaan yang memakai design tersebut sampai keseluruh dunia.      Konsep kerjanya yaitu menggunakan waktu selama lima hari untuk membangun suatu ...