星空网 > 软件开发 > Java

rewrap

  很久没有动手写技术的文章,这个过程中间一直在写日记,生活点滴的记录替代了技术文章的编写,可以看出以往的内心是**或烈火,现在是...

  最近写了一个JS插件,用圈内的话说叫造了个轮子,造的好与不好都不是自己说了算,关键还是大家用的好与不好。
当然我自己也在使用,由于个人偏爱与喜好,所以未能借签其他Ajax框架的写法,目前的版本都是以版本一进行往上整合的成果,所以你想要全面了解内部的结构,可以先从版本一开始看起。

  现在我们说说整体的设计结构,版本一是好友收集整理的方法,基础的写法已经成型,调用nativeAjax方放即可,方法内部有三个参数,第一个为ajax的属性,第二个为成功的函数,第三个为错误的函数,具体如下:

 1 nativeAjax(postOption,function(data){ 3  // 3.1、请求成功回调 5  console.log(data); 7 },function(error){ 9  // 3.2、请求失败回调,返回HTTP状态码11  console.log(error);13 });

  基于以上的设计模式,然后给他进行二次封装,首先ajax的服务属性固定不变,那么我们可以把所有的ajax properties绑定到对象上即可,如果直接绑定在指定的对象上,其实我们只管给参数和拿参数,省了很多事情,这个过程简单了不少,那么灵活性就不会很高。如果我们想自己在内部进行封装,那么就要求高灵活性和可复用属性,所以我把属性放在了function函数里面,于是在内部使用this指针绑定ajax属性进行调用,同时可以在内部进行插件的再次封装,这是我所理解的这个版本的内部结构的设计模式。

  版本二rewrap-ajax调用的外部结构类似jq的JQ.fn属性,是以链式结构的对象属性方法来使用的,所以我们在<script>内部使用wrap.service(`ajax`, foo)即可,然后foo函数内部具有ajax的服务属性,我们只要把ajax的属性绑定到this指针上即可,ajax属性分别有URL,TYPE,SUCCESS,ERROR四个属性,并且这4个属性都支持大小写的格式。然后this.success,this.error是二个方法,分别是调用成功的数据请求和调用错误状态的捕获,this.success和this.error仅一个参数。

 1 wrap.service('ajax',function ajax() { 2  // 支持大小写 3  this.URL = "query.do" 4  this.TYPE = "GET" 5  this.SUCCESS = function(data) { 6   var val = data; 7   console.log(val) 8  }; 9  this.ERROR = function(err) {10   console.log(err)11  };12 });

 

  版本三rewrap-ajax保持版本二的外部结构和this写法,this指针上多了二个功能,分别是props和methods方法,其中props道具内部结构为json的数据格式,return返回的对象{}具有多个state...状态,比如:

1 return {3 State_01: [{ class : ‘.main’}],5 State_02: { class : ‘.main’},7 State_03: { class : ‘.main’}9 }

  其中每一个state状态对应的value值必须是使用数组[]保存,数组内部必须是一个对象{},对象的属性以常规格式要求,对象对应的value必须是一个dom节点能访问的Element元素(或node节点,class类,id,tag标签等等)。

  然而methods方法的内部结构为常规的对象调用函数的格式,其中return返回的对象key键为API的方法,注意它不支持自定义写法,返回的对象的value为函数写法,那么函数方法接收一个参数,此参数为props管道内部的state状态属性。并且函数的方法内部使用this指针写法,如下:this.el().add()

完整结构:

 1 return { 3  addClass: function (scope){ 5   this.el([scope.class,scope.static]).add() 7  }, 9  removeClass: function (scope){11   this.el([scope.class,scope.tip]).remove()13  },15  pushHtml: function (scope){17   this.el([scope.static,scope.class]).push()19  },21  hasClass: function (scope){23   this.el(scope.define.content).has()25  }27 }

  其中.el()方法内部的参数通过props管道流出状态属性,此属性的$scope作用域为state属性,参数接收的结果为字符串,必须是从props获得的字符串,多个字符串的结果可以使用数组的[]形式储存,那么这些属性都具有这个API方法。el()后面的add方法的作用为当前的元素调用的add方法,然而add绑定的方法是API方法,比如addClass就是rewrap-ajax内部的API方法,但是你在外部调用的时候,可以使用你自定义的add方法去实现addClass方法,方法内部不需要参数,但是外部管道调用add是否需要参数取决与rewrap-ajax内部的API方法。所以之后会公开API方法。

外部调用的方式,通过作用域$scope的形式获得props管道的方法,外部调用如下:

this.ERROR = function( $scope, err ) { $scope.$props.$el($scope.$props.$scope.define.static).add('error_message') $scope.$props.$el($scope.$props.$scope.define.static).push('调用出错 error') $scope.$props.$el($scope.$props.$scope.define.tip).remove('show') console.log(err)}

 

  目前$scope通过方法的第一个参数流进来,那么元素的管道为$props,获得元素为$el()方法,调用的API方法为刚刚在methods内部绑定在this.el().上的方法,比如:add,remove,push等等。

rewrap-ajax详细GIT地址:https://github.com/ZWLTZ/rewrap-ajax

 

原标题:rewrap

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

一周亚马逊大事丨2021年物流涨价推迟,还有这些功能和新规调整:https://www.goluckyvip.com/news/4272.html
浅谈跨境物流的COD模式:https://www.goluckyvip.com/news/4273.html
亚马逊暂停承运人小包裹快递跨境服务:https://www.goluckyvip.com/news/4274.html
欧洲站卖家注意了!亚马逊正式停止英国与欧盟边境运输配送!:https://www.goluckyvip.com/news/4275.html
俄气传媒公司将推出俄罗斯本国版TikTok:https://www.goluckyvip.com/news/4276.html
时间不多了!英欧海关边境明年1日正式设立,这些改变不能不知道:https://www.goluckyvip.com/news/4277.html
毛主席纪念堂微信小程序预约入口及流程图:https://www.vstour.cn/a/407231.html
珠海长隆海洋王国门票可一天多次进出园区吗?:https://www.vstour.cn/a/407232.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流