티스토리 뷰

IT/WebB

RequireJS

리쫑v 2015. 12. 8. 10:52

ADM4는 기본 아키텍쳐가 클로져 스타일이다.


그와 필연적으로 엮어있는게 RequireJS인데


지금까지 별생각없이 쓰다가 생각해볼 일이 생겨서 정리해본다.


RequireJS에서 모듈을 Define하는 방법은 세가지가 있다.


출처 : http://requirejs.org/docs/api.html#define


세가지인줄 알고 다시 저페이지에 들어가봤는데 방법이 무지하게 많다.


일단 내가 사용하는 RequireJS Define 방식은 아래와 같다.

 define(['beans/Bless/BlessDesc','beans/Bless/BlessGameData'], function(Desc, GameData){



위 JS들을 로드하고, 그것들을 Function에 인자에 담아서 사용한다.

근데 GameData JS에는 모듈 로드하는게 내용이 좀 다르다


var GameDataCategory = ['hi','jl',hello','world'];


define( GameDataCategory.map(function(cat){ return 'beans/Bless/BlessGameData/BlessGameData.'+cat; } ), function( Desc ){

//blahblah

})


요래요래 되어있다.

저 내용을 질의하니

GameDataCategory Array에 있는 값들을 전부 로드하는것이라고 한다.


따라서 내가 필요한 description을 추가로 로드하기 위해 아래와 같이 수정했다.



var GameDataCategory = ['hi','jl',hello','world'];

var requireModules = ['beans/Bless/BlessDesc'];

define( requireModules.concat( GameDataCategory.map(function(cat){ return 'beans/Bless/BlessGameData/BlessGameData.'+cat; }) ), function( Desc ){


앞에다 내가 로드할 모듈을 넣고, 원래있던걸 뒤에 concat으로 붙였다.


내가 쓸 모듈은 Desc에 담았고, 나머지는 뭐 안담고 그냥 쓴다


참고로 내가 명시적으로 담지 않은 Require된 모듈들은

arguments[ i ] 에 담긴다고 한다.

 >  for( var i=requireModules.length; i<arguments.length; i++)

    arguments[i](DataKey, GameData);


이런식으로 불러서 쓸 수 있다.

명시적이지 않게 많은 경우 사용할 수 있는 방법으로 보인다.


이상

'IT > WebB' 카테고리의 다른 글

JS Object / Array add Item  (0) 2015.12.10
MSSQL 바이너리 -> 가져와서 파싱하기  (0) 2015.12.08
JQuery Plugin - Context Div  (0) 2014.05.29
Closure가 무엇인가  (0) 2014.05.29
AJAX  (0) 2014.03.17
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함