1、应用场景和静态资源文件存放路径
(1)、应用场景:
什么时候适用纯前端下载静态资源文件呢?
前端做静态资源的下载适合固定的数据,不和数据库交互的数据,比如一些“excel模板”、比如“注意事项.docx”文档什么的,下载一些模板类的东西。反之,后端做会更加合适。
(2)、静态资源前端存放路径:
在我们做vue项目的public文件夹下新建static文件夹,这个文件夹存放的我们需要下载的静态资源文件,如下图,这里我存放了一个 员工信息.xlsx文件,待会需要下载这个文件。当然static文件夹存放pdf文件、word文件什么的都可以的。
注意,这里要在public文件夹中新建文件夹存放静态资源,不能在src文件夹中新建文件夹存放静态资源,因为public文件夹中的文件资源不会被npm run build打包编译。大家打包一下,就会发现 员工信息.xlsx文件是存放在dist/static文件夹中的
2、写下载有关逻辑代码
点击按钮下载静态资源文件
<template>
<div>
<!-- 1、html代码 -->
<el-button type="primary" plain @click="frontDownload">本地下载</el-button>
</div>
</template>
<script>
export default {
data() {
return {};
},
methods:{
//2、主要方法
frontDownload() {
var a = document.createElement("a"); //创建一个<a></a>标签
a.href = "/static/模板.xlsx";
//给a标签的href属性值加上地址,注意,这里是绝对路径,不用加 点.
a.download ="下载啦.xlsx";
//设置下载文件文件名,这里加上.xlsx指定文件类型,pdf文件就指定.fpd即可
a.style.display = "none"; // 障眼法藏起来a标签
document.body.appendChild(a);
// 将a标签追加到文档对象中
a.click(); //模拟点击了a标签,会触发a标签的href的读取,浏览器就会自动下载了
a.remove();
// 一次性的,用完就删除a标签
}
}
}
</script>
<style>
</style>
3、原理
借助a标签具有下载文件的功能,来实现纯前端静态资源的下载