使用 Node.js 製作日曆應用程式:完整教學

更新於 發佈於 閱讀時間約 1 分鐘

在這篇教學文章中,我們將展示如何使用 Node.js 來製作一個簡單的日曆應用程式。這個應用程式將允許用戶查看日曆、添加事件、刪除事件和更新事件。通過這個過程,我們將使用 Express 來建立伺服器,並使用 FullCalendar 來呈現前端的日曆。


1. 初始化專案

首先,我們需要在本地電腦上初始化一個 Node.js 專案。

mkdir calendar-app
cd calendar-app
npm init -y

2. 安裝所需的函式庫

接著,我們需要安裝一些必要的函式庫來幫助我們構建日曆應用程式。

npm install express dayjs ejs body-parser

這些函式庫的用途如下:

  • Express:一個輕量級的 Node.js 網頁應用框架,用來建立伺服器。
  • dayjs:一個小巧的 JavaScript 函式庫,用於處理日期和時間(我們可以用來替代 moment)。
  • ejs:一個簡單的模板引擎,允許我們在伺服器端生成 HTML。
  • body-parser:用於解析 HTTP 請求的 body。

3. 設定伺服器

現在,我們來建立伺服器的基本設定。在專案目錄中建立一個名為 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}`);
});

4. 建立前端日曆頁面

接下來,我們需要建立前端頁面來顯示日曆。首先,建立一個目錄名為 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 CSSJS -->
<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>

5. 設置靜態文件

確保你的 public 目錄存在,並且可以在其中放置任何必要的靜態文件(如樣式表或客製化的 JavaScript)。

6. 啟動伺服器並測試

現在,你可以啟動伺服器並查看日曆應用程式了。返回終端並執行以下命令:

node app.js

在瀏覽器中打開 http://localhost:3000,你應該可以看到一個簡單的日曆應用程式,其中顯示了預設的事件。

7. 完善應用程式功能

到目前為止,你已經成功建立了一個基本的日曆應用程式,並能夠顯示和管理事件。你可以根據需求進一步擴展應用程式的功能,例如:

  • 增加事件詳細信息:為每個事件添加更多的屬性,例如地點、描述等。
  • 用戶認證和授權:確保只有授權用戶可以添加、編輯或刪除事件。
  • 通知和提醒功能:允許用戶為特定事件設置提醒。
  • 與資料庫整合:將事件存儲到資料庫中,例如 MongoDB 或 MySQL。

結論

通過本篇教學文章,我們學習了如何使用 Node.js 建立一個基本的日曆應用程式。雖然這個範例很簡單,但它為你提供了一個良好的起點,幫助你理解如何在 Node.js 中處理伺服器端邏

留言
avatar-img
留言分享你的想法!
avatar-img
程式輕鬆玩
71會員
154內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
程式輕鬆玩的其他內容
2025/04/20
本週科技圈掀起多項重磅消息:OpenAI於4月14日釋出GPT‑4.1系列模型,進一步強化編碼與長文理解能力 Reuters;Chipolo推出POP藍牙追蹤器,同時支援Apple與Google尋找網路 The Verge;南韓新創RLWRLD完成1,480萬美元募資,將打造專屬機器人基礎模型
Thumbnail
2025/04/20
本週科技圈掀起多項重磅消息:OpenAI於4月14日釋出GPT‑4.1系列模型,進一步強化編碼與長文理解能力 Reuters;Chipolo推出POP藍牙追蹤器,同時支援Apple與Google尋找網路 The Verge;南韓新創RLWRLD完成1,480萬美元募資,將打造專屬機器人基礎模型
Thumbnail
2025/04/20
本週遊戲動態涵蓋經典 25 週年重返 PC 平台、回合制策略新作重燃星戰熱潮、Remedy 荒誕合擊新作搶先曝光、Game Pass 下架名單震撼登場,以及 Steam 獨立新秀推薦不容錯過 PC GamerWindows Central。
Thumbnail
2025/04/20
本週遊戲動態涵蓋經典 25 週年重返 PC 平台、回合制策略新作重燃星戰熱潮、Remedy 荒誕合擊新作搶先曝光、Game Pass 下架名單震撼登場,以及 Steam 獨立新秀推薦不容錯過 PC GamerWindows Central。
Thumbnail
2025/04/08
近來因為川普政府啟動全新一輪對等關稅政策,全球貿易風暴席捲而來,而台灣面臨的衝擊更是不容小覷。美方以台灣過去對美出口關稅達64%為依據,採取「對等關稅」原則回敬徵收32%關稅,這一舉措不僅使得國際市場恐慌連連,台股也出現劇烈下跌,吸引了各界關注。
Thumbnail
2025/04/08
近來因為川普政府啟動全新一輪對等關稅政策,全球貿易風暴席捲而來,而台灣面臨的衝擊更是不容小覷。美方以台灣過去對美出口關稅達64%為依據,採取「對等關稅」原則回敬徵收32%關稅,這一舉措不僅使得國際市場恐慌連連,台股也出現劇烈下跌,吸引了各界關注。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
Thumbnail
在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
本章節將引導你如何建立一個TypeScript開發環境,這包括安裝Node.js、npm和TypeScript,建立一個TypeScript項目,設置編輯器,以及編寫和編譯TypeScript代碼。在完成這些步驟之後,你將能夠編寫、編譯和運行TypeScript代碼。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
本章目的是為讀者提供有關如何設置JavaScript開發環境的知識,包括在瀏覽器、Node.js和各種編輯器和IDE中編寫和運行JavaScript的信息。此外,本章還介紹了如何架設本地開發伺服器以模擬實際的網頁環境。這些知識對於希望開發前端應用或後端服務的JavaScript開發者來說都是必要的。
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
npm(全名 Node Package Manager,node套件管理器)
Thumbnail
npm(全名 Node Package Manager,node套件管理器)
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News