最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue.js構(gòu)建你的第一個包并在NPM上發(fā)布的方法步驟

 更新時間:2019年05月01日 16:30:57   作者:Sugars  
這篇文章主要介紹了Vue.js構(gòu)建你的第一個包并在NPM上發(fā)布的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文我們將學習如何制作一個vue插件,并將其分發(fā)到npm上,能夠讓其他人安裝使用.

插件大大地提高了開發(fā)者的開發(fā)效率。我們的大多數(shù)項目都依賴于它們,因為它們能夠以極快的速度發(fā)布新功能。

正如官方Vue.js文檔中所述,插件的范圍沒有限制。通常我們想實現(xiàn)的功能有下面5種:

  • 添加全局方法或者屬性 (如: vue-custom-element)
  • 添加全局資源:指令/過濾器/過渡等 (如:vue-touch)
  • 通過全局 mixin 方法添加一些組件選項 (如:vue-router)
  • 添加 Vue 實例方法,通過把它們添加到 Vue.prototype 上實現(xiàn) (如:vue-axios)
  • 一個庫,提供自己的 API,同時提供上面提到的一個或多個功能(如:vue-router

OK,現(xiàn)在你了解了vue插件是什么了,以及它可以滿足哪些需求!

如何在vue項目中使用插件

通過npm install或yarn add安裝插件后,你需要在main.js文件中導入它并調(diào)用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>

另外,在你調(diào)用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 設(shè)置彈框的初始 z-index(默認值:2000)
 size: 'small', 
 zIndex: 3000
});

現(xiàn)在讓我們進入正題!開始構(gòu)建你的第一個vue插件💪

來制作一個酷炫的按鈕組件

作為一個有追求的前端,相信你們在公司開發(fā)項目時,肯定會想過,"要是公司有屬于自己的一套UI組件庫,那肯定很棒!"。
如果你有這個想法,那你認真看完這篇文章后,將會給你帶來很多靈感和啟發(fā)。

步驟 1:初始化插件目錄結(jié)構(gòu)

先創(chuàng)建一個空的項目文件夾,名字隨意取,然后初始化生成package.json文件(文件的內(nèi)容后面會介紹)

$ mkdir ku-button && cd ku-button
$ npm init
# 上面這個命令會提示一些問題,一直回車就行,然后最后會創(chuàng)建一個package.json文件

然后在項目根目錄中創(chuàng)建一個src文件夾,里面新建一個KuButton.vue組件,這里你甚至可以通過vue的vue serve和vue build命令行來對單個*.vue文件進行快速原型開發(fā),不過前提需要先額外安裝一個全局的擴展

$ npm install -g @vue/cli
$ npm install -g @vue/cli-service-global

安裝完成后,當你成功執(zhí)行以下命令行后:

$ vue serve KuButton.vue

就可以直接在瀏覽器訪問 http://localhost:8080/

更多關(guān)于vue快速原型開發(fā)的知識,你可以查看官方文檔

下面,我們開始完善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>

后續(xù)我們就可以像這樣使用:

<ku-button type="success" size="mini" round>小按鈕</ku-button>
雖然我將按鈕模板進行了簡化,但這里有幾個學習點很重要:

  • 使用了BEM規(guī)范。(更多關(guān)于BEM的知識,可查看這里
  • 通過props配置接收3個參數(shù)(按鈕類型,按鈕大小,按鈕是否為圓角),這樣方便使用者隨時切換不同主題的按鈕。
  • 使用了slot插槽,這樣我們就可以這樣使用<ku-button>按鈕文本</ku-button>
  • 定義了@click事件,當點擊組件時會觸發(fā)$emit

步驟 3: 寫一個Install方法

文章前面提到了Vue.use()方法,調(diào)用時它將會執(zhí)行install方法,這個方法的第一個參數(shù)是 Vue 構(gòu)造器,第二個參數(shù)是一個可選的選項對象。

下面,我們在src中創(chuàng)建一個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創(chuàng)建的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"
 }
}

說明:

  • private屬性為false時代表你的包不是私有的,所有人都能查看并npm install使用
  • name屬性指后續(xù)發(fā)布在npm時的包名,請確保你的包名未被注冊
  • version屬性指包的版本號,在你每次發(fā)布更新到npm時,都需要增加版本號。你可以查看更多語義化版本號的知識
  • description屬性指包的描述信息,寫上去好讓大家知道你這個包是干嘛用的
  • main屬性指定了包加載的入口文件,require('moduleName')就會加載這個文件。這個字段的默認值是模塊根目錄下面的index.js。
  • scripts屬性指定了運行腳本命令的npm命令行縮寫,比如build指定了運行npm run build時,所要執(zhí)行的命令。
  • files屬性可以指定哪些文件需要被發(fā)布到npm上,比如這里指定了dist文件夾里的所有文件

