在這篇教學文章中,我們將展示如何使用 Node.js 來製作一個簡單的日曆應用程式。這個應用程式將允許用戶查看日曆、添加事件、刪除事件和更新事件。通過這個過程,我們將使用 Express 來建立伺服器,並使用 FullCalendar 來呈現前端的日曆。
mkdir calendar-app
cd calendar-app
npm init -y
接著,我們需要安裝一些必要的函式庫來幫助我們構建日曆應用程式。
npm install express dayjs ejs body-parser
這些函式庫的用途如下:
現在,我們來建立伺服器的基本設定。在專案目錄中建立一個名為 app.js
的檔案,然後在其中加入以下代碼:
const express = require('express');
const bodyParser = require('body-parser');
const dayjs = require('dayjs');
const app = express();
const PORT = 3000;
// 設定模板引擎
app.set('view engine', 'ejs');
// 解析 application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));
// 解析 application/json
app.use(bodyParser.json());
// 設定靜態檔案目錄
app.use(express.static('public'));
// 模擬事件資料(在正式應用中可以使用資料庫)
let events = [
{ id: 1, title: '會議', start: '2024-08-25', end: '2024-08-25' },
{ id: 2, title: '項目截止日', start: '2024-08-30', end: '2024-08-30' }
];
// 設定首頁路由
app.get('/', (req, res) => {
const today = dayjs();
res.render('index', { today });
});
// 獲取所有事件
app.get('/events', (req, res) => {
res.json(events);
});
// 新增事件
app.post('/events', (req, res) => {
const { title, start, end } = req.body;
const newEvent = { id: events.length + 1, title, start, end };
events.push(newEvent);
res.status(200).json({ message: '事件已新增', event: newEvent });
});
// 刪除事件
app.delete('/events/:id', (req, res) => {
const eventId = parseInt(req.params.id);
events = events.filter(event => event.id !== eventId);
res.status(200).json({ message: '事件已刪除' });
});
// 更新事件
app.put('/events/:id', (req, res) => {
const eventId = parseInt(req.params.id);
const { title, start, end } = req.body;
const eventIndex = events.findIndex(event => event.id === eventId);
if (eventIndex !== -1) {
events[eventIndex] = { id: eventId, title, start, end };
res.status(200).json({ message: '事件已更新', event: events[eventIndex] });
} else {
res.status(404).json({ message: '事件未找到' });
}
});
// 啟動伺服器
app.listen(PORT, () => {
console.log(`伺服器正在運行於 http://localhost:${PORT}`);
});
接下來,我們需要建立前端頁面來顯示日曆。首先,建立一個目錄名為 views
,並在其中創建一個名為 index.ejs
的檔案。
在 index.ejs
中加入以下代碼:
<!DOCTYPE html>
<html lang="zh-TW">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>日曆應用</title>
<!-- 引入 FullCalendar CSS 和 JS -->
<link href='https://cdn.jsdelivr.net/npm/fullcalendar@5.11.0/main.min.css' rel='stylesheet' />
<script src='https://cdn.jsdelivr.net/npm/fullcalendar@5.11.0/main.min.js'></script>
<script src="https://cdn.jsdelivr.net/npm/fullcalendar@5.11.0/locales/zh-tw.js'></script>
</head>
<body>
<div id='calendar'></div>
<script>
document.addEventListener('DOMContentLoaded', function () {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
initialView: 'dayGridMonth',
locale: 'zh-tw',
events: '/events', // 從後端獲取事件資料
editable: true, // 允許拖放事件
droppable: true // 允許從外部拖入
});
calendar.render();
});
</script>
</body>
</html>
確保你的 public
目錄存在,並且可以在其中放置任何必要的靜態文件(如樣式表或客製化的 JavaScript)。
現在,你可以啟動伺服器並查看日曆應用程式了。返回終端並執行以下命令:
node app.js
在瀏覽器中打開 http://localhost:3000
,你應該可以看到一個簡單的日曆應用程式,其中顯示了預設的事件。
到目前為止,你已經成功建立了一個基本的日曆應用程式,並能夠顯示和管理事件。你可以根據需求進一步擴展應用程式的功能,例如:
通過本篇教學文章,我們學習了如何使用 Node.js 建立一個基本的日曆應用程式。雖然這個範例很簡單,但它為你提供了一個良好的起點,幫助你理解如何在 Node.js 中處理伺服器端邏