這篇文章將為大家詳細(xì)講解有關(guān)如何使用Javascript插件開(kāi)發(fā),小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供臨河網(wǎng)站建設(shè)、臨河做網(wǎng)站、臨河網(wǎng)站設(shè)計(jì)、臨河網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、臨河企業(yè)網(wǎng)站模板建站服務(wù),十多年臨河做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。該怎樣架構(gòu)?
對(duì)于架構(gòu)這個(gè)概念,接觸的比較少,我的理解,架構(gòu)就是解決未來(lái)可能會(huì)發(fā)生的事。
之前也封裝過(guò)一些插件,但后端嫌我封裝的太難用,于是分析其原因,發(fā)現(xiàn)之前寫(xiě)的插件,該暴露的接口沒(méi)有,有些不需要傳的參數(shù)反而要傳。該暴露的接口沒(méi)有,這是因?yàn)槲覜](méi)有按照未來(lái)的思想來(lái)寫(xiě)插件,而往往這樣寫(xiě)出來(lái)的插件就成了一次性用品。
所以這段時(shí)間,在寫(xiě)插件之前都會(huì)事先思考清楚,這個(gè)插件都需要哪些參數(shù),而哪些又是必須傳的,哪些是可選的,哪些功能以后可能會(huì)用到,哪些是可以會(huì)更改的,這些都是必須考慮的,不然寫(xiě)出來(lái)的插件肯定會(huì)有很多的問(wèn)題。
基本雛形
;(function(window,document){ var MaskShare = function(){ }; MaskShare.prototype = {}; window.MaskShare = MaskShare; }(window,document));
把要寫(xiě)的代碼,封閉到一個(gè)自執(zhí)行函數(shù)里面,防止變量沖突,然后將這個(gè)構(gòu)造函數(shù)暴露給window對(duì)象,方便我們?cè)谕獠咳ピL問(wèn)這個(gè)構(gòu)造函數(shù)。
效果需要做成如下的:
思考需要哪些參數(shù)
這個(gè)功能就是點(diǎn)擊某個(gè)元素,彈出一個(gè)遮罩層,點(diǎn)擊遮罩層將遮罩層去掉。
因此可以分析出,至少需要一個(gè)參數(shù),也就是我們需要知道點(diǎn)擊誰(shuí)彈出彈出層,另外我們還需要配置一些默認(rèn)參數(shù)。
;(function(window,document){ var MaskShare = function(targetDom,options){ // 判斷是用函數(shù)創(chuàng)建的還是用new創(chuàng)建的。這樣我們就可以通過(guò)MaskShare("dom") 或 new MaskShare("dom")來(lái)使用這個(gè)插件了 if(!(this instanceof MaskShare))return new MaskShare(targetDom,options); // 參數(shù)合并 this.options = this.extend({ // 這個(gè)參數(shù)以后可能會(huì)更改所以暴露出去 imgSrc:"../static/img/coupon-mask_1.png" },options); // 判斷傳進(jìn)來(lái)的是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è)置默認(rèn)樣式 注意將z-index值設(shè)置大一些,防止其他元素層級(jí)比遮罩層高 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"; // 打開(kāi)遮罩層的回調(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插件開(kāi)發(fā)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:如何使用Javascript插件開(kāi)發(fā)-創(chuàng)新互聯(lián)
URL鏈接:http://jinyejixie.com/article30/dedoso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、移動(dòng)網(wǎng)站建設(shè)、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容