摘要:從之前黃軼老師的高仿外賣開始接觸過這個滾動庫,感覺體驗感很好,用起來也比較順手,所以在后來的項目聯(lián)系中就一直在使用。
前言
雖然在此之前已經(jīng)有類似的仿豆瓣電影的webapp,但或是開發(fā)的有些簡潔功能不太完善,或是體驗感覺得可以再完善下,所以自己摸索著對比豆瓣和豆瓣電影兩款app做了一下,初步滿足了自己的想法,經(jīng)過幾次完善基本不會出現(xiàn)bug,如果發(fā)現(xiàn)存在問題請告訴我修改,謝謝!
2017/7/27 一點小更新:發(fā)現(xiàn)只有建軍大業(yè)這部電影的詳情無法查看,原因是這部電影豆瓣返回的電影id存在問題,導(dǎo)致服務(wù)器返回 movie_not_found,點了這部電影發(fā)現(xiàn)報錯了整個人都不好了,解決方案就是看豆瓣會不會修復(fù)這個問題 :(
項目簡介使用vue2.0仿豆瓣電影app,根據(jù)豆瓣電影api對功能作了適當修改
api來源自豆瓣官方api,詳情請戳豆瓣電影api
項目源碼:請戳 github
線上體驗 PC訪問求star,如果對您有幫助,可以在github上點右上角 "Star" 支持一下 謝謝! ^_^
豆瓣電影webapp
打開瀏覽器進入開發(fā)者模式,選擇移動端視口
chrome瀏覽器下的iphone5/6/6 plus體驗效果更佳
移動端訪問打開手機瀏覽器掃描下方二維碼或訪問上面的地址,推薦全屏模式下體驗
項目運行clone項目源碼
git clone https://github.com/buptsky/vue-douban-movie.git
安裝依賴
cd vue-douban-movie npm install
運行
npm run dev
打開瀏覽器進入localhost:8000,在開發(fā)者工具的移動端模式下查看效果
運行環(huán)境node 6+ npm 4+
部分效果演示 上映電影信息和電影詳情vue2.0 + vue-router + vuex:vue全家桶
axios:用于ajax請求
vue-lazyload:用于圖片懶加載
better-scroll:移動端滾動庫,優(yōu)化移動端滾動效果
webpack: 構(gòu)建工具
es6: 使用es6語法
stylus: css預(yù)處理
使用flex布局進行移動端適配,用eslint進行代碼規(guī)范檢查
使用localStorage存儲收藏的電影信息,影人信息,評論點贊信息
webpack + webpack-dev-server + http-proxy-middleware進行本地開發(fā)環(huán)境http請求轉(zhuǎn)發(fā),實現(xiàn)跨域請求
線上使用express的http-proxy-middleware實現(xiàn)請求轉(zhuǎn)發(fā)
功能實現(xiàn) 上映電影部分獲取正在上映的電影信息和即將上映電影的信息
電影信息滾動(底部)加載提高響應(yīng)速度
排行部分獲取所有可以從豆瓣api得到的排行榜
查看排行榜詳細,在排行榜中查看具體電影詳細
搜索部分支持用戶根據(jù)關(guān)鍵字搜索
支持用戶根據(jù)給出標簽進行標簽搜索(與輸入與標簽相同的關(guān)鍵字進行搜索不同)
根據(jù)搜索結(jié)果查看電影詳情
查看搜索歷史
電影詳情部分獲取電影所有的基礎(chǔ)信息和評分信息
獲取電影的短評和長評,可查看該電影所有短評長評
將電影標記為想看/看過
影人信息部分獲取影人基本信息
查看影人作品詳細
用戶中心部分查看收藏的影人
查看想看的電影
查看看過的電影
關(guān)于瀏覽器跨域 開發(fā)環(huán)境項目通過vue腳手架vue-cli進行配置,可在"config/index"目錄下進行如下配置
proxyTable: { "/v2": { target: "http://api.douban.com", changeOrigin: true, pathRewrite: { "^/v2": "/v2" } } }
參數(shù)里中的changeOrigin,接收一個布爾值,如果設(shè)置為true,那么本地會虛擬一個服務(wù)端接收你的請求并代你發(fā)送該請求,這樣就不會有跨域問題了
vue-cli的這個設(shè)置來自于其使用的插件http-proxy-middleware
服務(wù)器端配置
const express = require("express"); const proxy = require("http-proxy-middleware"); const app = express(); app.use("/static", express.static(`${__dirname}/static`)); app.use("/v2", proxy({ target: "http://api.douban.com", changeOrigin: true, })); app.get("/*", (req, res) => { res.sendFile(`${__dirname}/index.html`); }); app.listen(8000);
本質(zhì)上都是通過使用"http-proxy-middleware"中間件實現(xiàn)代理
關(guān)于移動端滾動庫better-scrollbetter-scroll 是一個移動端滾動的解決方案,它是基于 iscroll 的重寫,它和 iscroll 的主要區(qū)別在這里。better-scroll 也很強大,不僅可以做普通的滾動列表,還可以做輪播圖、picker 等等。
從之前黃軼老師的高仿elem外賣app開始接觸過這個滾動庫,感覺體驗感很好,用起來也比較順手,所以在后來的項目聯(lián)系中就一直在使用。
推薦大家也嘗試一下:)
滾動的原理時父容器有固定的高度。父容器的第一個子元素,它的高度會隨著內(nèi)容的大小而撐高。當內(nèi)容的高度不超過父容器的高度,是不能滾動的,而它一旦超過了父容器的高度,我們就可以滾動內(nèi)容區(qū)了,這就是better-scroll 的滾動原理。
可以通過黃軼老師的這篇文章具體了解下:當 better-scroll 遇見 Vue
better-scroll的github地址戳:better-scroll
項目布局如果您不想在項目中使用better-scroll,也可以將相關(guān)代碼進行替換,如取消一些為了實現(xiàn)scroll組件使用的css的絕對/固定定位,頁面的滾動的數(shù)據(jù)獲取采用原生方式獲取或使用其他庫等,重構(gòu)成本不會很大。
├─build // webpack配置文件 ├─config // 項目開發(fā)環(huán)境配置相關(guān)代碼 ├─screenshots // 項目截圖 ├─src // 源碼目錄 │ ├─api ? ? ? ? ? ? ? ? ? ? // axios請求,獲取項目數(shù)據(jù) │ ├─base ? ? ? ? ? ? ? ? ? ? // 項目基礎(chǔ)組件 │ │ ├─confirm ? ? ? ? ? ? ? // 確認框組件 │ │ ├─history-list ? ? ? ? // 歷史記錄列表組件 │ │ ├─loading ? ? ? ? ? ? ? // 初始加載過渡組件 │ │ ├─loadmore ? ? ? ? ? ? // 加載更多組件 │ │ ├─scroll ? ? ? ? ? ? ? // 頁面滾動組件 │ │ ├─search-box ? ? ? ? ? // 搜索框組件 │ │ ├─star ? ? ? ? ? ? ? ? // 星級評分組件 │ │ └─switches ? ? ? ? ? ? // 選項卡組件 │ ├─common ? ? ? ? ? ? ? ? ? // 公共資源 │ │ ├─fonts ? ? ? ? ? ? ? ? // 圖標字體 │ │ ├─image ? ? ? ? ? ? ? ? // 圖片資源 │ │ ├─js ? ? ? ? ? ? ? ? ? // 公共方法 │ │ └─stylus ? ? ? ? ? ? ? // css樣式 │ ├─components ? ? ? ? ? ? ? // 業(yè)務(wù)組件 │ │ ├─all-discussion ? ? ? // 全部評論組件 │ │ ├─celebrity-detail ? ? // 影人詳情組件 │ │ ├─celebrity-info ? ? ? // 影人基礎(chǔ)信息組件 │ │ ├─celebrity-list ? ? ? // 影人列表組件 │ │ ├─celebrity-works ? ? ? // 影人作品組件 │ │ ├─movie-comment ? ? ? ? // 電影短評組件 │ │ ├─movie-detail ? ? ? ? // 電影詳情組件 │ │ ├─movie-info ? ? ? ? ? // 電影基礎(chǔ)信息組件 │ │ ├─movie-list ? ? ? ? ? // 電影列表組件 │ │ ├─movie-review ? ? ? ? // 電影長評組件 │ │ ├─movie-show ? ? ? ? ? // 主頁上映電影組件 │ │ ├─rank ? ? ? ? ? ? ? ? // 排行組件 │ │ ├─rank-detail ? ? ? ? ? // 排行詳情組件 │ │ ├─rank-list ? ? ? ? ? ? // 排行列表組件 │ │ ├─review-detail ? ? ? ? // 電影長評詳情組件 │ │ ├─search ? ? ? ? ? ? ? // 電影搜索組件 │ │ ├─suggest ? ? ? ? ? ? ? // 搜索結(jié)果組件 │ │ ├─tab ? ? ? ? ? ? ? ? ? // 主頁tab欄組件 │ │ └─user-center ? ? ? ? ? // 用戶中心組件 │ ├─router ? ? ? ? ? ? ? ? ? // vue-router路由管理 │ └─store ? ? ? ? ? ? ? ? ? // vuex狀態(tài)管理 └─staticTip
在config文件下的webpack.base.conf.js 里我配置了一些別名方便組件引入
resolve: { extensions: [".js", ".vue", ".json"], alias: { // 配置別名 "src": resolve("src"), "common": resolve("src/common"), "components": resolve("src/components"), "base": resolve("src/base") } }
所以在引入組件的時候沒有加相對路徑,如不想更改直接使用相對路徑找到引用的文件就好了,這里說一下避免出現(xiàn)問題浪費不必要的時間
最后編輯于 2017/7/28 22:52
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84234.html
摘要:前言一直想做一個系統(tǒng)性的項目,后來看到豆瓣有個開源的,所以我就模仿豆瓣的電影顯示界面做了幾個界面,目前還在持續(xù)的開發(fā)中,本人是個小白請各位大大指教呀使用的技術(shù)棧后面打算把換成現(xiàn)在正在了解相關(guān)的知識。。。。 前言 一直想做一個系統(tǒng)性的項目,后來看到豆瓣有個開源的api,所以我就模仿豆瓣的電影顯示界面做了幾個界面,目前還在持續(xù)的開發(fā)中,本人是個小白~請各位大大指教呀 使用的技術(shù)棧 vue ...
摘要:很多小伙伴練手都會去仿寫豆瓣電影或者網(wǎng)易云音樂,所以,這回干脆把兩個集合起來,具體長什么樣,請各位看預(yù)覽或下面圖片啦。怎么折騰法呢比如豆瓣部分我使用了,網(wǎng)易云部分則沒有,網(wǎng)易的組件則是自己造的輪子,當然在實際開發(fā)中肯定不會這么搞啦。。 很多小伙伴練手都會去仿寫豆瓣電影或者網(wǎng)易云音樂,所以,這回干脆把兩個集合起來,具體長什么樣,請各位看預(yù)覽或下面圖片啦。 目的: 做這個項目最主要的目的是...
摘要:前言本文的前身是源自上的項目但由于該項目上次更新時間為年月日,很多內(nèi)容早已過期或是很多近期優(yōu)秀組件未被收錄,所以小肆今天重新更新了內(nèi)容并新建項目。提交的項目格式如下項目名稱子標題相關(guān)介紹如果收錄的項目有錯誤,可以通過反饋給小肆。 前言 本文的前身是源自github上的項目awesome-github-vue,但由于該項目上次更新時間為2017年6月12日,很多內(nèi)容早已過期或是很多近期優(yōu)...
閱讀 810·2021-11-22 15:25
閱讀 1408·2021-09-08 09:45
閱讀 1685·2021-09-02 09:46
閱讀 1299·2019-08-30 15:56
閱讀 1528·2019-08-29 15:14
閱讀 1159·2019-08-29 13:06
閱讀 2010·2019-08-29 12:34
閱讀 1400·2019-08-26 12:14