본문 바로가기

XE에서 라이믹스까지: 템플릿 언어의 진화와 디자이너의 자리

이온디 2025.11.27 22:11 조회 3241 댓글 1
목록

XE에서 라이믹스까지: 템플릿 언어의 진화와 디자이너의 자리

서문

웹 개발의 역사에서 "디자이너도 쉽게 수정할 수 있는 템플릿"은 오랫동안 이상적인 목표였다. 제로보드4의 스킨 시스템부터 XpressEngine(XE), 그리고 라이믹스에 이르기까지, 한국의 CMS 생태계는 디자이너 친화적인 템플릿 문법을 지향해왔다. 그러나 라이믹스 2.1에서 도입된 Template v2(Blade 문법)는 이 흐름에 중요한 변곡점을 만들었다.


1. XE 시대: HTML을 아는 디자이너를 위한 템플릿

XE의 템플릿 문법은 철저히 HTML 친화적이었다. PHP를 몰라도, HTML 태그의 속성처럼 조건문과 반복문을 작성할 수 있었다.

<!-- XE/라이믹스 Template v1 -->
<div cond="$is_logged">로그인된 사용자에게만 표시</div>
<ul>
    <li loop="$document_list => $document">{$document->getTitle()}</li>
</ul>
<include target="header.html" />

이 문법의 아름다움은 HTML의 구조를 해치지 않는다는 점이었다. 디자이너는 포토샵에서 시안을 만들고, HTML/CSS로 퍼블리싱한 후, condloop 속성만 추가하면 동적인 스킨이 완성되었다. PHP의 중괄호도, 세미콜론도, 화살표 연산자의 의미도 깊이 이해할 필요가 없었다.

이것이 XE가 한국 웹 생태계에서 성공한 이유 중 하나였다. 수많은 디자이너들이 스킨을 만들고 판매했고, 웹에이전시들은 디자이너에게 스킨 커스터마이징을 맡길 수 있었다.


2. Blade의 도입: 개발자의 언어가 된 템플릿

라이믹스 2.1.8에서 도입된 Template v2는 Laravel의 Blade 문법을 차용했다.

<!-- 라이믹스 Template v2 (Blade) -->
@if($is_logged)
    <div>로그인된 사용자에게만 표시</div>
@endif

@foreach($document_list as $document)
    <li>{{ $document->getTitle() }}</li>
@endforeach

@include('header')

언뜻 보면 더 깔끔해 보인다. 그러나 이 문법은 본질적으로 PHP 코드다. @if, @foreach, @php는 PHP의 제어 구조를 그대로 노출한다. 디자이너가 이 코드를 수정하려면 이제 다음을 이해해야 한다:

  • PHP의 조건문과 반복문 구조
  • 변수의 스코프와 타입
  • 객체와 배열의 차이
  • -> 연산자의 의미

HTML 태그의 속성이었던 것이 이제 프로그래밍 언어의 문법이 되었다.


3. 중괄호 문제: 해결된 것과 해결할 수 있었던 것

Template v2의 가장 큰 기술적 장점은 중괄호 중첩 문제의 해결이다.

Template v1에서는 PHP 코드 블록을 {@ ... }로 감쌌다. 문제는 PHP 코드 내부에서 중괄호를 사용할 때 발생했다.

<!-- v1에서의 문제 -->
{@
    // 이 코드는 파싱 오류를 일으킨다
    foreach($items as $item) {
        if($item->visible) {
            echo $item->name;
        }
    }
}

템플릿 엔진이 }를 만나면 코드 블록의 끝으로 인식하기 때문에, 중첩된 중괄호는 파싱 오류를 유발했다. 개발자들은 이를 피하기 위해 대체 문법을 사용하거나, 로직을 PHP 파일로 분리해야 했다.

Template v2의 @php ... @endphp는 이 문제를 우아하게 해결한다:

<!-- v2에서의 해결 -->
@php
    foreach($items as $item) {
        if($item->visible) {
            echo $item->name;
        }
    }
@endphp

그러나 이 문제는 정말 v1에서 해결 불가능했을까?

사실 중괄호 매칭은 컴파일러 이론의 기초적인 문제다. 홀수/짝수 카운팅으로 중첩을 추적하면 해결할 수 있다. 많은 템플릿 엔진들이 이 방식으로 중첩 구조를 처리한다. XE/라이믹스 코어 개발팀이 이를 구현하지 않은 것은 기술적 한계라기보다는 우선순위의 문제였을 것이다. 혹은, Blade라는 검증된 문법을 도입하는 것이 자체 파서를 개선하는 것보다 효율적이라는 판단이었을 수도 있다.

그럼에도 약간의 아쉬움은 남는다. 디자이너 친화적인 문법을 유지하면서도 중괄호 문제를 해결할 수 있는 길이 있었기 때문이다.


4. 시대의 반영: 디자이너는 더 이상 HTML을 만지지 않는다?

Template v2의 도입을 단순히 "개발자 중심으로의 퇴보"로 볼 수는 없다. 이는 웹 개발 생태계 전체의 변화를 반영한다.

