Pain Point
명확한 파일 분리 없이 index.js 에서만 개발 하다보니 4개의 기능 뿐이지만 1개의 파일 길이가 1,000 라인이 됨
유지보수 차원에서 깔끔한 구조를 가져갈 필요성을 느낌
NodeJS 의 Router 기능을 이용해 기능별로 파일을 분리하여 관리할 수 있습니다.
youtube.js (분리된 자바스크립트 파일)
// 1. express와 router 모듈을 추가합니다
var express = require('express');
var router = express.Router();
// 2. index.js 에 있던 함수를 그대로 옮겨옵니다
app.get('/v1/trends/google', async (req, res) => {
request.get('https://trends.google.co.kr/trends/trendingsearches/daily/rss?geo=KR',
function (error, response, body) {
if (response.statusCode == 200)
{
let regex = /<title>(.*?)<\/title>/g;
let raw = body.match(regex)
raw.shift()
let keywords = raw.map((v) => { return v.replace("<title>", "").replace("</title>", "") })
res.status(200).json(keywords);
}
});
return;
});
// 3. module export 를 통해 index.js 에서 현재 js를 이용할 수 있도록 합니다
module.exports = router;
JavaScript
복사
index.js (시작점이 되는 자바스크립트 파일)
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const express = require('express');
const app = express();
admin.initializeApp()
const firestore = admin.firestore();
var request = require('request');
var route = express.Router();
var youtube = require('./router/youtube.js'); // 👍
JavaScript
복사
require 를 통해 분리한 파일을 가져옵니다.
디렉토리 구조
어떻게 Router 파일들을 관리하는 것이 Best Practice 인 줄은 모르겠으나,
index.js 위치에 router directory를 만들고 router directory 하위에 각 분리한 js 파일들을 두는 것이 일반적인 듯 하다. (대부분의 블로그 글)