글쓴사람 관리자
글쓴시간2003년 4월 25일 오후 9시 25분 19초
    제목[응답][건의] URL 자동변경 - 불가....
자바스크립트 때문에 어렵네요...

어디는 되고 어디는 안되고,, 그런 문제가 복잡하게 얽힙니다.

끝내주는 아이디어이고,

오늘 새벽에 1차 작업후 저도 좀 흥분했었는데..

아쉽게 됐습니다..
행인 으음... 역시 그렇군요.
혹시라도 다른 방법이 있는지 나중에 천천히 생각해봐야겠네요. ^^
03-04-25 23:20
행인 아참, 자바스크립트는 src 로 부를때 문제 인가요...?
정확히 설명좀 부탁드립니다.
03-04-26 02:13
관리자 abc='src';
img[abc]=path+"kkk.gif";
예를들면 이런 경우가 있고, 스크립트부분만 빼는 것도.. 제 능력으로는 안됩니다.. php로 자바스크립트와 html 파서를 만들지 않는한 불가능인 거 같네요.
03-04-26 03:25
관리자 그리고 제작자가 임의로 정한 방식대로 자바스크립트 사용법에 제한을 가한다면 이상한 일이 되겠죠..
03-04-26 03:30
행인 음... 스크립트에서도 경로 쓰는건 HTML 이나 PHP 랑 같지 않나요...?
스크립트에서
path = 'images';
img.src = path + '/logo.gif';
이렇게 해도, 이미지 경로인 images 를 <?=$skin_dir.'/images'?> 로 바꾼다고 해도 같은것 아닌가요?
제가 잘못 이해하고 있는건지;;;
답변 부탁드려요.
03-04-27 00:41
관리자 어떤 부분을 잘 모르시는지 이해가 안돼서, 다 말씀드려볼게요.

경로변환을 하는 건 예를 들어서,
이미지파일, 템플릿파일, 실행파일이 각각

/home/www/template/skin1/img/news.gif
/home/www/template/skin1/news.tpl
/home/www/news/index.php

일 때,

템플릿 파일내에 <img src='img/title.gif> 라는 이미지가 있다면, 템플릿파일변환시 <img src='../template/skin1/img/news.gif'>로 바꿔서 변환파일로 저장한다는 겁니다.

바꿔주는 방법은, 템플릿파일에서 src='상대경로' 부분을 정규식으로 찾아내서, 계산된 보정경로를 붙여주는 거구요..

이기능이 필요한 이유는..

보통은 템플릿파일작성할 때,
<img src=/{base}/{skin}/img/news.gif> 이런 식으로 하거든요..

이렇게 하면, news.tpl 파일을 디자이너가 열었을 때 이미지가 하나도 안보이고, 외부스타일시트나 외부자바스크립트등 전부 적용이 안됩니다. <img src=<?=$skin_dir?>/img/news.gif> 이렇게 하더라도 마찬가지입니다.

디자이너가 news/index.php 를 확인해가면서 작업해도 되지만, 작업편의성면에서 큰 차이가 있습니다.

특히 위지윅방식의 에디터를 써서 디자이너가 마음대로 이미지폴더를 만들고 작업을 하더라도, 저 기능이 있다면, 별도의 조치없이 곧바로 프로그램에 붙일 수가 있어서 코드분리뿐만아니라 작업분리까지 완벽하게 지원하게 되는 셈입니다.

HTML 뿐이라면 문제가 없는데, 자바스크립트의 경우는 정규식차원에서 해결이 안됩니다.

img.src =  path + '/logo.gif';

이건 아주 간단한 예인데도, path에 상대경로가 들었는지 절대경로가 들었는지, 자바스크립트를 파싱하는 모듈을 만들지 않는 한 알 방법이 없습니다.


..기훈님은 별 말씀 없으시네요..
03-04-27 01:47
행인 음.. 제가 했던 말은, 디자이너가 HTML 을 작성할때는 상대 경로든 절대경로든 상관없이 쓰게 하고, 다만 작성전 프로그래머와 상의후에 작업하고...
작업의 결과는 일반 HTML 과 동일하게
<img src="images/title/test.jpg">
이렇게 적는다면, 템플릿을 파싱하게되면
<img src="<?=$skin_dir?>/images/title/test.jpg">
이렇게 바꾼다는 거였거든요.
제가 답변 달아놓은 글에도 설명을 해놨었는데, 설명이 많이 부족했나봅니다;
자바스크립트의 경우도 절대든 상대든, URL 을 적는 변수는 있을테고 ... 어디에든 URL 을 나와 있을거라 생각됩니다. 다만 아무것도 안적혀 있는 부분이 문제가 될 수 있겠지만요. 하지만, 자바스크립트의 경우는 프로그래머 또는 직접 작업 하는 사람이 맞춰줘야 하지 않나 싶습니다.
지금도 그렇게 하고 있을테구요.
03-04-28 01:46
관리자 그런 뜻이었군요.. 잘 이해하고 계셨네요.