변화한 현실들

  1. 프론트엔드의 전문화: 2010년대 이후 프론트엔드 개발은 독립적인 전문 영역이 되었다. React, Vue, Angular 같은 프레임워크는 "퍼블리셔"와 "프론트엔드 개발자"를 구분 짓게 만들었다.

  2. 디자인 도구의 진화: Figma, Framer 같은 도구들은 디자이너가 코드 없이 인터랙티브한 프로토타입을 만들 수 있게 했다. 디자이너가 HTML을 직접 작성해야 할 필요성이 줄어들었다.

  3. 노코드/로우코드의 부상: 아임웹, 카페24, Wix 같은 플랫폼들은 디자이너에게 "코드 없이 웹사이트 만들기"라는 새로운 선택지를 제공했다.

  4. AI 코딩 도구의 등장: GitHub Copilot, ChatGPT, Claude 같은 AI 도구들은 코드 작성의 진입 장벽을 낮추고 있다. 디자이너도 AI의 도움으로 복잡한 템플릿을 다룰 수 있게 되었다.

현실의 인정

어쩌면 Template v2는 이미 변해버린 현실을 인정한 것일 수 있다:

"디자이너가 HTML 템플릿을 직접 다루던 시대는 지났다. 이제 템플릿은 개발자의 영역이다. 그렇다면 개발자에게 더 강력한 도구를 주자."

이 관점에서 Blade 문법의 도입은 현실적인 선택이다. 전 세계 수백만 개발자가 사용하는 검증된 문법을 채택함으로써:

  • 풍부한 학습 자료와 커뮤니티 지원을 활용할 수 있다
  • Laravel 생태계의 Best Practice를 적용할 수 있다
  • 새로운 개발자의 진입 장벽을 낮출 수 있다 (Laravel 경험자에게)

5. 혼재하는 감정: 아쉬움과 반가움 사이

아쉬운 것들

  • 진입 장벽의 상승: HTML만 알던 디자이너가 스킨을 수정하기 어려워졌다
  • XE 생태계의 단절: 기존 v1 스킨들과의 호환성 문제, 마이그레이션 비용
  • 한국적 맥락의 상실: XE의 템플릿 문법은 한국 웹 생태계의 특성을 반영한 "토종 솔루션"이었다
  • 중괄호 문제의 아쉬운 해결: 기존 문법을 유지하면서도 해결할 수 있었던 문제

반가운 것들

  • 강력해진 표현력: 복잡한 로직을 템플릿에서 직접 처리할 수 있다
  • 글로벌 스탠다드: Blade를 아는 개발자는 바로 라이믹스 스킨을 만들 수 있다
  • 유지보수성 향상: 조건문과 반복문이 명확하게 드러나 코드 가독성이 좋아졌다
  • 커뮤니티 확장 가능성: Laravel 개발자들이 라이믹스 생태계에 진입할 수 있는 가능성

6. 결론: 변화를 받아들이며

기술의 변화는 항상 무언가를 얻고 무언가를 잃는 과정이다. Template v2의 도입으로 라이믹스는 디자이너의 CMS에서 개발자의 CMS로 한 걸음 더 이동했다.

이것이 진보인지 퇴보인지는 관점에 따라 다르다. 확실한 것은:

  1. 과거로 돌아갈 수 없다: 웹 개발의 복잡성은 계속 증가하고 있고, 단순한 HTML 템플릿으로 현대적인 웹사이트를 만들기는 어렵다.

  2. 새로운 균형점이 필요하다: AI 도구의 발전은 "코드를 모르는 사람도 코드를 다룰 수 있는" 새로운 가능성을 열고 있다. 어쩌면 미래의 디자이너는 AI와 함께 Blade 템플릿을 수정하게 될지도 모른다.

  3. 다양성의 가치: Template v1과 v2가 공존하는 현재의 라이믹스는, 디자이너와 개발자 모두에게 선택지를 제공한다. 이 다양성은 유지될 가치가 있다.

XE의 cond 속성이 처음 등장했을 때, 그것은 혁명이었다. PHP를 몰라도 동적인 웹페이지를 만들 수 있다는 것은 수많은 디자이너들에게 새로운 가능성을 열어주었다. 그 혁명의 정신—더 많은 사람들이 웹을 만들 수 있게 하자—은 형태를 바꾸어 계속되어야 한다.

Template v2가 그 정신을 어떻게 이어갈지, 혹은 이어가지 못할지는 앞으로 라이믹스 커뮤니티가 함께 만들어갈 이야기다.


부록: Template v1과 v2 비교표

구분 Template v1 Template v2 (Blade)
조건문 <div cond="$condition"> @if($condition) ... @endif
반복문 <li loop="$list => $item"> @foreach($list as $item) ... @endforeach
변수 출력 {$variable} {{ $variable }}
Raw 출력 {$variable|noescape} {!! $variable !!}
PHP 코드 {@ ... } @php ... @endphp
파일 포함 <include target="file.html" /> @include('file')
중괄호 중첩 ❌ 불가능 ✅ 가능
디자이너 친화성 ⭐⭐⭐⭐⭐ ⭐⭐⭐
개발자 친화성 ⭐⭐⭐ ⭐⭐⭐⭐⭐
글로벌 표준 ❌ XE 고유 ✅ Laravel Blade 기반

댓글 1

이온디 2026.01.23 17:04
1

댓글을 작성하려면 로그인이 필요합니다.