>  Q&A  >  본문

想问下, 前端的接口如果封装成 js-sdk 的形式,该如何封装呢?

想问下, 前端的接口 如果想封装成 js-sdk(就是后端给前端封装好的一个js模块, 前端无需理会后台接口的具体url路径,前端只需要调用里面的一个方法即可, 总的来说就像微信sdk那玩意) 的形式,该如何封装呢?另外有没有例子参考一下或者建议呢?

高洛峰高洛峰2894일 전1292

모든 응답(1)나는 대답할 것이다

  • 三叔

    三叔2016-11-17 16:11:13

    总的来说这玩意就是一个封装好的若干个ajax请求集合。举个小例子:还可以自己扩展封装哈

    !(function(win, doc) {
    
      function SDK(opt) {
        this.opt = opt;
      }
      SDK.prototype._ajax = function(param, callback) {
        // 省略代码,举个例子,直接返回参数
        if (typeof callback === 'function') callback(param);
      }
    
      // 私有方法,一般不提供的,为了扩展性
      SDK.prototype._update = function(key, defaultParam) {
        this[key] = function(param, callback) {
          param = Object.assign({}, defaultParam, param);
          this._ajax(param, callback);
        }
        return this;
      };
      SDK.prototype._remove = function(url) {
        delete this[url];
        return this;
      };
    
      // common 方法
      SDK.prototype.loginApi = function(param, callback) {
        param.time = new Date();
        return this._ajax(param, callback);
      }
    
      win.JSsdk = new SDK();
    
    })(window, document);
    
    // test
    JSsdk.loginApi({ username: 'admin', pwd: '123456' }, function(res) {
      console.log(res);
    });
    
    JSsdk._update('logout', { redirect: 'http://aaa.com/bbb' });
    JSsdk.logout({}, function(res) {
      console.log(res);
    });


    회신하다
    0
  • 취소회신하다