코드 스터디

『김밥코드』app폴더(main, constants) 생성

Recstasy 2021. 3. 31. 06:23

김밥코드는 객체지향의 원리를 사용하되,

라이브러리 효율성을 극대화하는 방법이다.

 

하나의 파일에 몽땅 때려담는 스파게티 코드와는 다르다.

따라서 main.js가 필요하다.

 

 

 

main.js

컴퓨터 하드웨어에 비유하자면,

main.js는 본체 케이스와 같다.

 

main.js는 어플 실행에 필요한 각종 라이브러리를 받아서

작동할 수 있는 기반을 마련한다.

 

이를 위해, app폴더를 생성하고 main.js파일을 만든다.

 

CGBADA.createNameSpace('CGBADA.app.CGBADA_main');
CGBADA.app.CGBADA_main = (()=>{

    class CGBADA_Main{
        constructor(){
            //라이브러리 
            this.Lib = [];

            this.setup();
        }

        //라이브러리 import
        setup(){
            let mainLib = {name:'zim', value: new CGBADA.board.CGBADA_boardGUI()};
            let cssLib = {name:'bootStrap', value: 'ex bootstrap' } //예시자료 삭제요망
            this.Lib = [...this.Lib, mainLib ];

            //라이브러리 합성
            this.compLib(mainLib, cssLib);

            //앱 실행
            this.init();
        }

        init(){
            //라이브러리s 실행
            for(let lib of this.Lib){
                lib.value.init()
            }
        }

        compLib(lib1, lib2){
            //라이브러리 합성
            lib1.value.add(lib2);
        }

        update(){

        }

        reset(){

        }

    }
    
    return CGBADA_Main;
    
})();

 

현재, 네임스페이스를 만든 상태이므로

createNameSpace( )메서드를 통해

CGBADA.app.CGBADA_main 이름의 객체를 생성할 수 있다.

 

CGBADA.app.CGBADA_main객체 내부의 CGBADA_Main클래스를 모듈식으로 내보냄으로써 

프로젝트 내의 어떠한 위치건 'new'키워드를 통해 인스턴스 객체를 생성할 수 있다.

 

어플개발에 필요한 라이브러리들은

모두 CGBADA.app.CGBADA_main을 거쳐야하고,

향후 생성할 CGBADA.board.CGBADA_board 인터페이스를 통해 전달된다.

 

정리하자면, 표준형 MVC패턴에서

main.js 역할을 강화시킨 컴포넌트 패턴이라 할 수 있다. 

 

 

 

constants.js

컴퓨터 케이스도 스펙이 존재한다.

컴퓨터를 처분할 때까지 거의 변함없는 스펙(크기, 색상, 쿨러위치, LED버튼, 기타 등..)이 있으며,

이를 s/w관점에서 보자면 싱글턴 패턴이다.  

 

싱글턴 패턴은 객체를 전역변수로 선언한 뒤,

해당 기능을 s/w어느 위치에서든 접근할 수 있는 생성구조다.

 

constants.js파일을 app폴더에 생성해보자.

 

CGBADA.createNameSpace('CGBADA.app.CGBADA_Constants');

CGBADA.app.CGBADA_Constants = (function(){

    class CGBADA_Constants{
        constructor(){
        }

        toString(){
            return 'CGBADA_Constants';
        }
    }

    const info = {
        version:'0.01',
        maker:'WebDoLi'
    }
    
    //전역변수 생성
    CGBADA_Constants.TITLE = 'CGBADA_Constants';
    CGBADA_Constants.info = info;

    return CGBADA_Constants;
}());

 

CGBADA_Constants는 절대값을 포함하며,

인스턴스를 생성하지 않고,

어디서든 TITLE, info와 같은 변수값에 직접적으로 접근할 수 있다.

 

app폴더까지 생성했다면, 김밥코드의 기본뼈대는 잡은 셈이다.

다음 포스팅부터 김밥코드의 핵심, board를 생성해보자.