Vuejs2 + Webpack框架里,模拟下载的实例讲解

2020-06-12 21:13:36易采站长站整理

在实际的开发工作中,难免要配合销售人员,提前做一些前端的 DEMO 出来。这个时候往往还没有连接后端 API。假如要演示一个下载连接,那么应该如何做呢?

我们希望能够达成以下两点:

1、在开发环境下,我们可以在 webpack-dev-server 开发服务器上点击下载连接,点击后浏览器就能不下载文件。

2、当演示的时候,代码编译后放到 nginx 中。用户可以点击下载链接。nginx存放的都是业务代码。

那么如何做到这两点呢?假如我们要模拟下载一个 test.docx 文件。我们可以利用 url-loader 来对 .docx 文件做处理。可能有人会问:“url-loader 一般不是处理 img 标签里面的图片文件路径吗?”为了解决这个 img 标签的问题,我们可以在一个页面中加上隐藏的图片标签。最后加一个 a 标签: <a href=”/test.docx” rel=”external nofollow” rel=”external nofollow” >下载</a>。下面的篇幅要帮助读者搭建一个简单的项目,来演示这种方法。

* 演示项目 *

项目名称是blog02,项目目录结构如下:


blog02

├─src
│ ├─App.vue
│ ├─home.vue
│ ├─main.js
│ ├─test.docx
│ └─router.js

├─.babelrc
├─index.template.html
├─package.json
└─webpack.config.js

App.vue


<template>
<div>
<router-view></router-view>
</div>
</template>
<script>
export default {
}
</script>

home.vue


<template>
<div class="home-wrapper">
<span class="my-style">这里是首页</span>
<!-- 下载链接 -->
<a href="/test.docx" rel="external nofollow" rel="external nofollow" >下载</a>

<!-- 触发 url-loader,使得 url-loader 处理 word 文档。 -->
<img v-show="isShow" src="./test.docx"/>
</div>
</template>
<script>
export default {
data(){
// 隐藏包含 word 文档路径的 img 标签。
return {isShow:false};
}
};
</script>
<style lang="scss" rel="stylesheet/scss" scoped>
.home-wrapper{
.my-style{
width:900px;
height:600px;
float:right;margin-right:200px;
padding-top:100px;
color:#FF0000;
}
}

</style>

main.js


import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'
import routes from './router'
import VueSuperagent from 'vue-superagent'