前段日子業餘時看了下vue,想着怎麼也得寫個實例來加深一下,因而便基於vue構建了一個簡易版豆瓣。因爲工做中使用的並非vue框架,對vue的瞭解也不夠深刻,這也是本人第一次寫技術博文,所以,有紕漏之處還請你們批評指正。javascript
項目地址:github.com/nh0007/vue-…css
項目簡介:本項目主要是基於vue,構建一個簡易版豆瓣,實現將讀書、電影、音樂、同城活動等內容按不一樣類型顯示的功能。html
技術棧:vue + vuex + vue-router + axios + webpack + ES6,本項目使用vue-cli搭建,以vue爲基礎,使用vuex管理數據、vue-router分發路由、axios請求數據。前端
項目背景:本項目界面參考自豆瓣,選擇豆瓣有兩個緣由:一是自己蠻喜歡豆瓣,不管是豆瓣的內容仍是設計;二是豆瓣有較爲詳細的開發文檔,詳情可參見:developers.douban.com/wiki/?title…,這也能使得剛上手vue的朋友也能夠更加專一於vue前端開發。vue
開發環境:node v8.1.2,npm 5.0.3,瀏覽器:Google Chrome 65.0.3325.146/Firefox 58.0.2java
運行項目前,請確保本機已經正確安裝好node環境。node
git clone https://github.com/nh0007/vue-douban.git複製代碼
npm install複製代碼
npm run dev複製代碼
本項目主要分爲四大模塊:讀書、電影、音樂、同城活動,如下是各個模塊的部分截圖:webpack
若是你尚未接觸過vue,能夠先看看vue官方教程,畢竟官方文檔纔是最好的學習資料。若是你對ES6語法還不是很熟,也能夠看看阮一峯老師的ECMAScript 6入門,固然,邊作項目時邊學習纔是最高效的。如下是我本身在本項目的開發流程與思路,僅供參考:ios
vue init webpack vue-douban複製代碼
所以,一開始,咱們先設置好這個頁面的路由,再根據頁面結構大體創建爲三個空的組件,存放在相應位置上,再將路由映射到這些組件上,代碼以下。關於路由的具體設置能夠參見vue-router官方文檔,更多關於路由的設置能夠參見源代碼。git
const BaseHeader = () => import('../components/common/BaseHeader.vue')
const BookTag = () => import('../components/book/BookTag.vue')
const BookTagContent = () => import('../components/book/BookTagContent.vue')
export default new Router({
routes: [
{
path: '/',
redirect: '/book-tag'
},
{
path: '/book-tag'
name: 'bookTag',
components: {
default: BaseHeader,
aside: BookTag,
content: BookTagContent
}
}
]
})複製代碼
以上即是我我的在項目的開發流程,固然只是我的經驗,實際開發中並不必定要按照這個流程進行。
proxyTable: {
'/api': {
target: 'https://api.douban.com',
changeOrigin: true,
pathRewrite: {
'^/api': '/v2'
}
}}複製代碼
經過上述的設置,主要有兩個做用,一個是簡化url,請求時省略前綴,一個是在本機開啓一個服務轉發你的請求,以解決跨域問題,詳情可參見ProxyTable設置,這樣,咱們這樣發送網絡請求:
const actions = {
getCurrentTagBooks ({commit, state}, {count = 10, start = 0, type}) {
axios.get('./api/book/search', {
params: {
tag: state.currentBookTag,
count,
start
}
})
.then(response => {
commit(types.SET_TAG_BOOKS, {books: response.data.books, type})
commit(types.SET_CURRENT_TAG_BOOKS, {books: response.data.books, type})
})
}
}複製代碼
<img :src="music.image" class="music-image" referrerpolicy="no-referrer>複製代碼
因爲使用vue並很少,且本項目完成也較匆忙,因此項目存在不足之處或者哪些功能有更好的實現還請你們指出,我好學習改正,固然我本身也列舉了項目的一些不足:
這是本人第一次寫技術博客,仍是有些戰戰兢兢,寫的很差的地方,因此還請你們多批評指正。另外,歡迎向star本項目哦~