日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何構建一個Vue插件并生成npm包

瀏覽:34日期:2022-11-11 10:08:21

vue的插件一般用來添加全局性的功能,具體可分為:

添加全局方法或者屬性; 添加全局資源(指令、過濾器等); 通過全局 mixin 方法添加一些組件選項; 在 Vue.prototype 上 添加 Vue 實例方法; 創(chuàng)建一個庫,提供自己的 API,同時提供上面提到的一個或多個功能;

一般來說我們在項目中傾向于第五種方式,可以通過創(chuàng)建一個js文件包含我們需要添加的多種全局性功能,指令、過濾器、實例方法之類的。這樣的一個插件的構建也不難,主要就是使用vue提供的install 方法,傳入Vue構造器以及你所能用到的參數(shù)對象;添加對應的功能,export出去,在需要的地方引入并Vue.use()方法注冊即可;具體使用參考vue官網插件部分——開發(fā)插件。

這一次我的項目中需要添加‘反爬’功能,具體實現(xiàn)就是后端在檢測到用戶觸發(fā)‘反爬’規(guī)則后返回指定錯誤碼以及對應的驗證頁面,前端在全局請求中監(jiān)測該錯誤碼,在檢測到錯誤碼后通過插件加載驗證頁面讓用戶去驗證,并將驗證結果反饋給后端,在后端收到驗證結果后移除驗證頁面。

需求確定后,我們就知道這個插件需要做的事情就是創(chuàng)建一個vue組件實例=>加載后端返回的頁面=>解析并執(zhí)行其中的js文件=>注冊驗證成功的全局回調函數(shù)。具體操作如下:

