# aicodeVue
**Repository Path**: bugpress/aicodeVue
## Basic Information
- **Project Name**: aicodeVue
- **Description**: nodejs+koa2
- **Primary Language**: NodeJS
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2018-07-25
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# aicode
> A Vue.js project
## Build Setup
``` bash
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
# run unit tests
npm run unit
# run e2e tests
npm run e2e
# run all tests
npm test
```
For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
个人解释说明:
1.初始化项目之后,安装Vant:npm install vant --save,引入:npm install babel-plugin-import --save-dev,在.babelrc中配置plugins(插件)
"plugins": [
"transform-vue-jsx",
"transform-runtime",
["import",{"libraryName":"vant","style":true}]
]
之后再main.js中引用需要的组件:
import {Button} from 'vant'
Vue.use(Button)
2.移动端的适配器:移动端用Rem + JavaScript完成屏幕适配的方法
3.首页布局和路由设置:meta标签进行设置,加入user-scalable=no不能缩放页面大小
4.首页轮播图:加载Swipe组件,利用Vant实现图片轮播的懒加载->Lazyload
5.easyMock(生成模拟数据)和Axios的使用:npm install --save axios
6.首页商品分类栏的布局:flex布局
7.广告banner的布局,改造swpie组件
8.商品推荐vue-awesome-swiper:npm install vue-awesome-swiper --save,重要!!!
①vue-awesome-swiper详解,封装好后,可以引用到需要的页面:import swiperDefault from '../swiper/swiperDefault',然后注册组件:components:{swiper,swiperSlide,swiperDefault},注册好后直接在使用:
②添加分页器,需要在swiper标签上使用options属性来进行配置:在data里面设置:swiperOption:{
pagination:{
el:'.swiper-pagination'
}
}
然后在template标签里加入一个div用于显示分页器,注意的是要在swiper-slide外层。
最后是在swiper标签里加入 :options="swiperOption"。就实现了有分页期的效果。
9.首页楼层区域布局:组件的封装
10.过滤器:针对小数,@代表的是src目录的意思,这个是webpack的配置,我们可以在/build/webpack.base.conf.js里找到这个配置项
11.首页热卖模块的van-list组件使用
12.编写后端服务接口配置文件
13.安装koa2
npm init -y初始化
npm install --save koa安装
安装MongoDB
完成之后进行连接,再执行npm install mongoose --save 安装mongoose
编写数据库连接配置init.js
14.数据库连接增加Promise支持:我们在作这个init.js文件时,必须确保先连接数据库后,再作其他事情,所以我们需要在所有代码的外层增加一个Promise。return new Promise((resolve,reject)=>{
//把所有连接放到这里
})
15. Mongoose的Schema建模介绍:Schema相当于MongoDB数据库的一个映射,Schema是以key-value形式Json格式的数据,Mongoose中的三个概念
schema :用来定义表的模版,实现和MongoDB数据库的映射。用来实现每个字段的类型,长度,映射的字段,不具备表的操作能力。
model :具备某张表操作能力的一个集合,是mongoose的核心能力。我们说的模型就是这个Mondel。
entity :类似记录,由Model创建的实体,也具有影响数据库的操作能力。
步骤:创建Schema->载入Schema和插入查出数据(载入所有Schema
直接在service\init.js 先引入一个glob和一个resolve)glob:node的glob模块允许你使用 * 等符号,来写一个glob规则,像在shell里一样,获取匹配对应规则文件。
resolve: 将一系列路径或路径段解析为绝对路径。
16.安全的用户密码加密机制:npm install --save bcrypt --registry=https://registry.npm.taobao.org
17.注册页面的vue模板编写
18.Koa2的用户操作的路由模块化:安装koa-router(npm install koa-router --save)
19.注册用户的前后端通讯:安装koa-bodyparser中间件(npm install --save koa-bodyparser),koa2支持跨域请求:安装koa2-cors中间件,在koa2里解决跨域的中间件叫koa2-cors,进行安装npm install --save koa2-cors,注意bodyParser用法错误的用法const bodyParser = require('koa-bodyparser')
app.use(bodyParser())或者app.use(bodyParser)
20.用户注册数据库操作:Koa2的User.js 接口的完善,引入数据库,前端的业务逻辑判断
21.注册的防重复提交:按钮上绑定loading属性
22.注册时的前端验证:写前端验证,重写注册方法和绑定按钮事件
23.vue的登录界面制作和路由的配置和登录接口的编写
24.登录的前端交互效果制作和登录状态存储
25.商品详细数据的提纯操作:重点node的fs模块
26.批量插入商品详情数据到MongoDB中
27.商品大类的Shema建立和导入数据库
28.批量导入数据完毕
29.编写商品接口
30.完善有关商品的页面以及跳转
31.商品详情的页面模板编写
32.补充商品详细页的滑动切换和吸顶效果:通过van-tabs里的swipeable属性就可以开启滑动切换tab页的效果,通过van-tabs里的sticky 属性可以开启吸顶效果,也叫粘性布局,当Tab滚动到顶部时会自动吸顶。
33.商品列表页,获取数据和交互效果,以及一级栏目和二级栏目的联动
34.商品列表页上拉加载效果的实现
35.商品列表页下拉刷新效果的实现,引入Vant中的PullRefresh组件
36.商品类别分类的Koa2分页服务
37.商品数据上拉加载效果和商品详细数据的获取
38.真实数据的下拉刷新效果
39.Vue中图片失效替补图片的制作方法
40.商品列表页编程式导航的制作
知识点:params和query传参的用法
params传参,路径不能使用path,只能使用name,不然取不到传的数据:this.$router.push({name:'Goods',params:{goodsId:id}})
取数据时用params获取:this.$route.params.goodsId
query传参,用的是path,而不是name,否则也会出错:this.$router.push({path:'/Goods',query:{goodsId:id}})
数据使用query:this.$route.query.goodsId
41.购物车页面的的建立:主要知识点在H5新增localStorage本地存储
进入页面要作的第一件事就是取得localStorage里的数据,我们先在data里注册两个属性cartInfo(购物车中商品的信息)和isEmpty(购物是否为空的标识,方便页面呈现),然后再编写具体的getCartInfo()方法
42.购物车中商品的添加
43.显示购物车,清空购物车