UX Engineer 이명종

Vite + handlebars.js로 마크업 작업환경 및 프로세스 개선하기

Vite + handlebars.js로 마크업 작업환경 및 프로세스 개선하기


목차

개선 배경

기존 프로세스의 문제점

작업 착수 → design repo 선 작업 → 1차 작업자 확인
→ 서비스 repo에 반영 → dev 배포 → 2차 기획자 검수
→ Real 배포 → 디자인 검수

개선 방향

1) Vite

번들링(Bundling): 여러 파일, 주로 JS·CSS 파일을 하나로 결합하는 작업

ESM(EcmaScript Modules): ES6에서 도입된, import/export로 모듈을 동적 로드하는 모듈 시스템

2) handlebars.js

3) SASS(SCSS)

CSS Preprocessor: 중첩 선택자, 조건문·반복문, 다양한 단위 연산 등 표준 CSS보다 많은 기능을 제공해 작성·유지보수 시간을 줄여주는 도구

페이지 단위 → 컴포넌트 단위 구조 전환

기존 구조 (HTML + CSS, 페이지 단위)

개선 구조 (handlebars.js + SCSS, 컴포넌트 단위)

5) Build (Rollup.js)

// vite.config.js (핵심 부분 발췌)
export default {
  build: {
    rollupOptions: {
      input: getHtmlFilesEntries(),
      output: {
        assetFileNames: (assetInfo) => {
          const extType = assetInfo.name.split('.')[1];
          if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) {
            return `assets/[name][extname]`;
          } else if (/woff|woff2|ttf|eot/.test(extType)) {
            return `assets/[name][extname]`;
          }
          // 페이지 그룹별 CSS 파일 매핑
          const cssFiles = {
            default: 'assets/main[extname]',
          };
          return cssFiles[assetInfo.name.split('.')[0]] || cssFiles.default;
        },
        chunkFileNames: `assets/main.js`,
      },
    },
    outDir: '../dist',
  },
};

6) Cloudflare Pages를 활용한 검수 프로세스

장점

보안 측면

검수 프로세스 예시

  1. 작업 완료 후 마크업 산출물 빌드
  2. 빌드된 산출물(dist) 확인
  3. wrangler pages deploy ./dist --project-name=<프로젝트명> 명령어로 배포
  4. 발급된 Preview URL을 담당자에게 전달해 화면 확인

성능 비교

구분 기존 방식 개선 후 CSS 최적화 후
DomContentLoaded 약 1.06초 약 388ms (약 63% 절감) 약 388ms
Load 약 1.96초 약 937ms (약 52% 절감) 약 917ms
CSS 리소스 용량 1.5MB (8벌 중복 호출) 약 0.2MB 절감 약 1.1MB(81%) 절감
JS 구조 비즈니스 로직 + UI 스크립트 혼재 로직/UI 스크립트 완전 분리, UI 스크립트 별도 압축·난독화 동일

확인 필요사항

요약


Share this: