Home >Web Front-end >JS Tutorial >How to use vue to crop preview component
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-pluginThe second step: create the fileNew 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 components1. 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 VueCropSummary: 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()
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 componentsStep 4: Design and develop your own components and build the component structureBefore 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 componentsrc/components/VueCrop/VueCrop.vue, You can use
this.$emit('afterCrop') to trigger the afterCrop event in the demo
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
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!