你可以在npm官方文檔查看更多關(guān)于package.json的知識

打包

打包工具這里我使用的是Bili,一個強大的速度快,零配置的打包工具。

開始安裝打包工具:

$ npm install --save-dev bili
$ npm install --save-dev rollup-plugin-vue
$ npm install --save-dev vue-template-compiler

然后在項目根目錄下創(chuàng)建一個bili.config.js配置文件,配置如下:

module.exports = {
 banner: true,
 output: {
  extractCSS: false,
  format: ['umd'],
  moduleName: 'KuButton'
 },
 plugins: {
  vue: true
 }
}

完成后,你只需要執(zhí)行一個命令就打包完成,就這么簡單:

$ bili

打包成功后,在項目根目錄下會生成一個dist文件夾,里面有個index.umd.js文件

在npm上分享你的成果

到這里,你的vue插件就開發(fā)完成了。剩下最后一步,就是在npmjs上發(fā)布你的插件!
但前提是你需要有一個npmjs賬號,如果沒有的話需要去注冊一個,有的話可以跳過這一步。

打開終端,輸入:

$ npm login 
// 回車后,輸入你注冊npmjs時填寫的用戶名,密碼和郵箱
// 登錄成功后,會提示:Logged in as <username> on https://registry.npmjs.org/.

查看當前npm用戶登錄情況:

$ npm whoami
// 如果登錄成功,輸出的是登錄的用戶名

檢查以上步驟都沒問題后,進入剛剛完成的ku-button項目目錄,開始發(fā)布:

$ npm publish

執(zhí)行成功后,你的插件就正式發(fā)布成功了??!🎉

后續(xù)如果要更新插件,只需要增加package.json里的version版本號,然后再次執(zhí)行npm publish發(fā)布更新就可以了!

項目中使用剛發(fā)布的插件

你可以像安裝其他插件一樣:

$ 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地址

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue插槽原理與用法詳解

    Vue插槽原理與用法詳解

    這篇文章主要介紹了Vue插槽原理與用法,結(jié)合實例形式詳細分析了vue.js插槽內(nèi)容、具名插槽、作用域插槽等相關(guān)原理與使用方法,需要的朋友可以參考下
    2019-03-03
  • Vue中Element的table多選表格如何實現(xiàn)單選

    Vue中Element的table多選表格如何實現(xiàn)單選

    這篇文章主要介紹了Vue中Element的table多選表格如何實現(xiàn)單選,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue結(jié)合Echarts實現(xiàn)點擊高亮效果的示例

    vue結(jié)合Echarts實現(xiàn)點擊高亮效果的示例

    下面小編就為大家分享一篇vue結(jié)合Echarts實現(xiàn)點擊高亮效果的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue中對象數(shù)組去重的實現(xiàn)

    vue中對象數(shù)組去重的實現(xiàn)

    這篇文章主要介紹了vue中對象數(shù)組去重的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • vue移動端如何解決click事件延遲,封裝tap等事件

    vue移動端如何解決click事件延遲,封裝tap等事件

    這篇文章主要介紹了vue移動端如何解決click事件延遲,封裝tap等事件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vuejs手把手教你寫一個完整的購物車實例代碼

    vuejs手把手教你寫一個完整的購物車實例代碼

    這篇文章主要介紹了vuejs-手把手教你寫一個完整的購物車實例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • el-table樹形表格表單驗證(列表生成序號)

    el-table樹形表格表單驗證(列表生成序號)

    這篇文章主要介紹了el-table樹形表格表單驗證(列表生成序號),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • 分享Vue組件傳值的幾種常用方式(二)

    分享Vue組件傳值的幾種常用方式(二)

    這篇文章主要介紹了分享Vue組件傳值的幾種常用方式,文章圍繞主題斬開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Vue2為何能通過this訪問到data與methods的屬性

    Vue2為何能通過this訪問到data與methods的屬性

    這篇文章主要介紹了Vue2為何能通過this訪問到data與methods的屬性,文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • element select實現(xiàn)組件虛擬滾動優(yōu)化

    element select實現(xiàn)組件虛擬滾動優(yōu)化

    本文主要介紹了element select實現(xiàn)組件虛擬滾動優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04

最新評論

巩留县| 滨海县| 宜兴市| 吴旗县| 乾安县| 桐梓县| 台山市| 益阳市| 外汇| 南溪县| 衡水市| 黄龙县| 无为县| 彭阳县| 盐亭县| 青龙| 仙游县| 子长县| 南康市| 古浪县| 灵宝市| 杂多县| 巴彦淖尔市| 宝鸡市| 岢岚县| 安远县| 阜南县| 南京市| 大名县| 德安县| 宝应县| 碌曲县| 乐山市| 临颍县| 苏尼特右旗| 晋城| 舟曲县| 江川县| 广饶县| 土默特右旗| 佳木斯市|