1

주제: Javascript require_once 기능 구현 제안

플러그인을 만들다보면 dojo나 prototype 같은 외부 자바스크립트 프레임웍을 쓸 일이 생기는데요.
이렇게되면 플러그인끼리 중복으로 프레임웍을 불러오는 일이 생기게 될 것 같습니다.
이참에 require_once 같은 기능을 구현해놓는 것은 어떨까요?
(라고 말하면서.. 이미 있으면 어떻하나를 고민중인 1人...)

천천히 그러나 확실하게 나아가는 길
email:minkyu.shim@gmail.com
blog:www.shimminkyu.com

2

답글: Javascript require_once 기능 구현 제안

TC내에서 커먼으로 제공하는 라이브러리가 아닌이상 플러그인이 각각 들고 있는 js에 대해 이게 같은 건지 다른건지 알 수 있는 방법이... --?
(설마 file의 md5 첵섬이라도?)

3

답글: Javascript require_once 기능 구현 제안

변수가 있냐 없냐를 체크해서 불완전하게 네임스페이스 비스무리하게 로딩을 검사할 수는 있으나, 표준적인 방법이 아닌 관계로 버전체크를 못합니다. Prototype 1.5, 1.6을 각각 쓰는 플러그인이 있는데 로딩 순서상 1.5만 require_once 처리되었다면 1.6을 쓰는 애들은 먹통이 되겠지요. 결론은... 플러그인 만드는 사람이 잘 만드는 수밖에 없습니다. 플러그인 환경설정에 "라이브러리를 로딩하지 않음" 설정을 넣어준다던가 하는 식으로...

4

답글: Javascript require_once 기능 구현 제안

gendoh 작성:

TC내에서 커먼으로 제공하는 라이브러리가 아닌이상 플러그인이 각각 들고 있는 js에 대해 이게 같은 건지 다른건지 알 수 있는 방법이... --?
(설마 file의 md5 첵섬이라도?)

파일명으로 체크하는건 가능하지 않을까요?
dojo.js나 prototype.js 식으로

천천히 그러나 확실하게 나아가는 길
email:minkyu.shim@gmail.com
blog:www.shimminkyu.com

5

답글: Javascript require_once 기능 구현 제안

graphittie 작성:

변수가 있냐 없냐를 체크해서 불완전하게 네임스페이스 비스무리하게 로딩을 검사할 수는 있으나, 표준적인 방법이 아닌 관계로 버전체크를 못합니다. Prototype 1.5, 1.6을 각각 쓰는 플러그인이 있는데 로딩 순서상 1.5만 require_once 처리되었다면 1.6을 쓰는 애들은 먹통이 되겠지요. 결론은... 플러그인 만드는 사람이 잘 만드는 수밖에 없습니다. 플러그인 환경설정에 "라이브러리를 로딩하지 않음" 설정을 넣어준다던가 하는 식으로...

흠... 좀 더 고민해봐야할 문제네요.
이것저것 외부 프레임웍을 가져오는 것도 덩치만 불리는 것일수도 있고...

'라이브러리를 로딩하지 않음' 설정은 개발자가 아닌 사용자가 이해하기 힘들 것 같습니다. 어떤 경우에 로딩하고 어떤 경우에 로딩하지 말아야하는지를 사용자가 결정하기도 힘들구요.

아. 그리고 DOM을 이용해서 이런 식으로 구현해놓은 사람도 있더군요.
http://kevin.vanzonneveld.net/techblog/ … uire_once/

천천히 그러나 확실하게 나아가는 길
email:minkyu.shim@gmail.com
blog:www.shimminkyu.com

6

답글: Javascript require_once 기능 구현 제안

심민규 작성:

아. 그리고 DOM을 이용해서 이런 식으로 구현해놓은 사람도 있더군요.
http://kevin.vanzonneveld.net/techblog/ … uire_once/

동적으로 스크립트를 로딩하는 방법이군요. dojo도 같은 방식을 씁니다.

<script type="javascript/text" src="a.js></script>
<script type="javascript/text" src="b.js></script>

이걸

<script type="javascript/text" src="php.js">
<script type="javascript/text">
    require("a.js");
    require("b.js");
</script>

이렇게 해야 한다는 거죠.
require 함수 안에 매개변수로 받아온 파일명을 배열로 저장하는 부분이 있어 이 배열과 받아온 매개변수(파일명)을 비교하여 이미 로딩된 건지 아닌지 판단하는 루틴입니다. 마찬가지로 버전체크는 할 수 없지요.

그러나 더 큰 문제는 require를 써서 로딩된 것들만 버전관리가 된다는 겁니다. 따라서 텍스트큐브에서 저것과 같은 함수를 하나 제공하고 모든 플러그인 개발자들이 그걸 사용해서 자바스크립트 파일을 로딩해야 한다는 것인데, 배보다 배꼽이 더 크다는 느낌이... 드는 건 왜일까요;

7

답글: Javascript require_once 기능 구현 제안

그럼 외부 자바스크립트 프레임웍을 가져오는 플러그인(들)을 만들고
다른 플러그인에서는 그 플러그인(들)을 사용하도록 하는건 어떨까요?

천천히 그러나 확실하게 나아가는 길
email:minkyu.shim@gmail.com
blog:www.shimminkyu.com

8

답글: Javascript require_once 기능 구현 제안

강제하진 않더라도 권장 정도는 있는 것이 좋겠습니다.
지금은 피해가고 싶어도 방법이 없는 상태네요. smile

천천히 그러나 확실하게 나아가는 길
email:minkyu.shim@gmail.com
blog:www.shimminkyu.com