vue-插入图片的方法

在这里,只讲一种方法,其它的不再赘述,原理都是一样的。

首先,我们需要将要插入的图片导入到相应的路径下来,路径分为相对路径和绝对路径(建议同意放在components目录下,这样后面引用会非常方便),关于相对路径和绝对路径的相关内容自己查阅资料,这里也不太赘述。好啦,废话不多说,直接上代码。

首先,这是我项目的结构:

其次,<template>里面新建一个<div>标签,


  <div>
		<img :src="imgUrl"/>
	</div>

紧接着,在<script>标签里面添加代码(注意:只看未被注释的代码)

export default {
   /* name: "zujian",
    props: {},
    components: {
        
    }, */
    setup() {
		/* const  bianliangname = ref('1111');
		function ok(){
			bianliangname.value='2222'
			
		} */
		return {
			/* bianliangname,
			ok, */
			imgUrl:require('./lyp.jpg')
		}
	}
}

最后,编译运行一下,在浏览器中就可以看到图片被插入了。

运行结果也贴到这儿:

好啦,本期分享到此结束,下期会详细讲解父子组件数据传递的几种方式,敬请期待吧~

### 实现 Vue-quill-editor 插入图片功能 为了实现在 `vue-quill-editor` 中插入图片的功能,可以采用两种主要方式来处理这一需求。 #### 方法一:通过 Base64 编码直接插入图片 这种方式简单快捷,适合小尺寸图片或少量图片的场景。然而当涉及大量图片或高分辨率图像时,可能会遇到性能瓶颈[^2]。 ```javascript addImageByBase64(base64String) { const range = this.quill.getSelection(); if (range !== null && base64String) { this.quill.insertEmbed(range.index, 'image', base64String); } } ``` 这种方法的优点在于无需额外配置服务器端逻辑即可快速实现图片展示效果;缺点则是对于较大文件会占用较多内存资源并影响页面加载速度。 #### 方法二:上传至服务器获取 URL 后插入 更推荐的做法是将图片先上传到服务器保存,并返回访问链接再将其作为 src 属性嵌入到编辑器内。此方案不仅解决了大图带来的问题还便于后续管理和维护[^3]。 1. **安装依赖** 首先确保项目已引入必要的库: ```bash npm install quill --save ``` 接着在组件中导入所需模块: ```javascript import { quillEditor } from "vue-quill-editor"; import Quill from "quill"; // 导入样式表 import "quill/dist/quill.core.css"; // 核心样式 import "quill/dist/quill.snow.css"; // 雪花主题 import "quill/dist/quill.bubble.css"; // 泡泡主题 ``` 2. **创建自定义工具栏按钮用于触发图片选择事件** 可以通过扩展默认 toolbar 来添加新的操作项以便于用户交互选取本地文件。 ```html <template> <div id="editor-container"> <!-- 自定义toolbar --> <span class="ql-formats"><button type="button" @click="showImgFileInput">Insert Image</button></span> <!-- 图片输入框,默认隐藏 --> <input ref="imgInputRef" style="display:none;" type="file" accept=".jpg,.jpeg,.png" @change="handleImageAdded"> <!-- editor实例化位置 --> <quill-editor v-model:value="content"></quill-editor> </div> </template> ``` 3. **编写 JavaScript 函数完成实际业务流程** 这里包含了显示文件选择对话框以及监听 change 事件后的数据提交过程。 ```javascript export default { name: "MyComponent", components: { quillEditor, }, methods: { showImgFileInput() { this.$refs.imgInputRef.click(); // 手动触发表单控件弹窗 }, async handleImageAdded(event) { let file = event.target.files[0]; try { // 假设已经实现了uploadToServer函数负责向后端发送请求 let res = await uploadToServer(file); // 获取成功响应中的url字段 let url = res.data.url; // 将光标定位到最后一次选中的地方 var range = this.editor.getSelection(true); // 调用Quill API插入新创建好的<img>标签 this.editor.insertEmbed(range.index, "image", url, Quill.sources.USER); } catch(error){ console.error('Failed to upload image:', error.message); } // 清除上次残留的选择状态 this.$refs.imgInputRef.value = ''; } } }; ``` 上述代码片段展示了如何利用前端技术栈配合后台服务接口达成预期目标——即允许用户轻松地把外部素材加入文档之中而不必担心兼容性和效率方面的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱学英语的程序媛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值