- Download Node.js di https://nodejs.org/en/download/ dan install
- Cek versi node
node -vdan cek versi npmnpm -v - Download MongoDB atau RDBMS
- Buat folder dan atur nama foldernya
- Buka VSCode, pada terminal jalankan perintah
$ npm init --yes, ini adalah command yang digunakan untuk membuat package.json, yang merupakan file konfigurasi npm. Informasi pengaturan paket npm dijabarkan didalam file package.json.
- Pada terminal ketik
$ npm install expressuntuk menginstall express - Import express pada file app.js π
const express = require('express');
const app = express();- Pada terminal ketik
$ npm install ejs - Maka sekarang kita bisa menggunakan format ejs sebagai ganti dari html, misalnya dari index.html π menjadi index.ejs π
- EJS memungkinkan kita untuk memasukan kode javascript pada struktur halaman
- Simbol
<% %>digunakan untuk menetapkan variabel, contoh :<% const item = {id: 4, name: 'tomat'} %> - Simbol
<%= %>digunakan untuk mencetak variabel yang akan ditampilkan, contoh :<%= item.id %>,<%= item.name %>
- Untuk menjalankan server tambahkan kode
app.listen(3000)
const express = require('express');
const app = express();
app.listen(3000);- Lalu pada terminal ketikan perintah
$ node app.js - Agar tidak me-restart server secara manual, mari instal nodemon di terminal :
$ npm install nodemon, suatu paket npm yang dapat me-restart server secara otomatis saat ada perubahan dalam file. - Pada windows :
.\\node_modules\\.bin\\nodemon app.js - Agar lebih mudah lagi, pada package.json
"start": ".\\node_modules\\.bin\\nodemon app.js" - Jalankan command
npm run startdan periksa apakah kamu bisa memulai server menggunakan nodemon.
- Untuk menampilkan halaman maka diperlukan kode
app.get, halaman biasanya terletak di folderviewsdengan format file .ejs
const express = require('express');
const app = express();
app.get('/top', (req, res) => {
res.render('top.ejs');
});
app.listen(3000);- Style dan gambar disimpan di folder
publicπ
const express = require('express');
const app = express();
// Menspesifikasikan folder yang menyimpan file CSS dan gambar
app.use(express.static('public'));
app.get('/', (req, res) => {
res.render('hello.ejs');
});
app.get('/top', (req, res) => {
res.render('top.ejs');
});
app.listen(3000);- Untuk memuat style dan gambar untuk diaplikasikan file top.ejs π, maka diperlukan kode berikut
<link rel="stylesheet" href="/css/style.css">
<img src="/images/top.png">- Pada file .ejs, definisikan variabel yang berupa array
<% const items = [
{id: 1, name: 'kentang'},
{id: 2, name: 'wortel'},
{id: 3, name: 'bawang'}
]; %>- Pada file .ejs π, variabel items yang menggunakan
forEachmenerapkan fungsi yang ditentukan untuk setiap item dalam array tertentu secara individual
<% items.forEach((item) => { %>
<li>
<span class="id-column"><%= item.id %></span>
<span class="name-column"><%= item.name %></span>
</li>
<% }); %><a class="index-button" href="/index">Lihat daftar</a>- Untuk menghubungkan MySQL ke Node.js https://www.mysqltutorial.org/mysql-nodejs/connect/
- install paket mysql di terminal :
$ npm install mysql - Import paket mysql pada file app.js π
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'app_list'
});- Pada file app.js π, atur route agar dapat mengakses data dari database
app.get('/index', (req, res) => {
// Mengakses data dari database
connection.query(
'SELECT * FROM items',
(error, results) => {
console.log(results);
res.render('index.ejs');
}
});app.get('/index', (req, res) => {
connection.query(
'SELECT * FROM items',
(error, results) => {
// Teruskan object sebagai argument ke-2 res.render
res.render('index.ejs', {items: results});
}
);
});app.use(express.urlencoded({extended: false}));res.redirect('/index')<%- include('header'); %>req.session.destroy((error) => {
res.redirect('/list');
});- app.js π
app.use((req, res, next) => {
if (req.session.userId === undefined) {
res.locals.username = 'Tamu';
res.locals.isLoggedIn = false;
} else {
res.locals.username = req.session.username;
res.locals.isLoggedIn = true;
}
next();
});- header.ejs π
<% if(locals.isLoggedIn){ %>
<li><a href="/logout">Logout</a></li>
<% } else { %>
<li><a href="/login">Login</a></li>
<% } %>list.ejs
<ul class="list">
<% articles.forEach((article) => { %>
<li>
<% if(article.category === 'limited'){ %>
<i>MEMBER ONLY</i>
<% } %>
<h2><%= article.title %></h2>
<p><%= article.summary %></p>
<a href="/article/<%= article.id %>">Baca selengkapnya</a>
</li>
<% }) %>
</ul>article.ejs
<div class="article">
<% if(article.category === 'all'){ %>
<h1><%= article.title %></h1>
<p><%= article.content %></p>
<% } %>
<% if(article.category === 'limited'){ %>
<i>MEMBER ONLY</i>
<h1><%= article.title %></h1>
<p><%= article.content %></p>
<% } %>
</div>