예를 하나 더 들어 볼게요.. 아래는 드림위버MX의 swapimage 비해이비어로 만든 코드의 일부입니다.

<body onLoad="MM_preloadImages('flower/rose.jpg')">
<a href="javascript:;" onMouseOver="MM_swapImage('Image1','','flower/rose.jpg',1)" onMouseOut="MM_swapImgRestore()"><img src="flower/tulip.jpg" name="Image1" width="593" height="863" border="0" id="Image1"></a>

이걸 해독하려면, 말씀드린대로 html과 자바스크립트 파서를 만들어야 가능합니다. 지금으로서는 이 이미지 경로들을 프로그래머가 일일이 찾아서 고쳐줘야 하고, 고친다음에 템플릿파일열면 이미지가 사라지겠죠.. 롤오버조차 해결 못하는 별로 의미없는 기능이 아닌가 싶습니다..

또.. 어딘 되고 어딘 안되고 그런 조건을 외우라고 요구해야 하는데.. 이렇게 되면, 자바스크립트 디버깅할 때, 하나의 부담거리가 됩니다.

잘 이해하셨으리라고 생각합니다..

다 편하자고 하는 일이더라도, 또 행인님이 동의하기 어렵더라도, 기본적으로.. 템플릿엔진이 자바스크립트를 이런 식으로 쓰면 안된다, 저런 식으로 쓰면 된다.. 는 식의 제한을 가하는 것은 아무리 사소하더라도 적절하지 않은 것 같습니다.

어쨌든.. 여러가지 의견을 주신 점에 감사합니다.
03-04-28 04:01
기훈 아~ 그렇군요.. 제가 워크샵을 갔다 오니라고...
저도 예전에 html파서를 만들어 본적이 있는데 그때도 자바스크립트 부분이 제일 처리하기 힘든 부분이었습니다.
저의 경우에는 클라이언트가 요구하는 시일때문에 더이상 개발하지못하고 기한을 마추기 위해 어쩔수없이 법칙(?)을 만들수 밖에 없었습니다. 자바스크립트일경우에 경로 보정을 위해서는 특별한 태그의 조합을 사용하라고...
그런데 이게 담당자가 바뀔때마다 수많은 질문을 해와서 난감했었던 적이 있었죠...
자바스크립트까지 완벽하게 경로보정을 하기는 좀 힘들지 않을까 생각이 되네요.
애초에 제안은 웹에디터에서 이미지를 보자였는데 위의 예제와 같이 드림위버나 나모 자체에서 생성되는 자바 스크립트도 있다는건 깜빡했네요 ㅜㅡ
네 잘알겠습니다 좋은하루 되세요 ^^
03-04-28 10:40
관리자 그런 배경이 있었기 때문에 제안할 수가 있었군요.. 이런 생각을 하다니.. 아주 초보이거나 고수이거나 둘 중 하나라고 생각했는데.. ^^
03-04-28 12:09
기훈 으흐흐 허접인게 들통났네요 ㅋㅋㅋ
03-04-28 19:32
행인 음... 그럼 이건 어떨까요?
./ 를 꼭 앞에 붙여주거나 하는것이죠.
그럼 전체 문서중에서 링크를 분석해서 치환이 가능하긴 하죠. 링크 분석하는 코드가 추가되야 한다는것이지만;;
템플릿또한 하나의 제약(코드 규칙) 안에서 만들어지는 것입니다. 이걸 이용하기 위한 제한은 경로를 쓸때를 빼고는 없다고 생각합니다. 문자열 중에
./[\w]/
가 들어간 부분을 검색한다면 거의 경로가 체킹될것 같구요. 오류 확률이 있기 때문에 힘들것 같긴 합니다;
03-04-28 20:40
관리자 좋은 아이디어네요.. 근데.. 템플릿코드는 템플릿 태그내에서 규칙을 갖는 것이고.. 자바스크립트 사용형식을 제한하는 것과는 의미가 다른 것 같습니다.
"./~~" 형식의 문자열은 오직 경로로만 써야한다든가 등등의 규약(?)은 ecma에서 정할 일이지 제가 정할 일은 아닌거 같습니다.. 암튼.. 그렇습니다.
03-04-29 00:02
행인 음.. 그런가요? ^^;
03-04-29 12:35
    이름
비밀번호
  [건의] URL 자동변경 [4] 03-04-22 1105 기훈
  [응답] URL 자동변경 [1] 03-04-24 841 행인
>> [응답][건의] URL 자동변경 - 불가.... [14] 03-04-25 5051 관리자
 
Since 2003-03-03 hosted on vultr.com