VUE系列---VUE+indexDB+JSZip+在線預(yù)覽zip壓縮文件(一)

推薦我的vue教程:VUE系列教程目錄

如果說上面的溫馨連接提示,帶你們進(jìn)入了VUE的大門,那么,今天我們就玩一個絕活,在網(wǎng)頁端使用VUE框架配合indexDB數(shù)據(jù)庫來實(shí)現(xiàn)zip文件的在線預(yù)覽,這個功能對于VUE的要求不高,但是對于你前端的知識的考量卻是上等甚至是頂尖級別的邏輯思維。所以我得手把手的教會你們,請做好被虐的準(zhǔn)備。

溫馨連接提示:vue中級之路篇系列教程:
VUE系列---VUE+indexDB+JSZip+在線預(yù)覽zip壓縮文件(一)
VUE系列---VUE+indexDB+JSZip+在線預(yù)覽zip壓縮文件(二)
VUE系列---VUE+indexDB+JSZip+在線預(yù)覽zip壓縮文件(三)

前言

這里我準(zhǔn)備了幾個東西,需要大家在開始前進(jìn)行相關(guān)的操作:

首先我的項(xiàng)目是存放在github上的,各位要是學(xué)習(xí)的話請安裝git這個版本控制器,如果不知道github是干什么的怎么用的,請參考完我的博客:git+github的使用-最簡單的入門教程,再來練這個項(xiàng)目,因?yàn)間it是每個開發(fā)者必須會的,如果你不懂git,那么你永遠(yuǎn)都不知道團(tuán)隊開發(fā)為何物。我的github的項(xiàng)目是:VUE在線預(yù)覽zip壓縮文件。或者你使用我的百度云盤:VUE在線預(yù)覽zip壓縮文件,但是我不保證我會實(shí)時更新百度云盤所以請盡量使用git。

創(chuàng)建一個文件夾,然后打開你的git,執(zhí)行

git clone https://github.com/nongshuqiner/VUEOnlineZIP.git

然后執(zhí)行npm install,這個有些慢,要耐心等待。

如果特別慢,ctrl + c暫停它,使用上淘寶鏡像安裝

npm install -g cnpm --registry=http://registry.npm.taobao.org

完后繼續(xù)執(zhí)行npm install,安裝完成以后,不能執(zhí)行npm run dev,因?yàn)闀箦e(當(dāng)然你可以先試試執(zhí)行npm run dev,如果沒有報錯則無視下面),報錯了是因?yàn)闆]有安裝上node-sass,所以先執(zhí)行:

cnpm install node-sass -D

等安裝上node-sass,再執(zhí)行npm run dev

如果跑起來了沒有報錯,則證明初始項(xiàng)目的構(gòu)建已經(jīng)完成了。

項(xiàng)目簡單描述

我們需要實(shí)現(xiàn)VUE在線預(yù)覽zip壓縮文件,在開始做之前,得先想我們要做成什么樣子?都有什么功能?我們是用什么樣的實(shí)現(xiàn)方式?

這里我們一起發(fā)揮思維:

  1. 請求問題:應(yīng)該是通過接口請求需要預(yù)覽的zip壓縮文件,但是我們做的例子是本地的,那就地本地請求(當(dāng)然可以API網(wǎng)上請求啦)。

  2. 讀取問題:請求到zip壓縮文件然后該怎么辦?因?yàn)閴嚎s文件比較大,所以我們不能直接在網(wǎng)頁上進(jìn)行解析,不然網(wǎng)頁就會崩潰,嚴(yán)重的電腦都會死機(jī),這樣的話我們得有一種方式把它暫時存儲起來,然后進(jìn)行需要的信息的分批渲染,大伙一定會問用什么把它暫時存起來?分批渲染怎么弄?這里我使用的存儲方式是indexDB(一個html5出現(xiàn)的本地存儲方式)和localStorage,大伙如果不明白這是什么東西該怎么用,可以去看看我的博客:web前端-在迷惘中的探索HTML5(二)本地存儲之IndexDB,不然下面使用到它你們會措手不及的。關(guān)于分批渲染因?yàn)槭菈嚎s文件在線預(yù)覽,所以我們的項(xiàng)目要做的肯定是有目錄的,既然有目錄,我在渲染時只需要先把目錄信息讀出來,予以展示,而里面的具體的比如圖片啊,表格啊,我們在具體需要展示的時候再進(jìn)行讀取。

  3. 目錄構(gòu)建問題:說到這大家一定會問,那目錄怎么構(gòu)建呢?這里我給大家附上項(xiàng)目完成后的截圖大家先看看我們的需求,然后后面我再具體的需要應(yīng)用時進(jìn)行說明,如圖:




看完項(xiàng)目完成后的截圖,大伙肯定興趣倍增,躍躍欲試,那么就開始吧

項(xiàng)目的準(zhǔn)備工作

安裝我們需要的包

餓了么組件

我們需要使用到eleme餓了么組件:餓了么組件

進(jìn)入我放置的連接我們就進(jìn)入到餓了么組件的官網(wǎng),如圖:

我們對其進(jìn)行安裝:

npm i element-ui -S
jszip壓縮包工具

安裝完eleme餓了么組件包后,我們還需要壓縮包分析工具:jszip。因?yàn)檫@個網(wǎng)站是英文的我也看不懂,所以英語好的去嘗試嘗試看看。

后面我們會對它進(jìn)行詳解,這里我們只需要安裝它的包,進(jìn)入淘寶npm鏡像,然后在里面搜jszip,然后出來一堆,如圖:

