前言
最近在各种方面的引入时出现了一些问题。比如,用到剪切图片的第三方库 cropperjs,但是在引入的时候却不能正常显示。
引入第三方库的问题
一开始像官网的写法一样
先 npm install cropperjs
然后在 index.html 里面插入以下代码1
2<link href="./node_modules/cropperjs/dist/cropper.min.css" rel="stylesheet">
<script src="./node_modules/cropperjs/dist/cropper.esm.js"></script>
但是效果却是这样的:
而且页面拉到下面,滚动滚轮的时候下面两张图还会放大缩小,根本就不是想要的效果(╯‵□′)╯︵┻━┻。
如果我们用把 index.html 中的代码换成 cdn:1
2<link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.3.6/cropper.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.3.6/cropper.js"></script>
结果又正常引入了
解决方法
其实在 Vue-cli 里面,引入插件需要在组件里面的两个地方引入:在 <script> 标签中引入 js 文件,在 <style> 标签中引入 css 文件:1
2
3
4
5
6
7
8
9
10
11
12// component.vue
<template>
...
</template>
<script>
import Cropper from 'cropperjs' // 引入 js 文件
...
</script>
<style>
@import '../../node_modules/cropperjs/dist/cropper.min.css'; // 引入 css 文件
...
</style>
删掉 index.html 里面的引入,看看效果:
成功啦。
如果想全局使用,还是一样的,只不过引入位置的组件改为 App.vue。
图片路径的问题
一开始想着用 Vue-cli 自带的 logo.png 图片做测试,但是在直接对图片的 src 属性赋值的时候 img.src = ../assets/logo.png 图片却找不到,而在 <img> 标签里面的 src 属性赋值图片却可以正常显示。
解决方法
- 使用
require,因为在assets中的文件会被webpack处理,所以要使用的话就需要img.src = require('../assets/logo.png') - 把
logo.png放到static目录下,因为在static目录下的文件不会被webpack 处理,所以通过正常的方式就能直接使用img.src = '/static/logo.png'使用绝对路径引用。