XpressEngine

Treeview (토론 | 기여)님의 2018년 9월 3일 (월) 19:52 판

개요

XpressEngine은 제로보드4의 개발자가 제작하고, 현재 네이버(산하의 D2라는 팀)에서 관리하는 CMS이다. eXpress(표현하다) + press(발행하다) + Engine(기관, 장치)의 의미를 가지고 있으며, 보통 XE로 줄여서 부른다. 이 때문에 기존 명칭인 제로보드XE와 혼용되는 경우가 많은데, 1.4 이전의 버전을 제로보드XE, 이후의 버전을 XE(XpressEngine)으로 부르는 것이 암묵적인 룰으로 통한다.

MVC 패턴으로 디자인 되어 있으며, 사용자에게는 좀 더 편리한 관리를, 개발자에게는 좀 더 간편한 코딩을 돕는 트리거 시스템이 있다. 트리거를 활용한 공식 기능중 하나인 애드온 시스템은 간단한 자료를 제작하기에는 효율적이나, DB 테이블을 할당해야 하는 기능이나 좀 더 복잡한 기능이 요구될 경우 매우 비효율적이다. 이러한 기능들은 모듈이라는 요소로 개발을 진행해야 하는데, 모듈 개발의 진입 장벽이 타 CMS들에 비해 높아 개발 단가가 높게 형성되어 있다.

프레임웍

XE Core

XpressEngine의 전체 동작을 관리하는 가장 기초가 되는 요소로, 하위 프로그램인 모듈, 애드온, 위젯등의 작동을 위해 필수적인 프로그램이다. 처음 배포될 때, 사이트를 제작하는 데에 있어 필수적이라고 판단되는 모듈, 위젯 등이 포함되어 배포되었다가, V1.5 부근에서 게시판 등의 기능을 제외하고 말 그대로 코어만을 배포하기 시작했다. 큰 뜻을 가지고 시작한 방식이나, 운영에 부담이 되었는지 프로젝트 XE 서비스를 종료하면서 다시 처음처럼 필수 기능들을 대부분 포함시켜 배포하고 있다.

프로그램의 작동방식을 중점으로 이야기하자면, 따로 배포되었던 시기의 코어가 올바른 방식이기는 하다. 애드온, 위젯, 레이아웃 등 대부분의 기능이 해당 기능의 작동을 위한 모듈을 가지고 있고, 그 모듈이 작동하기 위해서는 코어가 필요하기 때문이다. 모듈과 코어를 따로 나누려고 했다는 점을 보면, 구 방식대로 배포하는 것이 '코어' 라는 의미를 제일 잘 나타내는게 아닐까.

프로그램

모듈

회원, 게시판, 포인트 등 독립된 기능을 제공하는 프로그램이다. '독립된' 이라는 용어의 의미를 이해하기 어렵다면, 그것 자체가 출력하는 페이지가 존재하는가, 하지 않는가를 판단해보면 된다. 애드온의 경우 화면에 무언가를 출력하기 위해서 이미 출력된 내용에 덧붙이는 방식을 사용하거나, 애드온 모듈의 기능을 빌어 정형화된 템플릿 내에서만 출력이 가능하다. 위젯의 경우, 페이지 모듈 또는 img 태그를 활용해야지만 화면에 무언가를 출력할 수 있으므로, 이 점을 생각해 보면 쉽게 이해할 수 있을것이다.

모듈의 경우, MVC 패턴을 철저하게 따르기 때문에, 모델, 뷰, 클래스 모두가 존재해야 한다. 그렇지 않을 경우 작동에 문제가 있기 때문에 간단한 모듈이라도 작성해야 하는 코드가 많아지는 단점이 있다.

애드온

모듈의 실행 전, 후에 작동하는 짧은 코드의 집합이다. 트리거 시스템을 활용하여 총 4개의 분기점을 생성하고, 각 분기점마다 활성화된 애드온 코드를 실행시키는 방식이다. 물론, 애드온 코드 내부에서 현재 분기점의 정보를 얻을 수 있어 특정 분기점에서만 실행하도록 만들 수도 있다.

게시글을 등록할 때, 또는 게시글을 삭제할 때 등 페이지의 이동이 있을 경우에만 작동한다. 분기점의 종류가 '초기', '처리 전', '처리 후', '출력 전' 으로 되어 있으며, 처리 전/후 분기점의 경우 어떠한 처리도 진행하지 않았을 때, 또는 모든 처리를 완전히 완료했을 때 활성화된다. 이에 비해 모듈에서 등록하는 트리거의 경우 특정 처리가 완료되기 전/후 를 설정할 수 있어, 처리 전 데이터를 수정하거나, 처리 후 반환값을 변조할 수 있다는 점이 다르다.

위젯

웹사이트의 곳곳에 다양한 콘텐츠를 출력할 수 있는 작은 프로그램이다. 모듈을 하나의 어플리케이션이라고 취급한다면, 안드로이드의 위젯 기능을 생각해도 무방하다. 페이지 모듈에서 활용할 수 있으며, 타 모듈에서는 img 태그를 사용하여 위젯을 출력할 수 있다.

디자인

위젯스타일

위젯의 테두리에 추가할 수 있는 디자인이다. 위젯스타일 안에 위젯을 삽입한다는 느낌으로 이해하면 된다.

위젯 스킨

위젯 프로그램의 디자인이다. 위젯 모듈에서 선택한 스킨의 데이터를 읽어와 화면에 출력하기 때문에, 위젯을 사용하는데 있어 필수적이다. 몇몇 위젯들은 위젯 자체에는 기능을 넣지 않고, 스킨단에서 모든것을 처리하는 경우가 있다. XE 템플릿 문법에서 PHP 코드를 사용할 수 있어서 생기는 폐혜로 보인다. 그런 위젯은 되도록이면 사용하지 말자. 사이트 성능에 좋지 않다.

모듈 스킨

모듈 프로그램의 디자인이다. 모바일 스킨과 PC 스킨을 구분하는 모듈일 경우, 두 스킨 모두를 적용해야 한다. 위젯 스킨쪽에서도 언급했듯이, XE 템플릿을 사용하여 추가적인 기능을 구현하는 경우가 많다. 그래도 모듈 스킨의 경우 비주류의 기능을 간편하게 추가할 수 있다는 점에서 높이 살 만 하다. 너무 많은 기능이 제공되는 것이 아니라면 심각하게 고민할 필요는 없어보인다.

레이아웃

웹사이트의 틀이다. 대부분의 기능들이 레이아웃 안에 출력된다.

다운로드

공식 홈페이지에서 다운로드를 받을 수 있다.