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

vue封裝第三方插件并發(fā)布到npm的方法

 更新時(shí)間:2017年09月25日 14:59:43   作者:wmui  
本篇文章主要介紹了vue封裝第三方插件并發(fā)布到npm的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

寫此文前特意google了一下,因?yàn)橛休^詳細(xì)的開發(fā)教程我再寫意義不大,有把插件封裝成組件的教程,有把自己的組件封住成插件的教程,本文主要說(shuō)明如何把第三方的插件封裝成vue插件,簡(jiǎn)化配置,一鍵安裝,主要提供思路,封裝方法大同小異·,文章略長(zhǎng)要有耐心。

gitment

gitment是一個(gè)基于github issues封裝的評(píng)論插件,以這個(gè)插件作為演示,把它封裝成vue插件。vue-gitment,該插件已發(fā)布到npm,并在自己的開源項(xiàng)目vueblog中安裝使用

項(xiàng)目初始化

封裝vue的插件用webpack-simple很合適,vue init webpack-simple vue-gitment此命令創(chuàng)建我們的項(xiàng)目的目錄,創(chuàng)建文件夾和文件,最后結(jié)構(gòu)是這樣的

lib目錄是我們的插件目錄,其他的默認(rèn)就好

修改配置項(xiàng)

首先是修改package.json

{
 "name": "vue-gitment",
 "version": "0.1.1",
 "description": "A comment plugin by gitment",
 "main": "dist/vue-gitment.js",
 "directories": {
  "dist": "dist"
 },
 "scripts": {
  "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
  "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
 },
 "repository": {
  "type": "git",
  "url": "git+https://github.com/vue-blog/vue-gitment.git"
 },
 "dependencies": {
  "gitment": "^0.0.3",
  "vue": "^2.3.3"
 },
 "devDependencies": {
 },
 "author": "wmui",
 "license": "MIT",
 "bugs": {
  "url": "https://github.com/vue-blog/vue-gitment/issues"
 },
 "homepage": "https://github.com/vue-blog/vue-gitment#readme"
}

把依賴性gitment添加到dependencies,main是我們打包后的文件入口,你可以用npm init命令生成一個(gè)package.json

修改webpack.config.js

我們只需配置入口和出口,不要?jiǎng)h除默認(rèn)的配置,因?yàn)楹竺骈_發(fā)好插件,我們需要查看工作效果

修改index.html

因?yàn)槲覀冃薷牧藈ebpack配置,自然要把script的src修改一下

封裝插件

VueComment.vue內(nèi)容如下

<template>
 <div v-comment="options"></div>
</template>
<script>
// 引入依賴項(xiàng)
import Gitment from 'gitment'
export default {
 name: 'vue-comment',
 props: ['options'],
 directives: {
  // 自定義指令
  comment: {
   bind: function (el, binding) {
    const gitment = new Gitment({
     id: binding.value.id + '',
     owner: binding.value.owner,
     repo: binding.value.repo,
     oauth: {
      client_id: binding.value.oauth.client_id,
      client_secret: binding.value.oauth.client_secret
     }
    })
    gitment.render(el)
   }
  }
 }
}
</script>

相信熟悉vue的一眼都看懂了,render函數(shù)是gitment對(duì)象的方法,不用關(guān)心,和我們開發(fā)組件是一樣一樣的

index.js封裝組件

import VueComment from './VueComment.vue'
const comment = {
 install: function(Vue) {
  Vue.component(VueComment.name, VueComment)
 }
}
// 這里的判斷很重要
if (typeof window !== 'undefined' && window.Vue) { 
  window.Vue.use(comment) 
}
export default comment

我們?cè)趙ebpack配置的入口文件就是他,install是掛載組件的方法,有了它我們就可以在外部use一個(gè)插件了,簡(jiǎn)單吧

測(cè)試插件

首先測(cè)試build是否成功

npm run builddist目錄會(huì)生成如下文件

可喜可賀,接下來(lái)測(cè)試插件是否正常工作

我們需要把package和webpack的修改一下,這就是為什么我前面說(shuō)不要?jiǎng)h除而是注釋掉 ,把package.json的main修改為dist/build.js,wepack的entry和filename換成默認(rèn)配置,index.html的src也換成默認(rèn)的

在main.js中引入我們的組件

import VueComment from './lib/index.js'
Vue.use(VueComment)

App.vue中使用我們的插件

<template>
 <div id="app">
  <vue-comment :options="options" v-if="options"></vue-comment>
 </div>
</template>
<script>
export default {
 name: 'App',
 data() {
  return {
   options: {
    id: 'article id',
    owner: 'Your GitHub ID',
    repo: 'The repo to store comments',
    oauth: {
     client_id: 'Your client ID', 
     client_secret: 'Your client secret',
    } 
   }
  }
 }
}
</script>
<style>
  @import '~gitment/style/default.css';
</style>

執(zhí)行npm run dev

哈哈,它正常工作了,Error: Not Found是因?yàn)槲覜]配置client_id。

發(fā)布插件

