Home >Web Front-end >JS Tutorial >How to use vue to crop preview component

How to use vue to crop preview component

php中世界最好的语言
php中世界最好的语言Original
2018-06-01 11:22:511636browse

This time I will show you how to use vue to cut the preview component, and what are the precautions for using vue to cut the preview component. The following is a practical case, let's take a look.

The first step: first use vue-cli to install the scaffolding (see the vue-cli official website if you don’t know how to install it)

// 初始化vue-cli
vue init webpack my-plugin
The second step: create the file

New src/ Views/validSlideDemo.vue,

Create VueCrop/index.js,VueCrop.vue in src/components,

Configure access routing in routes/index.js (see github source code for details)

The final generated file structure is as follows:

Step 3: Register components

1. Reference all plug-ins: src/components/index .js

// 导入插件入口文件
import VueCrop from './VueCrop/index.js'
const install = function (Vue, opts = {}) {
 /* 如果已安装就跳过 */
 if (install.installed) return
 // 注册插件
 Vue.component(VueCrop.name, VueCrop)
}
// 全局情况下注册插件
if (typeof window !== 'undefined' && window.Vue) {
 install(window.Vue)
}
export {
 install,
 // 此处是为了兼容在vue内单独引入这个插件,如果是main.js全局引入就可以去掉
 VueCrop
}
2. Globally call the plug-in: src/main.js (vue plugins official documentation explains install)

import Vue from 'vue'
import App from './App'
import router from './router'
// 新加的:导入入口文件
import { install } from 'src/components/index.js'
// 全局调用,相当于调用 `MyPlugin.install(Vue)`
Vue.use(install)
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 components: { App },
 template: '<App/>'
})
3. The VueCrop entry file calls VueCrop.vue: src/components/VueCrop /index.js

// 导入vue
import VueCrop from './VueCrop.vue'
// Vue.js 的插件应当有一个公开方法 install 。这个方法的第一个参数是 Vue 构造器
VueCrop.install = function (Vue) {
 // 注册组件
 Vue.component(VueCrop.name, VueCrop)
}
export default VueCrop
Summary: I always had a misunderstanding at the beginning, thinking that myPlugin.install is a method of vue. In fact, it is not. It is just a public method for us to construct plugin knowledge, which can be understood as native js. The

constructor method:

function MyPlugin(){
 console.info('构造函数')
}
MyPlugin.prototype.install=function(vue,options){
 console.info('构造器vue:'+vue);
}
and the actual registered component is:

Vue.component()

So, the vue plug-in is registered The process is:

1. Call main.js:

import { install } from 'src/components/index.js'
vue.use(install)
2. Add the install method to index.js and call Vue.component to register the component

3. Within the component index.js is the same as index.js for all components

Step 4: Design and develop your own components and build the component structure

Before this, you can first understand the naming convention of the components, etc. You can refer to the article Nuggets: Vue front-end

Development specifications, of which point 2 is explained in detail

First, determine your own calling method and the parameters that need to be exposed

<vue-crop
:crop-url="cropUrl1"
:ratio="ratio"
:height="460"
:width="460"
:previewJson="previewJson1"
class="c-crop--preview_right"
@afterCrop="afterCrop"
>
>
Among them , @afterCrop="afterCrop" is the

callback function after cropping is completed, and the others are attribute configurations

in the component

src/components/VueCrop/VueCrop.vue, You can use this.$emit('afterCrop') to trigger the afterCrop event in the demo

In terms of component structure, it is mainly divided into: cutting the main part, and the marquee component (VueCropTool.vue) , calculation of crop box width, position coordinates, etc. (VueCropMove.js), drag event registration public js (components/utils/draggable.js)

draggable.js is based on the one in element, with some modifications. The source code is as follows

export default function (element, options) {
 const moveFn = function (event) {
  if (options.drag) {
   options.drag(event)
  }
 }
 // mousedown fn
 const downFn = function (event) {
  if (options.start) {
   // 调用参数中start函数
   options.start(event)
  }
 }
 // mouseup fn
 const upFn = function (event) {
  document.removeEventListener('mousemove', moveFn)
  document.removeEventListener('mouseup', upFn)
  document.onselectstart = null
  document.ondragstart = null
  if (options.end) {
   // 调用参数中end函数
   options.end(event)
  }
 }
 // 绑定事件
 element.addEventListener('mousedown', event => {
  if (options.stop && options.stop(event, element) === false) {
   return false
  }
  document.onselectstart = function () {
   return false
  }
  document.ondragstart = function () {
   return false
  }
  document.addEventListener('mousedown', downFn)
  document.addEventListener('mousemove', moveFn)
  document.addEventListener('mouseup', upFn)
 })
}
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the PHP Chinese website!

Recommended reading:

How to use Vue combined with Video.js to play m3u8 videos

##How to use Vue key modifier processing event

The above is the detailed content of How to use vue to crop preview component. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn