dhtmlxScheduler와 Node.js
이 튜토리얼에서는 Node.js를 사용하여 서버 측에 REST API를 기반으로 Scheduler를 구축하는 방법을 안내합니다. 만약 다른 기술을 사용하고 있다면, 아래에 나열된 통합 옵션을 참고하시기 바랍니다:
- "dhtmlxScheduler와 ASP.NET Core"
- "dhtmlxScheduler와 ASP.NET MVC"
- "dhtmlxScheduler와 PHP"
- "dhtmlxScheduler와 PHP:Slim"
- "dhtmlxScheduler와 PHP:Laravel 연동하기"
- "dhtmlxScheduler와 SalesForce LWC 통합하기"
- "dhtmlxScheduler와 Ruby on Rails 연동하기"
- "dhtmlxScheduler와 dhtmlxConnector 연동하기"
Node.js Scheduler 설정은 서버와의 통신을 위해 REST API에 의존합니다. 다행히 Node.js에는 이미 준비된 여러 솔루션이 있으므로 모든 것을 처음부터 만들 필요는 없습니다.
이 튜토리얼에서는 Express 프레임워크와 MySQL을 데이터 저장소로 사용합니다.
전체 소스 코드는 GitHub에서 확인할 수 있습니다.
1단계. 프로젝트 초기화
프로젝트 생성
yarn 또는 npm을 사용하여 새 애플리케이션을 생성하세요:
$ mkdir scheduler-howto-nodejs
$ cd ./scheduler-howto-nodejs
$ yarn init // 또는 npm init
초기화 과정에서 몇 가지 간단한 질문에 답하게 됩니다:
$ question name (scheduler-howto-nodejs):
$ question version (1.0.0):
$ question description: My scheduler backend
$ question entry point (index.js): server.js
$ question repository url:
$ question author: Me
$ question license (MIT): MIT
$ question private:
$ success Saved package.json
이 과정이 끝나면 package.json 파일이 아래와 같이 생성됩니다:
{
"name": "scheduler-backend",
"version": "1.0.0",
"main": "server.js",
"author": "Me",
"license": "MIT",
}
의존성 추가 및 모듈 설치
앞서 언급한 대로, 데모에서는 Express와 MySQL을 사용합니다.
MySQL 서버가 준비되어 있거나, Free MySQL Hosting과 같은 서비스를 사용하는 것도 고려해보세요.
아래 명령어로 express, mysql, body-parser, date-format-lite 모듈을 설치하세요:
$ yarn add express mysql body-parser date-format-lite
또는
$ npm install express mysql body-parser date-format-lite
server.js를 엔트리 포인트로 지정했으므로, 다음과 같은 내용을 가진 파일을 생성하세요:
const express = require("express"); // Express 사용
const bodyParser = require("body-parser"); // POST 요청 파싱
const app = express(); // 애플리케이션 생성
const port = 3000; // 리스닝 포트
// POST 요청 파싱에 필요
// 아래 라인은 application/x-www-form-urlencoded 파싱에 사용됨
app.use(bodyParser.urlencoded({extended:true}));
// 서버 시작
app.listen(port, () => {
console.log("Server is running on port " + port + "...");
});
다음으로, package.json에 "scripts" 섹션을 추가하세요:
"scripts": {
"start": "node server.js"
}
이후 package.json은 다음과 비슷하게 보일 것입니다:
{
"name": "scheduler-howto-node",
"version": "1.0.0",
"main": "server.js",
"license": "MIT",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"body-parser": "^1.20.0",
"date-format-lite": "^17.7.0",
"express": "^4.18.1",
"mysql": "^2.18.1",
}
}
이제 서버를 아래 명령어로 실행할 수 있습니다:
$ yarn start
또는
$ npm start
2단계. 페이지에 Scheduler 추가
프론트엔드 HTML, CSS, JS 파일을 저장할 디렉터리를 생성하세요:
$ mkdir ./public
public 폴더 내에 index.html 파일을 다음과 같이 생성하세요:
<!doctype html>
<html>
<head>
<title>DHTMLX Sсheduler example</title>
<meta charSet="utf-8"/>
{/* scheduler */}
<script src="https://cdn.dhtmlx.com/scheduler/edge/dhtmlxscheduler.js"
charSet="utf-8"></script>
<link href="https://cdn.dhtmlx.com/scheduler/edge/dhtmlxscheduler.css"
rel="stylesheet" type="text/css" charSet="utf-8">
<style>
html, body{
margin:0px;
padding:0px;
height:100%;
overflow:hidden;
}
</style>
</head>
<body>
<div id="scheduler_here" className="dhx_cal_container">
<div className="dhx_cal_navline">
<div className="dhx_cal_prev_button"> </div>
<div className="dhx_cal_next_button"> </div>
<div className="dhx_cal_today_button"></div>
<div className="dhx_cal_date"></div>
<div className="dhx_cal_tab" name="day_tab"></div>
<div className="dhx_cal_tab" name="week_tab"></div>
<div className="dhx_cal_tab" name="month_tab"></div>
</div>
<div className="dhx_cal_header"></div>
<div className="dhx_cal_data"></div>
</div>
<script>
scheduler.config.load_date="%Y-%m-%d %H:%i";
scheduler.init("scheduler_here", new Date(2022, 0, 20), "week");
scheduler.setLoadMode("day");
// load data from backend
scheduler.load("/events");
// connect backend to scheduler
const dp = scheduler.createDataProcessor({
url: "/events",
mode: "REST"
});
</script>
</body>
</html>
이 코드는 기본 HTML 레이아웃을 설정하고, CDN에서 dhtmlxScheduler를 포함하며, init 메서드를 사용해 스케줄러를 초기화합니다. 문서 body와 스케줄러 컨테이너 모두 100% 높이로 설정하여 스케줄러가 컨테이너에 맞게 표시됩니다.
라우트 설정
새 페이지에 접근할 수 있도록, server.js에서 "app.listen(...);" 라인 이전에 아래 코드를 추가하세요:
// "./public" 디렉터리에서 정적 페이지 반환
app.use(express.static(__dirname + "/public"));
앱을 재시작하여 변경 사항을 적용하세요.
이제 브라우저에서 http://localhost:3000/ 을 열면 index.html 페이지가 표시됩니다.
