포럼
xe 템플릿 문법에 대한 namespace 충돌 우려
2014.12.02 16:58
이번에 XE 레이아웃을 만들어 보려 하면서 XE템플릿 문법에 대하여 살펴보았습니다.
<menu> <load> <block>등의 자체적인 html element와 attirubute를 이용하더군요..
아직 개발까지 해보지는 않아서 모르겠지만 미래의 생성될 HTML 요소 등과 name-space 충돌이 날 수 있을것 같다는 생각이 들더군요. 다른 Javascript Library/Framework들과 도 충돌이 있을 수도 있을것 같다는 생각이 들었습니다...
특히 block element이나 loop attribute등은 너무나 일반적인 단어들이라 가까운 미래에 충분히 namespace 충돌이 있을 수 있을 것 같다는 생각이 들었습니다.
모든 xe에서 사용하는 자체적인 html element와 attribute에 xe- 또는 xpressengine-(xe-의 충돌방지) 의 prefix를 지원하고, 장기적으로는 deprecate를 시키는 방향으로 나가야 하지 않을까요?
일단 앞으로 나올 XE 1.8 에서라도 prefix를 지원하도록 변경하고, preifx를 붙이는 방향으로 가야 하지 않는 생각이들었습니다.
이에 대해 어떻게 생각하시나요?
댓글 3
-
sol
2014.12.02 17:32
-
기진곰
2014.12.02 21:43
확실히 충돌한다는 소식이 있지 않는 한, 서둘러 바꿀 필요는 없지 않을까요?
HTML5도 아무렇게나 마구잡이로 태그를 추가하는 것이 아니거든요.
<nav>가 있는데 굳이 비슷한 의미의 <menu>를 또 만들 것 같지도 않고,
<link>가 있는데 굳이 비슷한 의미의 <load>를 또 만들 것 같지도 않고,
의미가 너무 광범위한 <block>보다는
더 세부적인 의미를 갖는 <article>, <section> 등을 선호하는 것 같습니다.
(아니면 더 광범위한 의미의 <div>도 있죠.)
그래서 적당히 일반적인 단어가 오히려 더 안전할지도 모른다는?
물론 제가 틀릴 수도 있어요. <img> 외에 <picture> 태그를 또 만든다는 것을 보면...
그러나 만약 바꾸더라도 1.8은 무리일 거예요. XE3을 타겟으로 해야겠죠.
semantic versioning (semver) 관례에 따르면 이런 큰 변화는 메이저 버전이 바뀌어야 하거든요.
XE가 과연 semver를 따르고 있는지 의문이긴 합니다만... ㅋ
-
AJKJ
2014.12.03 02:22
지금은 <xe:load> <xe-load>를 <load>로 alias 시키는 방향으로 하고, 앞으로는 그러한 개발 방향을 장려 하자는 것이 제 의견이에요. 그래야 추후 메이져 버젼 변화때 빠르게 적응이 가능하지 않을까 싶어서요. 이 정도라면 큰 변화가 아니니 1.8에서도 가능하지 않을까요?
그렇게 하면 XE3 에서 <load>를 <xe:load> 또는 <xe-load> 등으로 alias 시킬수 있고, 그 경우 XE3.X 에서는 지원중단 또는 네임스페이스 충돌에 따른 strict mode 옵션까지 제공이 가능하지 않을까 싶습니다.
HTML 6,7로 버젼업이 되도 문제가 될 여지는 저도 낮다고 생각해요.그래도 만약을 대비하는 차원에서 바꾸었으면 합니다. 그리고 JS 템플릿 엔진쪽에서는 이것 또한 당장 문제가 될 수 있을것 같습니다. 이 경우 JS템플릿 엔진을 수정하면 되긴 하나 , 궁극적으로는 XE에서 general한 naming을 피하는것이 더 좋은 방법이 아닐까 합니다.
element의 name에 prefix를 주는 것도 좋지만,
이왕이면 html5의 namespace(xmlns)를 두는 것이 더 좋을 것 같네요.
http://dev.w3.org/html5/spec-LC/namespaces.html
@bnu