我們進(jìn)入左邊第一個,進(jìn)去后看看,如果你看到的包含如下信息:

然后就通過它提示的命令進(jìn)行安裝:

cnpm install jszip
store一種本地localStorage管理包

我們即使用localStorage,也使用store.js來進(jìn)行本地存儲。

cnpm install store -D

到此我們需要的包就安裝完成了

構(gòu)建我們的目錄,初始化我們的頁面

首先把我們的目錄構(gòu)建成下面圖片的樣子:

然后修改config/routes.js,把它變?yōu)椋?/p>

// 子路由索引
import childrouter from '../frame/childrouter.vue'
// zip壓縮下載預(yù)覽
import property from '../page/property/index.vue'
// zip壓縮下載預(yù)覽
import uploadreview from '../page/property/upload_review.vue'
import uploadreviewdetails from '../page/property/upload_review_details.vue'
import uploadreviewfile from '../page/property/upload_review_file.vue'

// 配置路由
export default [
  {
    path: '/',
    component: property
  },
  { // zip壓縮下載預(yù)覽
    path: '/property/',
    component: childrouter,
    children: [
      {path: 'uploadreview', component: uploadreview}, // zip壓縮下載預(yù)覽
      {path: 'uploadreviewdetails', component: uploadreviewdetails}, // zip壓縮下載預(yù)覽深入
      {path: 'uploadreviewfile', component: uploadreviewfile} // zip壓縮下載預(yù)覽文件
    ]
  }
]

開始初始化我們的頁面,修改App.vue

<template>
  <div id="app">
    <!-- 路由出口 -->
      <!-- 路由匹配到的組件將渲染在這里 -->
    <router-view class="view" keep-alive transition transition-mode="out-in"></router-view>
  </div>
</template>

<script>
export default {
  name: 'app'
}
</script>

<style lang="scss">
  @import "./style/style";
</style>

再修改frame/childrouter.vue,把它變?yōu)椋?/p>

<template>
  <div>
      <router-view></router-view>
  </div>
</template>

<script>
export default {
  components: {
  }
}
</script>

修改page/property/index.vue,把它變?yōu)椋?/p>

<template>
  <div>
    <router-link class="more_icon" :to="'property/uploadreview'">
      <el-button type="primary">在線預(yù)覽</el-button>
    </router-link>
  </div>
</template>
<script>
export default {
}
</script>

/page/property/upload_review.vue文件變?yōu)?/p>

<template>
  <div>
    upload_review
  </div>
</template>
<script>
export default {
}
</script>

/page/property/upload_review_details.vue文件變?yōu)?/p>

<template>
  <div>
    upload_review_details
  </div>
</template>
<script>
export default {
}
</script>

/page/property/upload_review_file.vue文件變?yōu)?/p>

<template>
  <div>
    upload_review_file
  </div>
</template>
<script>
export default {
}
</script>

到了這里初始化我們的頁面,構(gòu)建我們的項(xiàng)目就完成了,我們打開頁面,打開控制臺,發(fā)現(xiàn)竟然有個錯誤,如圖:

這是因?yàn)槲覀儧]有引入餓了么組件,于是打開mian.js,在里面添加上這句話:

// 引用ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
Vue.use(ElementUI)

既然餓了么組件得引用,那么store本地存儲也得引入

// 引入本地存儲
import store from 'store'
Vue.prototype.$store = store

mian.js就變成了這樣:

// 1.引用 vue 沒什么要說的
import Vue from 'vue'
// 3.引用路由
import VueRouter from 'vue-router'
// 光引用不成,還得使用
Vue.use(VueRouter)
// 2.入口文件為 src/App.vue 文件 所以要引用
import App from './App.vue'
// 4.引用路由配置文件
import routes from './config/routes'
// 5.引用API文件
import api from './api/api'
// 6.將API方法綁定到全局
Vue.prototype.$api = api
// 使用配置文件規(guī)則
const router = new VueRouter({
  routes
})

// 引入本地存儲
import store from 'store'
Vue.prototype.$store = store

// 引用ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
Vue.use(ElementUI)

/* eslint-disable no-new */
new Vue({
  router,
  el: '#app',
  render: (h) => h(App)
})

你的頁面上的餓了么組件的效果就會顯示出來,如圖:

至此項(xiàng)目的準(zhǔn)備工作也就完成了,接下來就是挽起胳膊干大活了

項(xiàng)目實(shí)戰(zhàn)前言

由于我們要用到:JSZip,以及store.js,所以希望各位小伙伴在項(xiàng)目開始前好好的看看這兩個的使用,然后為我們的實(shí)戰(zhàn)做好準(zhǔn)備。

如果有看不懂的地方可以在評論區(qū)里@我,本來打算一次性的獻(xiàn)上,但是考慮到有些懶惰的人拿我的東西招搖撞騙,于是決定暫時推遲一下,同時大家也想想如果是你們,你們會怎樣做,先去踩踩坑,不踩坑的程序員不是好程序員,等你們踩坑了,我再告訴你們究竟怎么做,這樣才能鍛煉你們自己的思維。

重要說明:就在這兩天我會把實(shí)戰(zhàn)慢慢的教授給大家,請耐心等待。

提示:在最近幾天我會慢慢附上VUE系列教程的其他后續(xù)篇幅,后面還有精彩敬請期待,請大家關(guān)注我的專題:web前端。如有意見可以進(jìn)行評論,每一條評論我都會認(rèn)真對待。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內(nèi)容