中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何使用Javascript插件開發(fā)

這篇文章將為大家詳細講解有關(guān)如何使用Javascript插件開發(fā),小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了蘭州免費建站歡迎大家使用!

該怎樣架構(gòu)?

對于架構(gòu)這個概念,接觸的比較少,我的理解,架構(gòu)就是解決未來可能會發(fā)生的事。

之前也封裝過一些插件,但后端嫌我封裝的太難用,于是分析其原因,發(fā)現(xiàn)之前寫的插件,該暴露的接口沒有,有些不需要傳的參數(shù)反而要傳。該暴露的接口沒有,這是因為我沒有按照未來的思想來寫插件,而往往這樣寫出來的插件就成了一次性用品。

所以這段時間,在寫插件之前都會事先思考清楚,這個插件都需要哪些參數(shù),而哪些又是必須傳的,哪些是可選的,哪些功能以后可能會用到,哪些是可以會更改的,這些都是必須考慮的,不然寫出來的插件肯定會有很多的問題。

基本雛形

;(function(window,document){
 var MaskShare = function(){
 };
 MaskShare.prototype = {};
 window.MaskShare = MaskShare;
}(window,document));

把要寫的代碼,封閉到一個自執(zhí)行函數(shù)里面,防止變量沖突,然后將這個構(gòu)造函數(shù)暴露給window對象,方便我們在外部去訪問這個構(gòu)造函數(shù)。

效果需要做成如下的:

如何使用Javascript插件開發(fā)

思考需要哪些參數(shù)

這個功能就是點擊某個元素,彈出一個遮罩層,點擊遮罩層將遮罩層去掉。

因此可以分析出,至少需要一個參數(shù),也就是我們需要知道點擊誰彈出彈出層,另外我們還需要配置一些默認參數(shù)。

;(function(window,document){
 var MaskShare = function(targetDom,options){
  // 判斷是用函數(shù)創(chuàng)建的還是用new創(chuàng)建的。這樣我們就可以通過MaskShare("dom") 或 new MaskShare("dom")來使用這個插件了
  if(!(this instanceof MaskShare))return new MaskShare(targetDom,options);
  // 參數(shù)合并
  this.options = this.extend({
      // 這個參數(shù)以后可能會更改所以暴露出去
   imgSrc:"../static/img/coupon-mask_1.png"
  },options);
  // 判斷傳進來的是DOM還是字符串
  if((typeof targetDom)==="string"){
   this.targetDom = document.querySelector(targetDom);
  }else{
   this.targetDom = targetDom;
  }
  var boxDom = document.createElement("div");
  var imgDom = document.createElement("img");
  // 設(shè)置默認樣式 注意將z-index值設(shè)置大一些,防止其他元素層級比遮罩層高
  boxDom.style.cssText = "display: none;position: absolute;left: 0;top: 0;width: 100%;height:100%;background-color: rgba(0,0,0,0.8);z-index:9999;";
  imgDom.style.cssText = "margin-top:20px;width: 100%;";
  // 追加或重設(shè)其樣式
  if(this.options.boxDomStyle){
   this.setStyle(boxDom,this.options.boxDomStyle);
  }
  if(this.options.imgDomStyle){
   this.setStyle(imgDom,this.options.imgDomStyle);
  }
  imgDom.src = this.options.imgSrc;
  boxDom.appendChild(imgDom);
  this.boxDom = boxDom;
  // 初始化
  this.init();
 };
 MaskShare.prototype = {
  init:function(){
   this.event();
  },
  extend:function(obj,obj2){
   for(var k in obj2){
    obj[k] = obj2[k];
   }
   return obj;
  },
  setStyle:function(dom,objStyle){
   for(var k in objStyle){
    dom.style[k] = objStyle[k];
   }
  },
  event:function(){
   var _this = this;
   this.targetDom.addEventListener("click",function(){
    document.body.appendChild(_this.boxDom);
    _this.boxDom.style.display = "block";
        // 打開遮罩層的回調(diào)
    _this.options.open&&_this.options.open();
   },false);
   this.boxDom.addEventListener("click",function(){
    this.style.display = "none";
        // 關(guān)閉遮罩層的回調(diào)
    _this.options.close&&_this.options.close();
   },false);
  }
 };
 // 暴露方法
 window.MaskShare = MaskShare;
}(window,document));

使用示例:

MaskShare(".immediately",{
 imgSrc:"../static/img/loading_icon.gif",
 boxDomStyle:{
  opacity:".9"
 },
 imgDomStyle:{
  opacity:".8"
 },
 open:function(){
  console.log("show");
 },
 close:function(){
  console.log("close");
 }
});

關(guān)于“如何使用Javascript插件開發(fā)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

當前名稱:如何使用Javascript插件開發(fā)
新聞來源:http://www.rwnh.cn/article18/gdipgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、軟件開發(fā)自適應(yīng)網(wǎng)站、網(wǎng)站排名App設(shè)計、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
新津县| 定安县| 洞口县| 尚志市| 内丘县| 武平县| 安吉县| 普格县| 依兰县| 淄博市| 龙州县| 博客| 古浪县| 大化| 新沂市| 天峻县| 广元市| 诸城市| 潮州市| 扎兰屯市| 四子王旗| 莒南县| 思南县| 新宁县| 南昌市| 临邑县| 亳州市| 邯郸县| 泸西县| 洛扎县| 南汇区| 盘锦市| 岑溪市| 尉犁县| 纳雍县| 潜江市| 黎城县| 班玛县| 高平市| 酉阳| 漯河市|