Skip to content

Commit d29286a

Browse files
committed
doc: 文档描述更新
1 parent d3559cd commit d29286a

32 files changed

+15893
-293
lines changed

.eslintignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
lib
22
dist
3+
docs
34
file-viewer
45
vendors

config/config.doc.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
* @Author: zhanghan
33
* @Date: 2022-11-28 09:13:53
44
* @LastEditors: zhanghan
5-
* @LastEditTime: 2023-01-10 20:05:15
5+
* @LastEditTime: 2023-01-11 09:26:20
66
* @Descripttion: 文档环境配置
77
*/
88

99
module.exports = {
10-
outputDir: './doc-dist',
10+
outputDir: './docs',
1111
publicPath: '/file-viewer-doc',
1212
assetsDir: 'static',
1313
pages: {

doc/router.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,19 @@
22
* @Author: zhanghan
33
* @Date: 2023-01-10 14:28:32
44
* @LastEditors: zhanghan
5-
* @LastEditTime: 2023-01-10 17:43:47
5+
* @LastEditTime: 2023-01-11 11:00:38
66
* @Descripttion:
77
*/
88
import Vue from 'vue'
99
import VueRouter from 'vue-router'
1010
import Home from './views/Home.vue'
11-
// import Start from './views/Start.vue'
11+
import Start from './views/Start.vue'
1212

1313
Vue.use(VueRouter)
1414

1515
export const routes = [
1616
{ path: '/', name: 'Home', component: Home },
17-
// { path: '/start', name: '上手', component: Start },
17+
{ path: '/start', name: '快速上手', component: Start },
1818
{ path: '*', redirect: '/' }
1919
]
2020

doc/views/Home.vue

+6-244
Original file line numberDiff line numberDiff line change
@@ -2,273 +2,35 @@
22
* @Author: zhanghan
33
* @Date: 2023-01-10 14:28:29
44
* @LastEditors: zhanghan
5-
* @LastEditTime: 2023-01-10 20:03:38
5+
* @LastEditTime: 2023-01-11 11:45:47
66
* @Descripttion: 首页
77
-->
88
<template>
99
<div class="page-home page">
10-
<h2>iframe方式示例:</h2>
11-
<h4>推荐独立部署{{ config.name }},并使用iframe方式引入以减少体积</h4>
12-
<h4>
13-
1、需要自行前往本项目源码处下载编译后的产物
14-
<a
15-
href="https://github.com/zyl-ui/vue-file-viewer/tree/master/public/file-viewer"
16-
target="_blank"
17-
>
18-
file-viewer
19-
</a>
20-
<br />
21-
(必须包含file-viewer文件夹,不可重命名,若需要重命名可下载源码重新修改构建)
22-
</h4>
23-
<h4>2、下载后放在项目public文件夹中作为外部公共资源使用</h4>
24-
<h4>* 本项目示例链接随时失效,请勿直接用于生产环境</h4>
25-
<h4>* 被浏览的文件链接必须同源或本身支持跨域访问</h4>
26-
<br />
27-
28-
<h4>一般url传入使用</h4>
2910
<section class="demo">
3011
<div
3112
class="section-content swiper"
32-
style="height: 500px;overflow: hidden;"
13+
style="height: 1000px;overflow: hidden;"
3314
>
3415
<iframe
35-
src="/file-viewer/index.html?fileUrl=https://home.sharecorner.top/fileTest/pdf.pdf"
3616
scrolling="auto"
17+
seamless
18+
src="/file-viewer/index.html?shoHead=true&&fileUrl=https://home.sharecorner.top/fileTest/pdf.pdf"
3719
style="border:0;height: 100%;width:100%"
3820
/>
3921
</div>
4022
</section>
41-
<section class="snippets">
42-
<Collapse>
43-
<div class="section-content">
44-
<CodeSnippet class="snippet" :code="iframeSnippet" lang="html" />
45-
</div>
46-
</Collapse>
47-
</section>
48-
49-
<h4>支持二进制文件流推送</h4>
50-
<section class="demo">
51-
<div
52-
class="section-content swiper"
53-
style="height: 500px;overflow: hidden;"
54-
id="blobIframe"
55-
></div>
56-
</section>
57-
<section class="snippets">
58-
<Collapse>
59-
<div class="section-content">
60-
<CodeSnippet class="snippet" :code="blobIframeSnippet1" lang="html" />
61-
<div class="plus">+</div>
62-
<CodeSnippet class="snippet" :code="blobIframeSnippet2" lang="js" />
63-
</div>
64-
</Collapse>
65-
</section>
66-
67-
<h2>组件方式示例:</h2>
68-
<h4>安装:</h4>
69-
<CodeSnippet class="snippet" :code="installSnippet" lang="js" />
70-
<h4>使用:</h4>
71-
<section class="demo">
72-
<div class="section-content swiper" style="height: 500px;">
73-
<vue-file-viewer :file="file" />
74-
</div>
75-
</section>
76-
<section class="snippets">
77-
<Collapse>
78-
<div class="section-content">
79-
<CodeSnippet class="snippet" :code="componentSnippet1" lang="html" />
80-
<div class="plus">+</div>
81-
<CodeSnippet class="snippet" :code="componentSnippet2" lang="js" />
82-
</div>
83-
</Collapse>
84-
</section>
8523
</div>
8624
</template>
8725

8826
<script>
89-
import axios from 'axios'
90-
import CodeSnippet from '../components/CodeSnippet.vue'
91-
import Collapse from '../components/Collapse.vue'
92-
import { config } from '../config'
93-
94-
const iframeSnippet = `
95-
<iframe
96-
src="/file-viewer/index.html?fileUrl=https://home.sharecorner.top/fileTest/pdf.pdf"
97-
scrolling="auto"
98-
style="border:0;height: 100%;width:100%"
99-
/>
100-
`
101-
102-
const blobIframeSnippet1 = `
103-
<div id="blobIframe"></div>
104-
`
105-
106-
const blobIframeSnippet2 = `
107-
import axios from 'axios'
108-
export default {
109-
data() {
110-
return {
111-
context: {
112-
// 查看器的地址
113-
// 自己项目内部署需要将编译后的产物file-viewer放在public文件夹中使用,编译后的产物需要下载,下载链接在文档上
114-
origin: location.origin + '/file-viewer/index.html',
115-
// 目标frame
116-
frame: null,
117-
// 浏览的文件url
118-
url: 'https://home.sharecorner.top/fileTest/pic.png'
119-
}
120-
}
121-
},
122-
mounted() {
123-
this.loadFromUrl()
124-
},
125-
methods: {
126-
// 获取文件二进制流
127-
loadFromUrl() {
128-
// 要预览的文件地址
129-
var url = this.context.url
130-
// 取得文件名
131-
var filename = url.substring(url.lastIndexOf('/') + 1)
132-
// 拼接iframe请求url
133-
var src =
134-
this.context.origin +
135-
'?name=' +
136-
encodeURIComponent(filename) +
137-
'&from=' +
138-
encodeURIComponent(location.origin)
139-
// 拼接frame
140-
var frame = this.appendFrame(src)
141-
// 绑定事件
142-
frame.onload = () => {
143-
axios({
144-
url,
145-
method: 'get',
146-
responseType: 'blob'
147-
}).then((data) => {
148-
if (!data) {
149-
console.error('文件下载失败')
150-
}
151-
console.log(data)
152-
// 最重要的一步,可以推送流到iframe
153-
frame.contentWindow.postMessage(data.data, this.context.origin)
154-
})
155-
}
156-
},
157-
// 插入iframe
158-
appendFrame(src) {
159-
var blobIframe = document.getElementById('blobIframe')
160-
if (this.context.frame) {
161-
blobIframe.removeChild(this.context.frame)
162-
}
163-
// 构建frame
164-
var frame = (this.context.frame = document.createElement('iframe'))
165-
frame.src = src
166-
frame.style = 'border:0;height: 100%;width:100%'
167-
return blobIframe.appendChild(frame)
168-
}
169-
}
170-
`
171-
172-
const installSnippet = `
173-
import Vue from 'vue'
174-
import App from './App.vue'
175-
import vueFileViewer from '${config.name}'
176-
177-
Vue.use(vueFileViewer)
178-
179-
new Vue({
180-
el: '#app',
181-
render: h => h(App)
182-
});
183-
`
184-
185-
const componentSnippet2 = `
186-
data () {
187-
return {
188-
file: 'https://home.sharecorner.top/fileTest/pdf.pdf' // or 原生 File 文件对象也可以被接收
189-
}
190-
}
191-
`
192-
193-
const componentSnippet1 = `
194-
<vue-file-viewer :file="file" />
195-
`
19627
export default {
19728
name: 'Home',
198-
components: {
199-
CodeSnippet,
200-
Collapse
201-
},
20229

20330
data() {
204-
return {
205-
config,
206-
iframeSnippet,
207-
blobIframeSnippet1,
208-
blobIframeSnippet2,
209-
installSnippet,
210-
componentSnippet2,
211-
componentSnippet1,
212-
file: 'https://home.sharecorner.top/fileTest/word.docx',
213-
context: {
214-
// 查看器的地址
215-
// 自己项目内部署需要将编译后的产物file-viewer放在public文件夹中使用,编译后的产物需要下载,下载链接在文档上
216-
origin: location.origin + '/file-viewer/index.html',
217-
// 目标frame
218-
frame: null,
219-
// 浏览的文件url
220-
url: 'https://home.sharecorner.top/fileTest/pic.png'
221-
}
222-
}
223-
},
224-
mounted() {
225-
this.loadFromUrl()
31+
return {}
22632
},
227-
methods: {
228-
// 获取文件二进制流
229-
loadFromUrl() {
230-
// 要预览的文件地址
231-
var url = this.context.url
232-
// 取得文件名
233-
var filename = url.substring(url.lastIndexOf('/') + 1)
234-
// 拼接iframe请求url
235-
var src =
236-
this.context.origin +
237-
'?name=' +
238-
encodeURIComponent(filename) +
239-
'&from=' +
240-
encodeURIComponent(location.origin)
241-
// 拼接frame
242-
var frame = this.appendFrame(src)
243-
// 绑定事件
244-
frame.onload = () => {
245-
axios({
246-
url,
247-
method: 'get',
248-
responseType: 'blob'
249-
}).then((data) => {
250-
if (!data) {
251-
console.error('文件下载失败')
252-
}
253-
console.log(data)
254-
// 最重要的一步,可以推送流到iframe
255-
frame.contentWindow.postMessage(data.data, this.context.origin)
256-
})
257-
}
258-
},
259-
// 插入iframe
260-
appendFrame(src) {
261-
var blobIframe = document.getElementById('blobIframe')
262-
if (this.context.frame) {
263-
blobIframe.removeChild(this.context.frame)
264-
}
265-
// 构建frame
266-
var frame = (this.context.frame = document.createElement('iframe'))
267-
frame.src = src
268-
frame.style = 'border:0;height: 100%;width:100%'
269-
return blobIframe.appendChild(frame)
270-
}
271-
}
33+
methods: {}
27234
}
27335
</script>
27436

0 commit comments

Comments
 (0)