实现的功能:
基于vue.js的知识点(webpack,Vuex,Vue-router)开发电商网站项目,实现的功能包括:商品列表按照价格、销量排序;商品列表按照品牌、价格过滤;动态的购物车,使用优惠码等。
main.js:
路由配置(router),使用History路由模式
状态管理(Vuex,store),设置了state、getters、mutations、actions
router.js
路由的页面配置放在router.js文件内单独维护,设置了list(默认页面)、product/:id、cart的路由列表。
style.css
全局使用的CSS样式,在main.js中导入(import './style.css'),每个vue文件scoped的样式一同提取输出到main.css文件。
plugins:[
//重命名提取后的css文件
new ExtractTextPlugin({
filename:'[name].css',
allChunks:true
}),
//vue-loader在15.*后的版本需要伴生VueLoaderPlugin的,否则启动报错
new VueLoaderPlugin()
]
项目根目录下views目录下放置每个路由页面的.vue文件;components目录存放公共组件(product.vue定义了每个产品框的内容);images目录存放项目用到的照片。
1.模块拆分:
商品列表(list)用于展示相关的所有商品,具有筛选和排序两种过滤方法;筛选条件可以叠加,可以按照价格、销量等在筛选的基础上进行排序,最终筛选出符合要求的商品。
排序为单选,初始按“默认”进行排序,价格可分为升序和降序两种排序,销量按照降序;品牌和颜色为单选,单次点击选中,再次点击取消选中;
初次打开商品列表页请求一次远程数据(用setTimeout模拟异步,真实场景通过Ajax获取),获取到全部的商品数据,然后筛选和排序在本地完成。
商品列表主要有两个模块,路由组件(views/list.vue),负责数据的请求、过滤相关的逻辑;商品简介组件(components/produce.vue,每个商品卡片),鼠标划过时,显示“加入购物车”的按钮;两个模块的样式都直接写在各自vue文件的