const antiReptilian = { install(Vue, options) { Vue.$antirept = checkText => { if (!checkText) return; let wrapperTemp = Vue.extend({ // 1、創(chuàng)建構造器,定義模板 template: ’<div style='z-index:9999 !important;'></div>’ }); let antiObj = new wrapperTemp().$mount().$el; // 2、創(chuàng)建實例 antiObj.innerHTML = checkText; initScripts(antiObj);//3、解析并順序執(zhí)行js let App = document.getElementById(’app’); let wrapper = document.getElementById(’antiReptWrapper’); if (wrapper) { return; } App.appendChild(antiObj); // 4、把創(chuàng)建的實例添加到App中 window.checkSucceed = res => { // 5、驗證通過后移除實例 App.removeChild(antiObj); window.location.reload(); }; }; }};

需要注意的是通過設置innerHTML 的方式加載驗證頁面會導致內部的js文件不執(zhí)行;因此我們還必須將驗證頁面的的js文件提取出來再重新插入,并且還要保證內部多個js文件的執(zhí)行順序,具體代碼如下:

//重新引入js文件const initScripts = function(cont) { let oldScripts = cont.getElementsByTagName(’script’); let newScripts = []; for (let i = 0; i < oldScripts.length; i++) {//提取內部js文件 let newScript = document.createElement(’script’); newScript.type = ’text/javascript’; newScript.innerHTML = oldScripts[i].innerHTML; if (oldScripts[i].src) { newScript.src = oldScripts[i].src; } newScripts.push(newScript); } while (oldScripts.length !== 0) { cont.removeChild(oldScripts[0]);//移除之前的js文件 } for (let i = 0; i < newScripts.length; i++) { if (i == 0) { cont.appendChild(newScripts[i]); } else {//保證每個js文件按照之前的順序執(zhí)行 newScripts[i - 1].onload = newScripts[ i - 1 ].onreadystatechange = function(event) { cont.appendChild(newScripts[i]); }; } }};

到此為止這個簡單的插件功能就完成了,在需要的地方引入、注冊并調用Vue.$antirept()方法傳入要加載的頁面即可;

將寫好的插件生成npm包的方法也簡單,分為以下幾步:

1、前往npm官網注冊一個npm賬號=>【npm官網】;

2、將寫好的插件生成一個簡單的npm包:

創(chuàng)建一個空文件夾,名稱即為你的npm包的名稱,注意名稱不要與現(xiàn)有的npm包重復; 切到該文件夾下,輸入‘npm init’命令生成一個package.json文件,內部信息自定義; 將寫好的插件js文件拷到該文件夾下,重命名為index.js; 在根目錄下創(chuàng)建README.md文件,添加關于包的介紹信息(非必需);

3、發(fā)布創(chuàng)建好的包:

1. 若第一次發(fā)布包,執(zhí)行‘ npm adduser’命令,輸入前面注冊好的npm賬號,密碼和郵箱;2. 若不是第一次發(fā)布包,執(zhí)行‘ npm login’命令進行登錄,同樣輸入npm賬號,密碼和郵箱;3. 登錄成功以后,在剛才的文件夾下,執(zhí)行‘npm publish’命令,即可發(fā)布該npm包;4. 若要更新之前的包,只需要更改版本號,再執(zhí)行‘npm publish’命令即可;

至此一個簡單的vue插件就生成了一個npm包了,以后使用就不需要加載js文件,可以直接通過npm的方式引入了,其它的小伙伴也可以一起愉快的玩耍了==>全劇終。

以上就是如何構建一個Vue插件并生成npm包的詳細內容,更多關于vue生成npm包的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
九九综合九九| 蜜桃av一区| 日韩av免费大片| 蜜桃视频一区二区| 91精品久久久久久久久久不卡| 亚洲久久视频| 久久国产中文字幕| 麻豆精品视频在线观看视频| 日韩三区免费| 日韩不卡一区二区三区| yellow在线观看网址| 国产精品3区| 亚洲精品日本| 欧洲激情综合| 欧美jjzz| 欧美日韩一区二区国产| 日本精品黄色| 亚洲精品2区| 欧美日韩一二三四| 国产另类在线| 91精品福利| 黄色网一区二区| 国产手机视频一区二区| 视频在线观看一区二区三区| 日韩欧美国产精品综合嫩v| 亚洲精一区二区三区| 最新国产拍偷乱拍精品| 国产伦精品一区二区三区视频 | 天堂va蜜桃一区二区三区| 亚洲午夜91| 免费欧美在线视频| 国产精品日本一区二区三区在线| 国产精品久久久久77777丨| 麻豆mv在线观看| 婷婷中文字幕一区| 日韩欧美另类中文字幕| 高清在线一区| 久久午夜影视| 欧美伊人影院| 精品久久一区| 久久影视三级福利片| 国产va免费精品观看精品视频| 亚洲精品一级| 国产精品三级| 欧美影院三区| 欧美成a人片免费观看久久五月天| 国内自拍视频一区二区三区| 国产传媒在线| 夜夜嗨av一区二区三区网站四季av| 亚洲色图国产| 激情综合五月| 欧美日韩精品免费观看视欧美高清免费大片 | 国产精品二区不卡| 视频一区欧美日韩| 亚洲爱爱视频| 欧美国产专区| 青草国产精品| 免费日本视频一区| 久久人人99| 国产精品草草| 欧美日韩91| 日韩精品一区二区三区中文在线 | 亚洲大全视频| 国产精品香蕉| 亚洲视频国产| 91精品国产调教在线观看| 免费高潮视频95在线观看网站| 日韩中文字幕无砖| 国产精品嫩草99av在线| 国产高清不卡| 日韩av一区二区在线影视| 国产亚洲精品v| av不卡免费看| 99在线精品免费视频九九视| 今天的高清视频免费播放成人| 群体交乱之放荡娇妻一区二区| 国产精品亚洲综合久久| 日韩精品社区| 狠狠色综合网| 99国产精品久久久久久久| 午夜精品影院| 亚洲综合中文| 日韩精品1区2区3区| 一区二区三区四区精品视频| 蜜臀av国产精品久久久久| 日韩精品一区第一页| 日本亚洲最大的色成网站www | 欧美在线看片| av日韩中文| 天堂√中文最新版在线| 亚洲一本视频| 波多野结衣久久精品| 久久精品免费看| 国产精品片aa在线观看| 国产精品玖玖玖在线资源| 国产亚洲欧美日韩精品一区二区三区 | 都市激情国产精品| 最新亚洲激情| 免费在线视频一区| 日本在线不卡视频一二三区| 日本免费在线视频不卡一不卡二| 日韩欧美中文字幕在线视频| 国产videos久久| 欧美日韩黑人| 久久午夜精品| 亚洲精品护士| 久久久亚洲欧洲日产| 欧美三级网址| 久久精品动漫| 欧美一区91| 欧美高清不卡| 大香伊人久久精品一区二区| 久久国产精品免费一区二区三区 | 日韩天堂av| 国产日韩1区| 久久蜜桃av| 老司机免费视频一区二区| 亚洲天堂成人| 国产精品99一区二区三| 亚洲精品在线二区| 狠狠爱www人成狠狠爱综合网| 国产在线看片免费视频在线观看| 成人免费网站www网站高清| 日韩高清不卡一区| 亚洲少妇自拍| 国产超碰精品| 美女网站一区| 国产精品日韩精品中文字幕| 国产精品美女在线观看直播| 在线亚洲一区| 国产精品伦一区二区| 欧美网站在线| 国产一区二区色噜噜| 欧美亚洲国产激情| 日本视频在线一区| 婷婷综合六月| 日韩欧美自拍| 亚洲精品97| 日韩电影二区| 99热精品久久| 在线视频日韩| 石原莉奈在线亚洲二区| 久久久久美女| 欧美黄色网页| 美女在线视频一区| 亚洲免费观看| 亚洲精品电影| 最新国产拍偷乱拍精品| 91久久视频| 亚洲区欧美区| 欧美日韩 国产精品| 精品午夜视频| 欧美亚洲综合视频| 日韩av一区二区在线影视| 亚洲精品高潮| 乱一区二区av| 日韩欧美精品综合| 一区免费视频| 蜜桃视频一区二区| 国产精品一区二区三区四区在线观看| 亚洲精品国模| 久久电影tv| 91九色精品| 丝袜a∨在线一区二区三区不卡| 午夜免费一区| 欧美特黄a级高清免费大片a级| 黑丝一区二区三区| 国产精品久久久久久av公交车| 日韩精品久久久久久久软件91| 精品国产一区二区三区av片| 国产精品香蕉| 久久国产乱子精品免费女| 久久香蕉精品香蕉| 亚洲夜间福利| 久久精品97| 国产精品毛片在线看| 国产精品色网| 秋霞影院一区二区三区| 久久99免费视频| 亚洲欧美高清| 99久久久久| 久久精品三级| 日韩av首页| 国产精品亚洲人成在99www| 伊人影院久久| 欧美丰满日韩| 国产精品v亚洲精品v日韩精品| 亚洲激情五月| 久久在线免费| 精精国产xxxx视频在线播放 | 久久婷婷久久| 欧美日韩精品免费观看视欧美高清免费大片 | 999精品色在线播放| 91亚洲人成网污www| 国产精品亚洲成在人线| 久久久精品国产**网站| 国内精品伊人| 国产91一区| 热久久免费视频| 日韩高清三区|