# waimai
**Repository Path**: gitPythonchao/waimai
## Basic Information
- **Project Name**: waimai
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-07-22
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
前言
后台是从网上down下来的,接口里面有一部分,另一部分是用mock模拟。
这一份非常详细的从头到尾的笔记是自己一个一个字敲出来的,碰到的各种坑,以及如何解决的,没有依赖任何人(身边也没有前端相关的人),都是通过搜索引擎去解决每一个坑。
### 最新上传了服务器:
根目录有一个vue-take-server.rar,解压到磁盘其它目录后运行npm start,开启服务器,默认3000端口。
### 项目启动
下载下来后,运行
```
npm i //安装依赖
```
然后在根目录运行
```
npm run dev //启动项目,默认8080端口。
```
登陆账号为abc,密码为123
**如果觉得对你有参考帮助的价值,请点亮一颗星星**
**最近很多同学通过b站给我留言问问题,不能及时回复,放上我的qq 306444399 ,虽然平时很忙也不能保证及时回复沟通,但是尽量吧**
**另外学习完vue的同学,可以跟着我一起用微信小程序原汁原味还原网易云音乐,[项目链接点这里](https://github.com/PsychicHira/wangyiyunMusic),如果觉得小程序的项目也不错,也请您点个星吧,O(∩_∩)O~~**
### 项目预览:
一个仿外卖的vue单页应用程序Web App(spa),包含常见的功能



# 技术选型与项目结构
## 技术选型

## 路由

## 项目结构
vue-take

# 项目一些准备与说明
## 项目测试与打包发布
1. gshop-client_blank文件到项目文件(vue-take)下
2. 修改gshop-client_blank文件名称为gshop-client
3. 将gshop-client中的package.json里的"name": "gshop"改为自己的项目名称vue-take
4. 在此文件夹中的config文件夹中修改index.js里的autoOpenBrowser属性改为true,这样在运行时就会自动打开网页
开发环境打包运行
在gshop-client路径的cmd命令行中运行npm run dev打包
生产环境打包运行
1. 在gshop-client路径的cmd命令行中运行npm run build打包,然后文件目录会生成一个dist文件夹,就是打包压缩可以上线的文件
2. 下载serve(应该是个包),npm install -g serve
3. 在gshop-client文件夹中运行serve dist,就可以访问5000端口(这里报错了,页面显示找不到path,因为端口被占用,把其它东西都关了即可)
## 关于字体图标
1. 阿里巴巴去加入购物车(svg格式)
2. 在index.html中添加link标签
3. 把购物车中的整体链接粘贴到link标签中
4. 通过类名来使用
5. 要使用2个类名,第一个是icon-font好像,第二个就是字体的类名
## 创建git相关
1. 在项目目录中使用git bash 初始化git
git init
1. 设置全局签名
git config --global user.name hira_glb git config --global user.email 306444399@qq.com //查看签名使用命令 cat ~/.gitconfig
1. 将目前的项目初始放进git暂存区、本地库
```
git add . //存入暂存区
git commit -m "初始化项目结构" //存入本底库
```
1. 创建git分支,名为dev,并移动到分支处进行开发
git branch dev //查看分支 git branch -v 绿色代表当前分支 git checkout dev
1. 创建SHH
```
$ ssh-keygen -t rsa -C warden_spirit@163.com //QQ邮箱不能用 文件名和密码都是Aa5604551 7v+iujB+XcNymkI86GkEuZ/MK1oh0qMwWxEdt37y+Oo (不知道做什么用,先复制) // 这里碰见坑,原因是要把c盘用户里面的.ssh文件夹全部删除,重新生成,不然连接不上 // 在生成ssh的时候,文件名密码之类的,全部enter,尤其不能设置文件名,坑死人个b了
```
1. 目录中会生成Aa5604551.pub,把内容粘贴到github中,关联SSH
2. 创建git远程库,在github中new project,名为vue-take
3. 创建远程地址别名
```
git remote add vue-take git@github.com:PsychicHira/vue-take.git
```
4. 把项目推送到git中
```
git push vue-take master
```
# 项目开始
## 安装stylus
```
cnpm install stylus -D
cnpm install stylus-loader -D
```
- 测试
把App.vue文件的style里面加上 lang="stylus" ,启动npm run dev ,完美运行
根据目录结构创建底部和路由的vue文件
## 公共样式文件(共用样式)
1. 按项目目录重新创建
2. 在common中创建stylus文件夹,创建mixins.styl
3. 在vue模版中,给style增加 lang="stylus" rel="stylesheet/stylus"
4. 在static文件夹中创建style文件夹,创建reset.css
## 创建基本文件让项目可以运行
1. 创建App.vue和main.js
> *遇到问题*:
>
> > 此时遇到坑,npm run dev 启动不了,提示没有没有stylus模块,这个时候cnpm i,提示包都装全了
> >
> > 再次启动,页面提示Cannot GET /
> >
> > 搜索:
> >
> > *解决问题:*
> >
> > 最后发现了是
> >
> > ```
> >
> > ```
> >
> > 的问题,缺少loader,先删除之
1. 成功启动了项目(要先安装stylus)
## index.html的移动端配置
- viewport
```html
```
- 解决0.3s延时
在head标签上面添加
```javascript
```
## 路由搭建
### 思路重点(自己需要感受的逻辑)
1. main.js 是主入口文件
2. App.vue 文件作为大的外层架子,所有的内容都在app.vue 上面呈现。
3. main.js 的 el 控制 index.html
4. main.js 引入 App.vue 文件,实例化一个Vue
5. 通过 render ,让 App.vue 的内容 ,全替换掉 index.html 里 ID 为 app 的 div 区域
6. App.vue 里面,自然要把路由的 view 放进去了
### 安装
```
npm install vue-router
```
### 引入(在main.js)
```javascript
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import router from './router/router.js'
tips:
//挂载到实例上
//一旦配置了router
//就多了2个标签和2个属性
//router-view router-link
//$route $router
//怎么用法要复习
```
### 配置路由
(在 router.js 中引入路由模版,很简单就不说了)
### App.vue
分析:
1. 页面由2个部分组成,上面是路由,下面的底部导航
2. 引入底部vue文件,挂载到conponents属性中
> tips
>
> 如果初始化的时候已经选了严格模式那应该怎么办,这样难不倒我啦!
>
> 直接把config/index.js里面的dev属性,useEslint设置为false
## 组件FooterGuide.vue
这是App底部的导航,使用mui框架
1. 安装mint-ui
```javascript
cnpm install mint-ui -S
```
2. 在main.js中引入全部组件
```javascript
// 引入全部组件
import Vue from 'vue';
import Mint from 'mint-ui';
Vue.use(Mint);
```
3. 发现了引用的东西,没有样式,就很奇怪,查了以前的项目和百度,要在引入mint-ui之前引入样式
4. 引入的时候发现,node_modules 文件夹中有的文件夹带下划线 _ 有的不带,百度一下,说带下划线的是cnpm装的,建议能npm的还是用npm
5. 引入样式后,成功显示
6. 然后把mint-ui的html复制到 FooterGuide.vue 里,同时把a标签换成 router-link ,因为要点击控制router ,恰好a标签的更改也不会产生样式的变化
7. 给router.js点击产生的类取个别名,控制点击样式(router-link被点击自动添加进标签的类)
```javascript
linkActiveClass:'mui-active'
```
8. 完成,回头修改图标和样式
## 切图——4个路由页面的
Msite.vue
Order.vue
Search.vue
Profile.vue
## 准备icon
1. 在阿里巴巴icon平台选好需要的icon
2. 生成链接,在index.html引入
3. 以类名的方式添加,如
```html
```
## 组件HeadTop.vue
由于顶部导航的内容有变化,可以看作和路由是一体的,所以可以提取成一个模块,提高复用性
1. 新建一个 HeadTop.vue
2. 让其它路由页面引入 HeadTop.vue
## 使用slot插槽(vue内置语法)
HeadTop.vue 这个头部导航,根据每个路由不同,内容也变化,所以单独提取出来以后,要通过组件之间传值的方式,把父组件的title传给 HeadTop.vue。
如:
Order.vue
```javascript
{{alertText}}