從開發到釋出一款基於Vue2x的圖片預覽外掛

JoySang發表於2018-05-13

專案地址: vue-picture-viewer

先來看下Demo

LiveDemo

Demo頁截圖

關於開發Vue外掛的幾種方式 (具體請移步官網)Vue官網

MyPlugin.install = function (Vue, options) {
  // 1. 新增全域性方法或屬性
  Vue.myGlobalMethod = function () {
    // 邏輯...
  }

  // 2. 新增全域性資源
  Vue.directive('my-directive', {
    bind (el, binding, vnode, oldVnode) {
      // 邏輯...
    }
    ...
  })

  // 3. 注入元件
  Vue.mixin({
    created: function () {
      // 邏輯...
    }
    ...
  })

  // 4. 新增例項方法
  Vue.prototype.$myMethod = function (methodOptions) {
    // 邏輯...
  }
}

複製程式碼

我採用第一種方式來編寫這個外掛

  • 1.第一步建立專案 vue init webpack-simple youProjectName(你的專案名稱)具體操作不在贅述

從開發到釋出一款基於Vue2x的圖片預覽外掛

  • 2.開始外掛開發,編寫index.js
import vuePictureViewer from './vue-picture-viewer'

const pictureviewer = {
  install (Vue, options) {
    Vue.component(vuePictureViewer.name, vuePictureViewer)
  }
}

if (typeof window !== 'undefined' && window.Vue) { // 這段程式碼很重要
  window.Vue.use(pictureviewer)
}

export default pictureviewer
複製程式碼
  • 3.編寫vue-picture-viewer.vue也挺簡單(具體可以去看原始碼)
  • 4.如何使用(main.js)
import vuePictureViewer from './lib/index.js'
Vue.use(vuePictureViewer)
複製程式碼

App.vue

<template>
  <div id="app">
    <vue-picture-viewer :imgData="imgUrl" :switch="true" v-if="imgUrl"></vue-picture-viewer>
  </div>
</template>

<script>
export default {
  name: 'app',
  data () {
    return {
      imgUrl: [{
          url:'http://p8ny46w8x.bkt.clouddn.com/test1.jpg',
          name: 'test1.jpg'
        },
        {
          url: 'http://p8ny46w8x.bkt.clouddn.com/test2.jpg',
          name: 'test2.jpg'
        }, {
          url: 'http://p8ny46w8x.bkt.clouddn.com/test3.jpg',
          name: 'test3.jpg'
        },
        {
          url: 'http://p8ny46w8x.bkt.clouddn.com/test4.jpg',
          name: 'test4.jpg'
        }]
    }
  }
}
</script>

<style>
* {
  margin: 0;
  padding: 0;
}
html, body {
  width: 100%;
  height: 100%;
}
</style>

複製程式碼
  • 5.打包前的配置webpack.config.js(很重要!!!)
module.exports = {
  entry: './src/lib/index.js',
  output: {
    path: path.resolve(__dirname, './dist'),
    publicPath: '/dist/',
    // filename: 'build.js',
    filename: 'vue-picture-viewer.js',
    library: 'pictureViewer',
    libraryTarget: 'umd',
    umdNamedDefine: true
  },
複製程式碼
  • 6.打包成功,配置package.json
"license": "MIT", // 許可證
  "private": false, // 預設是true 私人的 需要改為false, 不然釋出不成功!
  "main": "dist/vue-picture-viewer.js", 這個超級重要 決定了你 import xxx from “vue-picture-viewer” 它預設就會去找 dist下的vue-picture-viewer 檔案
  "repository": {
    "type": "git",
    "url": "https://github.com/sangcz/vue-picture-viewer" // github專案地址
  },
複製程式碼
  • 7.一切Ok準備釋出!
  • 8.首先註冊好npm後 新增使用者
npm adduser 
Username: your name 
Password: your password 
Email: yourmail

// 檢視一下登入的是不是你自己
npm whoami

// 釋出
npm publish

// 這裡我遇到一個問題,釋出失敗了!
什麼原因呢?

複製程式碼

從開發到釋出一款基於Vue2x的圖片預覽外掛

  • 9.解決了上面的問題,釋出成功了!開心?
  • 10.記得寫一下README.md(比如像我的一樣,寫的越詳細越好!)
  • 11.這個外掛其實很簡單的,主要是要把開發到釋出都來了一遍,還是有收穫的

最後總結

外掛還有一點問題,放大縮小的操作也沒有加動畫,不相容移動端,看起來比較生硬!第二版的時候給加上動畫相容一下移動端!!! (歡迎交流,提Issues! 求Star)今天在圖書館待了一天,餓死了,回家吃飯~

相關文章