您好,登錄后才能下訂單哦!
本文我們將學習如何制作一個vue插件,并將其分發到npm上,能夠讓其他人安裝使用.
插件大大地提高了開發者的開發效率。我們的大多數項目都依賴于它們,因為它們能夠以極快的速度發布新功能。
正如官方Vue.js文檔中所述,插件的范圍沒有限制。通常我們想實現的功能有下面5種:
OK,現在你了解了vue插件是什么了,以及它可以滿足哪些需求!
如何在vue項目中使用插件
通過npm install或yarn add安裝插件后,你需要在main.js文件中導入它并調用Vue.use()全局方法。
注意:在new Vue() 前,必須先實例化所有插件.
import Vue from "vue"; import MyPlugin from "myplugin"; Vue.use(MyPlugin); new Vue({ // [...] })
如果插件包支持cdn方式引用的話,也可以通過以下方式引用:
<script src="https://cdn.xxx.cn/npm/myplugin@latest/dist/myplugin.min.js"></script>
另外,在你調用Vue.use()時,想對插件做一些自定義配置,你可以這么做:
Vue.use(MyPlugin, { option1: false, option2: true })
舉個例子,比如在引入熱門的Element UI庫時,它支持傳入一個全局配置對象
import Element from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(Element, { // size 用于改變組件的默認尺寸,zIndex 設置彈框的初始 z-index(默認值:2000) size: 'small', zIndex: 3000 });
現在讓我們進入正題!開始構建你的第一個vue插件💪
來制作一個酷炫的按鈕組件
作為一個有追求的前端,相信你們在公司開發項目時,肯定會想過,"要是公司有屬于自己的一套UI組件庫,那肯定很棒!"。
如果你有這個想法,那你認真看完這篇文章后,將會給你帶來很多靈感和啟發。
步驟 1:初始化插件目錄結構
先創建一個空的項目文件夾,名字隨意取,然后初始化生成package.json文件(文件的內容后面會介紹)
$ mkdir ku-button && cd ku-button $ npm init # 上面這個命令會提示一些問題,一直回車就行,然后最后會創建一個package.json文件
然后在項目根目錄中創建一個src文件夾,里面新建一個KuButton.vue組件,這里你甚至可以通過vue的vue serve和vue build命令行來對單個*.vue文件進行快速原型開發,不過前提需要先額外安裝一個全局的擴展
$ npm install -g @vue/cli $ npm install -g @vue/cli-service-global
安裝完成后,當你成功執行以下命令行后:
$ vue serve KuButton.vue
就可以直接在瀏覽器訪問 http://localhost:8080/
更多關于vue快速原型開發的知識,你可以查看官方文檔
下面,我們開始完善Button按鈕組件的代碼,讓它跑起來!
步驟 2: 完善組件代碼,讓按鈕可配置化
這里我將模仿ElementUI庫的Button組件,給大家揭曉它的奇妙之處!
模板 Template
<template> <button :class="[ 'ku-button', 'ku-button--' + type, 'ku-button--' + size, { 'ku-button--round': round } ]" @click="onClick"> <slot></slot> </button> </template>
JavaScript
<script> export default { props: { type: { type: String, default: 'default', validator(type) { return ['default', 'primary', 'info', 'warning', 'danger'].includes(type) } }, round: { type: Boolean, default: false }, size: { type: String, default: "medium", validator(size) { return ["medium", "small", "mini"].includes(size) } }, }, methods: { onClick(event) { this.$emit("click", event); } } }; </script>
樣式 Style
<style> .ku-button { display: inline-block; outline: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; user-select: none; cursor: pointer; line-height: 1; white-space: nowrap; background-color: #fff; border: 1px solid #dcdfe6; color: #606266; -webkit-appearance: none; text-align: center; box-sizing: border-box; outline: none; margin: 0; transition: .1s; font-weight: 500; padding: 12px 20px; font-size: 14px; border-radius: 4px; } /*顏色*/ .ku-button--default { } .ku-button--primary { color: #fff; background-color: #409eff; border-color: #409eff; } .ku-button--success { color: #fff; background-color: #67c23a; border-color: #67c23a; } .ku-button--info { color: #fff; background-color: #909399; border-color: #909399; } .ku-button--warning { color: #fff; background-color: #e6a23c; border-color: #e6a23c; } .ku-button--danger { color: #fff; background-color: #f56c6c; border-color: #f56c6c; } /*大小*/ .ku-button--medium { padding: 10px 20px; font-size: 14px; border-radius: 4px; } .ku-button--small { padding: 9px 15px; font-size: 12px; border-radius: 3px; } .ku-button--mini { padding: 7px 15px; font-size: 12px; border-radius: 3px; } /*是否圓角*/ .ku-button--round { border-radius: 20px; } </style>
后續我們就可以像這樣使用:
<ku-button type="success" size="mini" round>小按鈕</ku-button>
雖然我將按鈕模板進行了簡化,但這里有幾個學習點很重要:
步驟 3: 寫一個Install方法
文章前面提到了Vue.use()方法,調用時它將會執行install方法,這個方法的第一個參數是 Vue 構造器,第二個參數是一個可選的選項對象。
下面,我們在src中創建一個index.js文件,然后再里面寫:
import KuButton from "./KuButton.vue" export default { install(Vue, options) { // 注冊全局組件 // https://cn.vuejs.org/v2/guide/components-registration.html Vue.component("ku-button", KuButton) } }
到這里,一個完整的插件就差不多啦! 👏
步驟 4: 完善根目錄的package.json文件
打開剛剛npm init創建的package.json文件
{ "private": false, "name": "ku-button", "version": "1.0.0", "description": "A niubility button", "author": "sugars", "license": "MIT", "main": "./dist/index.umd.js", "scripts": { "dev": "vue serve KuButton.vue" }, "files": [ "dist" ], "devDependencies": { "bili": "^4.7.3", "rollup-plugin-vue": "^5.0.0", "vue-template-compiler": "^2.6.10" } }
說明:
你可以在npm官方文檔查看更多關于package.json的知識
打包
打包工具這里我使用的是Bili,一個強大的速度快,零配置的打包工具。
開始安裝打包工具:
$ npm install --save-dev bili $ npm install --save-dev rollup-plugin-vue $ npm install --save-dev vue-template-compiler
然后在項目根目錄下創建一個bili.config.js配置文件,配置如下:
module.exports = { banner: true, output: { extractCSS: false, format: ['umd'], moduleName: 'KuButton' }, plugins: { vue: true } }
完成后,你只需要執行一個命令就打包完成,就這么簡單:
$ bili
打包成功后,在項目根目錄下會生成一個dist文件夾,里面有個index.umd.js文件
在npm上分享你的成果
到這里,你的vue插件就開發完成了。剩下最后一步,就是在npmjs上發布你的插件!
但前提是你需要有一個npmjs賬號,如果沒有的話需要去注冊一個,有的話可以跳過這一步。
打開終端,輸入:
$ npm login // 回車后,輸入你注冊npmjs時填寫的用戶名,密碼和郵箱 // 登錄成功后,會提示:Logged in as <username> on https://registry.npmjs.org/.
查看當前npm用戶登錄情況:
$ npm whoami // 如果登錄成功,輸出的是登錄的用戶名
檢查以上步驟都沒問題后,進入剛剛完成的ku-button項目目錄,開始發布:
$ npm publish
執行成功后,你的插件就正式發布成功了!!🎉
后續如果要更新插件,只需要增加package.json里的version版本號,然后再次執行npm publish發布更新就可以了!
項目中使用剛發布的插件
你可以像安裝其他插件一樣:
$ npm install --save ku-button
或者
$ yarn add ku-button
接著,在main.js引用:
import KuButton from "ku-button" import Vue from "vue" Vue.use(KuButton)
最后,在你的頁面中這樣:
<ku-button round type="success" size="small">真酷!!</ku-button>
附上 Github地址
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。