完成測(cè)試工作后我們就可以發(fā)布到npm了,這個(gè)就比較見到了,注冊(cè)個(gè)npm賬號(hào),在你要發(fā)布的項(xiàng)目目錄執(zhí)行npm login,輸入賬號(hào)密碼和郵箱,然后npm publish就發(fā)布成功了,npm install vue-gitment查看效果,建議直接看源代碼,因?yàn)檎娴暮芎?jiǎn)單。

結(jié)語(yǔ)

自己動(dòng)手豐衣足食,我覺得每個(gè)前端開發(fā)者都要一個(gè)屬于自己的輪子(雖然vue-gitment不是輪子),一個(gè)屬于自己輪子,在造輪子的工程中你能學(xué)到很多很多

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue cli使用絕對(duì)路徑引用圖片問題的解決

    vue cli使用絕對(duì)路徑引用圖片問題的解決

    這篇文章主要給大家介紹了關(guān)于vue cli使用絕對(duì)路徑引用圖片問題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起看看吧。
    2017-12-12
  • Nuxt.js之自動(dòng)路由原理的實(shí)現(xiàn)方法

    Nuxt.js之自動(dòng)路由原理的實(shí)現(xiàn)方法

    這篇文章主要介紹了Nuxt.js之自動(dòng)路由原理的實(shí)現(xiàn)方法,nuxt.js會(huì)根據(jù)pages目錄結(jié)構(gòu)自動(dòng)生成vue-router模塊的路由配置。非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 深入淺出 Vue 系列 -- 數(shù)據(jù)劫持實(shí)現(xiàn)原理

    深入淺出 Vue 系列 -- 數(shù)據(jù)劫持實(shí)現(xiàn)原理

    深入淺出 Vue 系列 -- 數(shù)據(jù)劫持實(shí)現(xiàn)原理
    2019-04-04
  • Vue + element 實(shí)現(xiàn)多選框組并保存已選id集合的示例代碼

    Vue + element 實(shí)現(xiàn)多選框組并保存已選id集合的示例代碼

    這篇文章主要介紹了Vue + element 實(shí)現(xiàn)多選框組并保存已選id集合,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 詳解Element-ui NavMenu子菜單使用遞歸生成時(shí)使用報(bào)錯(cuò)

    詳解Element-ui NavMenu子菜單使用遞歸生成時(shí)使用報(bào)錯(cuò)

    這篇文章主要介紹了詳解Element-ui NavMenu子菜單使用遞歸生成時(shí)使用報(bào)錯(cuò),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Vue?使用?setup?語(yǔ)法糖的示例詳解

    Vue?使用?setup?語(yǔ)法糖的示例詳解

    在 setup 語(yǔ)法糖中通過(guò) import 引入的內(nèi)容,也可以直接在 template 標(biāo)簽中使用,這篇文章主要介紹了Vue?使用?setup?語(yǔ)法糖,需要的朋友可以參考下
    2023-10-10
  • vue實(shí)現(xiàn)購(gòu)物車的監(jiān)聽

    vue實(shí)現(xiàn)購(gòu)物車的監(jiān)聽

    這篇文章主要為大家詳細(xì)介紹了利用vue的監(jiān)聽事件實(shí)現(xiàn)一個(gè)簡(jiǎn)單購(gòu)物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • 如何隱藏element-ui中tree懶加載葉子節(jié)點(diǎn)checkbox(分頁(yè)懶加載效果)

    如何隱藏element-ui中tree懶加載葉子節(jié)點(diǎn)checkbox(分頁(yè)懶加載效果)

    這篇文章主要介紹了如何隱藏element-ui中tree懶加載葉子節(jié)點(diǎn)checkbox(分頁(yè)懶加載效果),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue單頁(yè)應(yīng)用中如何使用jquery的方法示例

    vue單頁(yè)應(yīng)用中如何使用jquery的方法示例

    最近在工作中遇到的一個(gè)需求,需要在vue-cli建立的應(yīng)用中引入jquery的方式,通過(guò)查找相關(guān)的資料最終解決了,所以這篇文章主要給大家介紹了關(guān)于在vue單頁(yè)應(yīng)用中如何使用jquery的方法示例,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • Vue結(jié)合Video.js播放m3u8視頻流的方法示例

    Vue結(jié)合Video.js播放m3u8視頻流的方法示例

    本篇文章主要介紹了Vue+Video.js播放m3u8視頻流的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論

论坛| 东莞市| 道真| 贵州省| 锡林郭勒盟| 东乡族自治县| 赫章县| 普兰店市| 泊头市| 忻州市| 黄石市| 合山市| 锦屏县| 绵阳市| 师宗县| 剑河县| 义马市| 景德镇市| 平原县| 溧阳市| 泽州县| 抚顺市| 龙游县| 建阳市| 太仓市| 揭阳市| 黔南| 青岛市| 平塘县| 三明市| 宕昌县| 阿克苏市| 南澳县| 木兰县| 岳池县| 额尔古纳市| 伽师县| 鹿邑县| 连州市| 五指山市| 天镇县|