基于Vue2x的图片预览插件的示例代码


Posted in Javascript onMay 14, 2018

本文介绍了基于Vue2x的图片预览插件的示例代码,分享给大家,具体如下:

先来看下Demo

LiveDemo

基于Vue2x的图片预览插件的示例代码

关于开发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.这个插件其实很简单的,主要是要把开发到发布都来了一遍,还是有收获的

最后总结

插件还有一点问题,放大缩小的操作也没有加动画,不兼容移动端,看起来比较生硬!第二版的时候给加上动画兼容一下移动端!!!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 多行文本框(textarea)高度变化
Jul 03 Javascript
javascript实现可拖动变色并关闭层窗口实例
May 15 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
Oct 10 Javascript
使用vue实现点击按钮滑出面板的实现代码
Jan 10 Javascript
js中的触发事件对象event.srcElement与event.target详解
Mar 15 Javascript
js正则表达式校验指定字符串的方法
Jul 23 Javascript
JavaScript Math对象和调试程序的方法分析
May 13 Javascript
JS字符串与二进制的相互转化实例代码详解
Jun 28 Javascript
element-ui如何防止重复提交的方法步骤
Dec 09 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 Javascript
javascript实现简易计算器功能
Sep 23 Javascript
javascript的setTimeout()使用方法总结
Nov 20 Javascript
vue组件中的数据传递方法
May 14 #Javascript
vue如何在自定义组件中使用v-model
May 14 #Javascript
JavaScript常用数学函数用法示例
May 14 #Javascript
JavaScript中常见内置函数用法示例
May 14 #Javascript
纯js封装的ajax功能函数与用法示例
May 14 #Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
May 14 #Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
May 14 #Javascript
You might like
cmd下运行php脚本
2008/11/25 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
js工具方法弹出蒙版
2013/05/08 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
细说webpack6 Babel的使用详解
2019/09/26 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
Vue快速实现通用表单验证的示例代码
2020/01/09 Javascript
JS简单表单验证功能完整示例
2020/01/26 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
[02:11]2016国际邀请赛中国区预选赛最美TA采访现场玩家
2016/06/28 DOTA
Python快速排序算法实例分析
2017/11/29 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
YSL圣罗兰美妆俄罗斯官网:Yves Saint Lauret RU
2020/09/23 全球购物
业务经理岗位职责
2013/11/11 职场文书
《匆匆》教学反思
2014/02/22 职场文书
房产公证书范本
2014/04/10 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
2014国庆65周年领导讲话稿(3篇)
2014/09/21 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
交通事故一次性赔偿协议书范本
2014/11/02 职场文书
成绩报告单家长评语
2014/12/30 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python
MySQL 语句执行顺序举例解析
2022/06/05 MySQL