DESC

내가 보려고 쓰는 블로그

«   2024/05   »
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
Today
-
Yesterday
-
Total
-
  • Javascript 모듈화 해서 사용하기
    Javascript 2021. 1. 8. 12:01
    반응형

    common.js 등의 파일로 공통함수를 작성 할 때, 가독성을 높이기 위해 객체를 모듈화 하여 사용하는 기본 템플릿.

     

    1. Class 처럼 생성자로 초기화 하여 사용하기


      commonUtil.js

      // 생성자
      const CommonUtil = function(obj) {
        for(let key in obj) {
          this[key] = obj[key];
        }
        this.init(obj);
      };
      
      // 공통변수
      CommonUtil.prototype = {
        commonData : {},
        userInfo: null,
        PAGING_SIZE: 10	
      };
      
      CommonUtil.prototype.init = function(obj) {
        // TODO
        //this.submit();
      };
      
      CommonUtil.prototype.submit = function(url, param) {
      
        var form = document.createElement("form");
        form.setAttribute("method", "post");
        form.setAttribute("action", url);
        document.body.appendChild(form);
      
        // 옵션
        var input_id = null;
        for (var i = 0; i < param.length; i++) {
          input_id = document.createElement("input");
          input_id.setAttribute("type", "hidden");
          input_id.setAttribute("name", param[i].id);
          input_id.setAttribute("value", param[i].value);
          form.appendChild(input_id);
        }
      
        form.submit();
      };

       

      init.html

      <script src="/resources/js/commonUtil.js"></script>
      <script type="text/javascript">
      var commonUtil;
      
      $(document).ready(function() {
      
        // 변수 세팅
        commonUtil = new CommonUtil(
          userInfo: {uid: 'userid', uname: 'Hailey', grade: 'A'}
        });
      
        commonUtil.submit(userInfo);
      });
      
      </script>

       

       

    2. 선언하여 바로 사용하기


      commonUtil2.js 

      var commonUtil = (function() {
        // attribute
        var userInfo = {};
        
        // private function ...
        
        return {
          init: function(obj){
            this.userInfo = obj.userInfo;
          },
          submit: function(obj){
          },
          
          /** 
            selector: 콤보박스 셀렉터
          , start: 시작 값
          , end: 종료 값
          , init: 기본 값
          , order: desc, asc
          , diff: 증감
          */
          appendOptionNum: function(selector, start, end, init, order, diff){
            var $target = $(selector);
            if( !$target ) return;
            if( !$target.is("select") ) return;
      
            if(!init) init = start;
            if(!diff) diff = 1;
      
            if( order == 'desc' ){
              for (var i = start; i >= end ; i-=diff) {
                $(selector).append( '<option value="'+i+'" '+(init==i?'selected':'')+'>'+i+'</option>' );
              }
      
            }else{
              for (var i = start; i <= end ; i+=diff) {
                $(selector).append( '<option value="'+i+'" '+(init==i?'selected':'')+'>'+i+'</option>' );
              }
            }
          },
      
          appendMonths: function(selector){
            var $target = $(selector);
            if( !$target ) return;
            if( !$target.is("select") ) return;
      
            commonUtil.appendOptionNum(selector, 1, 12);
          },
          
          ajaxSync: function(url, jsonData, callback, fallback) {
            var config = {
              url : url,
              async : false,
              type : "POST",
              data : jsonData ? JSON.stringify(jsonData) : null,
              dataType : "json",
              contentType : "application/json; charset=utf-8",
              success : callback,
              error : fallback
            };
      
            $.ajaxSetup(config);
            $.ajax();
      
            config = {
              url : null,
              type : "GET",
              data : null,
              async : true,
              dataType : null,
              contentType : "application/x-www-form-urlencoded",
              success : null
            };
            $.ajaxSetup(config);
          }
      
        }
      })();

       

      init2.html 

      <script src="/resources/js/commonUtil.js"></script>
      <script type="text/javascript">
      $(document).ready(function() {
        commonUtil.init(obj);
        commonUtil.search(userInfo);
        
        commonUtil.userInfo // undefined ! return 으로 정의해줘야 사용가능.
      });
      
      </script>

       

       

     

     

    반응형

    'Javascript' 카테고리의 다른 글

    Javascript 클립보드 복사  (0) 2022.12.16
    sessionStorage & localStorage 사용  (0) 2020.12.29
    JQuery cookie 라이브러리 활용하기  (0) 2020.08.05
    window.console 확장  (0) 2020.04.29

    댓글

Customed By Hailey Gong.