前段日子业余时看了下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本项目哦~