클로져의 noir (노이어? 누아? -_-) 는 딱 봐도 매우 강력하다. 분명 동적 html 생성이지만 그렇게 보이지 않는것은 사실 lisp 계열 언어의 특징이다. 만. . . !
사실 이런 스타일이 모든 사람들에게 받아들여질리 만무하다. 특히 디자인 하는 사람들에게는.. 그래서 enlive 라는 라이브러리를 또 까 보겠음.
enlive의 소개는
http://paulosuzart.github.com/blog/2012/03/25/web-noir-plus-enlive-template/
여기가 공홈보다 잘 짧게 잘 소개하고 있는듯?
project.clj 에 디펜던시를 추가하고 lein deps 하면 되긴하는데
저위에 소개 페이지를 보고 템플릿을 깔아봄. 얘는 lein-newnew 라는걸 사용하므로 이 플러긴도 설치하고 (별게 다있네 -_-) 저플러긴도 설치하고.
이제 실제로 프로젝트를 만들어봄. endead 로 만들어봄.
대충 이런 구조를 잡아준다. 예제도 하나 들어있다. 아까 그 소개페이지에 있던거다.
순수 html로 스니펫(or 템플릿)을 정의하고 이것을 다시 jquery 에서 셀렉터를 쓰는것과 똑같이 접근해서 조작한다 .. 는 설정이다.
머리가 좀 아프지만. 사실 기능이 약간 부족하다. 스니펫은 참 좋은 개념이고 이걸 조합하면 어렵지 않게 재사용 가능한 콤포넌트를 만들 수 있겠다는 느낌이 온다. 게다가 순수 자바스크립트도 잘 조합이 가능할듯. 어쩌면 클로져스크립트 같은걸로 스니펫을 로드한 시점에서 스크립트를 때려박을수도 있겠고..
하지만 이 스니펫을 다른 스니펫이 못부른다는게 함정. 엄밀히 말하자면 스니펫을 어떤 클로져 코드가 로드하고 또 다른 스니펫을 또 다른 클로져코드가 로드하면 서로 끼워맞추고 씹고 뜯고 맛보고 즐기고 할 수 있겠지만 지나치게 복잡하다.
사실 내가 원하는건 좀더 단순한 형태 (마치 플렉스 같은) 거다.
그러면서도 오버하지 않고 (모든것을 한가지 플랫폼으로 일원화 하겠다 등의 태도) 브라우져가 가장 잘 받아들이고 (마찬가지로 인간에게도) 충분히 함축적인 표현인 html을 그대로 살리고 싶은.. 그냥 일반적인 자바스크립트와 html 표현이 공존하면서도 서로가 서로의 뭉텅이를 어떤 콤포넌트로 받아들일 수 있게 되는 그런 단순한 형태를 바람.
html 파일을 따로 만들지 않고 리더매크로 같은걸로 표현할 수 없을까?
그게되면 좋고.. 아님 사실 순수 괄호표현 ;; 보다 못해보이기도 하고..
사실 익숙하지 않게 느껴져서 그렇지 괄호가 얼마나 편한데..