這篇文章主要介紹Vue插件如何實現(xiàn)從封裝到發(fā)布,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
我們擁有十多年網(wǎng)頁設計和網(wǎng)站建設經(jīng)驗,從網(wǎng)站策劃到網(wǎng)站制作,我們的網(wǎng)頁設計師為您提供的解決方案。為企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設、外貿(mào)營銷網(wǎng)站建設、微信開發(fā)、微信小程序、手機網(wǎng)站制作、H5網(wǎng)站設計、等業(yè)務。無論您有什么樣的網(wǎng)站設計或者設計方案要求,我們都將富于創(chuàng)造性的提供專業(yè)設計服務并滿足您的需求。插件的分類
添加全局的方法或者屬性 比如:vue-element
添加全局的資源 比如:指令 v-bind
通過mixin方法添加的一些混合
添加Vue實例方法 Vue.prototype上面
插件的使用
通過全局方法 Vue.use()
使用插件。它需要在你調(diào)用 new Vue()
啟動應用之前完成:
// 調(diào)用 `MyPlugin.install(Vue)` Vue.use(MyPlugin) new Vue({ //... options })``` 也可以傳入一個選項對象: ``` javascript Vue.use(MyPlugin, { someOption: true })
插件開發(fā)
Vue.js 的插件有一個公開方法 install。這個方法的第一個參數(shù)是 Vue 構(gòu)造器,第二個參數(shù)是一個可選的選項對象:
MyPlugin.install = function (Vue, options) { // 1. 添加全局方法或?qū)傩? Vue.myGlobalMethod = function () { // 邏輯... } // 2. 添加全局資源 Vue.directive('my-directive', { bind (el, binding, vnode, oldVnode) { // 邏輯... } ... }) // 3. 注入組件 Vue.mixin({ created: function () { // 邏輯... } ... }) // 4. 添加實例方法 Vue.prototype.$myMethod = function (methodOptions) { // 邏輯... } //5.直接注冊組件 Vue.use(); }
其實無論采用什么方式,最終的目的則是在項目中可以使用,借助install 的Vue參數(shù)具體自己進行封裝
從零開始的組件封裝
需求: 封裝一個微博表情的enoji插件
準備
node環(huán)境 vue環(huán)境 vue-cli腳手架 等等
創(chuàng)建工程
使用vue init 創(chuàng)建簡單腳手架,簡單修改就可以適合插件開發(fā)
vue init webpack-simple weibo-emoji cd weibo-emoji npm install
開發(fā)目錄如下:
插件實現(xiàn)
項目具體邏輯實現(xiàn)可以去這里查看源碼
我們正常webpack的entry入口一般會設置為main.js 做一些依賴引入和視圖掛載等的操作,當我們編寫插件的時候理所當然的就會省去掛載這一步操作了。
這里我們可以將index.js作為我們的入口文件,暴露出去的則是一個有這install方法的插件對象
代碼如下:
import weiboEmoji from './compontent/weibo_emoji' const emoji = { install(Vue, options) { Vue.component(weiboEmoji.name, weiboEmoji); } } if (typeof window !== 'undefined' && window.Vue) { window.Vue.use(emoji); } export default emoji
發(fā)布
發(fā)布之前檢查一下webconfig配置:
entry: './src/index.js',// 入口 output: { path: path.resolve(__dirname, './dist'),//打包輸出目錄 publicPath: '/dist/',// 靜態(tài)資源前綴 filename: 'vue-weibo-emoji.js', //打包生成文件的名字 library: 'WeiboEmoji', //umd 打包的時候模塊的名字 libraryTarget: 'umd',//打包方式 amd umdNamedDefine: true //打包未定義的時候使用默認名字 },
檢查發(fā)布配置:
"name": "weibo-emoji", // 打包的項目名,也就是modemodules里面的文件夾名字 也就是import from之后跟的名字 "main": "dist/vue-weibo-emoji.js", // 是訪問到nodemodules依賴,實際引入的文件 相當于入口 "repository": {// 倉庫 貌似倉庫內(nèi)容也不影響發(fā)布內(nèi)容,填對就行 "type": "git", "url": "https://github.com/icebluesky2666/weibo-emoji" }, "description": "A Weibo emoji plugn",// 描述 "version": "1.0.2",// 版本 "author": "jhqin",// 作者 "license": "MIT",// license 類型
對于多次發(fā)布,必須每次的版本號都不同
最后:
npm build npm login npm publish
使用
import WeiboEmoji from 'weibo-emoji' Vue.use(WeiboEmoji)
效果:
以上是“Vue插件如何實現(xiàn)從封裝到發(fā)布”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設計公司行業(yè)資訊頻道!
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。