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 CheckOut 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 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...

Fitur - fitur Yang Diinginkan Untuk Platform Wlijo

Sebelum membahas tentang fitur yang inginkan untuk platform Wlijo, anda perlu tahu apa sih Wlijo itu?           Wlijo merupakan layanan belanja sayur yang mudah dengan kualitas sayur fresh, higenis, dan tahan lama. Serta menjamin kesehatan dan kesejahtraan konsumen.Untuk mendukung hal tersebut maka kami akan menjalin kerjasama ke petani, pedagang sayur keliling dan tetap, agar dapat berkembang  secara luas, karena itu kami memanfaatkan system yang  sudah berjalan untuk menjangkau konsumen dengan inovasi digital, sehingga bisa berjalan lebih efektif serta mampu membuat lapangan pekerjaan baru bagi masyarakat banyuwangi. Fitur - fitur yang diinginkan Fitur yang diinginkan kedepannya untuk platform wlijo terbagi menjadi 3 yaitu : Fitur untuk konsumen Fitur pembukuan keuangan bagi wlijo F itur stok produk F itur pembayaran COD F itur informasi produk, manfaat dan cara penyimpanan F itur grade produk Tampilan Fitur Bagi Konsumen Fitur wishlist  F...