实战笔记

第1节:Mockplus把咱们的想法画出来

Mockplus是产品经理装逼使用的利器,可是真的很好用,做为一个已经工做的程序员必须舔产品经理的脸,因此你也要对Mockplus的使用有所了解,并会简单的使用。其实Mockplus就是一个线框图制做工具,能把咱们的想法或者不太好用语言表达的地方,快速画出线框草图增长理解能力。javascript

为何选择快餐店POS系统?

刚开始我想做一套以酒水商城为背景的手机端应用,可是我发现网上这样的应用太多了,什么仿饿了么,什么知乎,什么购物车均可以在网上找到,因此你彻底能够Github网站中下载,自学掌握。我觉的既然做了这个实战,就要够酷够复杂,我下面列举了三个缘由,你们能够看一下(你其实能够忽略前两点)。php

  • 这个收银界面足够复杂:咱们采用三栏布局,每栏的交互操做都颇有技术技巧,让你快速掌握复杂应用的开发。
  • 用到的知识点多:用到实战中90%以上的知识点,让你把Vue的知识串联起来,快速成为单位中的技术牛人。
  • 为了更好的和女神啪啪啪:京东-强东哥的女神愿望就是开奶茶店,个人女神愿望就是开个快餐店。

 

MockPlus软件下载:

Mockplus是一款免费的软件,你能够随便下载:https://www.mockplus.cn/ 。下载好后你须要注册一个帐户,就能够正常使用了。css

软件的基本需求分析和画的过程,请看视频,这里就不用文字描述了,去看视频吧。html

项目框线图;

下面是咱们用Mockplus制做的应用框线图,虽然简单,可是已经把我脑海中快餐店Pos系统的大致样式画出来了。在做项目以前,必定要画出框线图,反复讨论需求和技术实现,这样能避免开发中的大范围修改,在实际工做当中很是重要。前端

 

第2节:Vue-cli搭建开发环境

咱们采用Vue-cli进行快速搭建,若是你对Vue-cli还不了解,请观看下面的文章,大概30分钟可彻底掌握Vue-cli。vue

  1. 技术胖的Vue-cli 视频教程(共3集)

搭建项目架构:

项目采用Webpack+Vue-router的架构方式,开始安装(所有在windows系统上操做,我也没有mac电脑)。html5

  1. 按Win+R,而后在文本框中输入cmd,回车打开命令行,输入vue-cli安装命令:

    这里的-g表明全局安装。
  2. 在命令行中初始化项目,咱们采用的是webpack模板,输入初始化命令:

    这里的AwesmonePos是个人项目文件夹名称,你能够起一个本身喜欢的名称。安装时根据项目须要配置所须要的模块。这里有一个小技巧,就是在你已经提早创建好了文件夹的时候,咱们也进入了文件夹,这时候咱们能够省略这个文件夹名称。以下状况:
  3. 在命令行中,进入项目目录,使用npm install 安装package.json里项目的依赖包。若是你网速较慢的话,可使用淘宝镜像的cnpm来进行安装。
  4. 查看是否安装正确。在命令行中输入 npm run dev ,若是能在浏览器中正常打开页面,说明安装正确。

到这里为止,咱们的项目架构就创建好了,咱们须要对Vue-cli给咱们生成的文件进行一些必要的修改。java

修改项目文件内容:

  1. 修改根目录下的index.html文件,咱们想写一些CSS样式,这样做是为了更好的布局,而后修改一下标题栏。让标题符合项目这里起名叫“AwesomePOS-快餐店管理系统”。index.html修改后内容以下。
  2. 新建Pos组件,这个至关于程序员的入口文件。在src/components/page/目录下新建Pos.vue文件。文件内容写出vue模板的架构就能够。

     
  3. 修改路由文件,项目根目录/src/router/index.js,让入口文件变成Pos组件。
    先用import引入了Pos模板组件,而后修改routes里边的内容。若是你对Vue-router的知识还不了解,能够去看我之前的课程,这里就不做过多的讲解了。

这时候看一下浏览器中的网页,若是显示出了Hello Pos Demo.咱们就算成功搭建项目架构了。下节课咱们肯定一下项目中使用的图标。webpack

第3节:搞定项目图标Iconfont

在开发中常常会遇到小图标的使用问题,小图标的使用可让程序更美观和增长可用性。网上给程序加上小图标的方法有不少。曾经为了寻找一款使用简单,图标美观的图标库,我真的是处处搜索,直到遇到了IconFont,我觉的它能知足个人大部分要求。那在这里我推荐你们使用IconFont,这是阿里巴巴的矢量图标库。(这绝对不是广告,只是本身使用的一些感觉)ios

挑选本身喜欢的图标

Iconfont中有不少图标,咱们能够像在超市逛街同样,挑选本身喜欢的商品,而后放入购物车。

挑选图标的过程(共6步)

  1. 进入网站:Iconfont网址:http://www.iconfont.cn
  2. 点击网站上方的“官方图标库”,选择本身喜欢的图标。在这里我选择天猫的图标库。
  3. 选择好本身喜欢的图标,你能够有两个选择,下载代码 和 添加至项目。
  4. 咱们这两选择添加至项目,而后新建项目,并输入名称。
  5. 项目添加好后,会自动给咱们转入到咱们项目库中。点击查看在线连接。
  6. 生产css引入的代码,生成后就能够在项目首页index.html引入了。

图标的使用:

图标顺利引入到项目中,已经可使用它们了,在“个人项目中”你会看到图标的font class值。能够直接复制代码粘贴,也能够本身写代码。

这样在页面中就能够看到图标了。

添加更多图标:

若是在项目中觉的图标不够用了,须要添加更多图标。能够利用下面四步进行添加。

  1. 去Iconfont网站继续挑选,把相中的图标加入购物车中。
  2. 把购物车中的图标加入到项目中。
  3. 从新生成在线连接。(这部很重要)
  4. 在项目主页中(index.html),更换css引入连接。

实战项目开发的知识点就是不少,也很杂,可是这些都很实用,你也会快速成长,不要感受和Vue无关就忽略,让咱们共同努力,变成更好的本身。

 

第4节:编写独立的侧边栏导航组件

上节学习了inconFont的使用,能够在项目中加入漂亮的icon图标了。这节课咱们要快速撸一个侧边栏组件出来。组件的做用就是在能够复用,想在那个页面使用均可以,而且像写html标签同样简单。

创建leftNav.vue文件:

咱们在src/components目录下,先新建一个common和page文件夹。

  • common文件夹用来放共用组件,下面写的leftNav.vue组件就放到这里。
  • page文件夹用来放咱们的页面模板组件,页面的模板文件放到这里。

在common文件夹下,新建leftNav.vue文件。

开始动手写代码:

创建好文件后,咱们先给components来个基本组件结构,你能够复制粘贴也能够手写。

开始写html结构,咱们用列表li来表明导航。菜单栏有收银、店铺、商品、会员、统计。咱们编写的html结构以下

注意:这里你也许和我使用的图标不同,请自行改为你图标用的代码,不要无脑拷贝,图标会显示不出来。

components(组件)基本结构写好后,开始动手写CSS样式,让咱们的组件变的好看。

编写完CSS样式,这个组件算是大致写好了,之后根据需求咱们会在组件里添加<route-link>标签。可是如今尚未这个需求,因此暂时不添加。

把leftNav组件放到模板中

先用import在App.vue中引入leftNav组件。

引入后在vue的构造器里添加components属性,并放入咱们的leftNav组件。

这样组件就算在也页面引入成功了,接下来咱们就能够在<template>区域里愉快的使用它(<leftNav></leftNav>)。贴出引入使用所有代码,方便你们学习查看。

 

第5节:开启Element封印

Element是一套为开发者、设计师和产品经理准备的基于Vue2.0的组件库,提供了配套设计资源,帮助你的网站快速成型。在项目中本身写组件虽然灵活,可是效率并不高效,因此要学会站在巨人的肩膀上干活,Element就是巨人的肩旁,也是如今国内比较成熟的以一套Vue的组件库。因此我决定 使用这个组件库开发项目。

npm安装

这里使用npm的方式安装,它能更好地和webpack打包工具配合使用。

若是你网络情况不佳可使用cnpm来进行安装。

完整引入项目

在main.js中写入如下内容:

以上代码便完成了Element的引入。须要注意的是,样式文件须要单独引入。

用Element的el-row的布个局

安装好,先作个简单的布局小试牛刀,这里做两栏布局,Element支持用24栏的形式进行布局。

在Pos.vue里添加模版布局:

 

解决100%高的问题

在页面中使用了Element组件,这样他会自动给咱们生产虚拟DOM,咱们没法设置高度100%;

这时候能够利用javascript,来设置100%高度问题。先要给咱们的<el-col>标签上添加一个id,咱们这里把ID设置为

order-list。而后在vue构造器里使用mounted钩子函数来设置高度。

 

 

布局的基本架构,咱们已经作好,剩下的就是一些细节。下节课咱们将用一节课的时间制做大部分CSS样式内容。

第6节:利用Element快速布局(1)

这节课咱们将快速利用Element进行布局页面,这章视频中我会直接拷贝Style代码,由于我觉的你学Vue,那CSS也没有任何问题的,因此不耽误你们的宝贵事件。

el-tabs标签页组件

用Element里提供的el-tabs组件能够快速制做咱们的tabs标签页效果,具体使用方法能够到Element的官网查看API。

基本用法很简单,能够直接在模板中引入<el-tabs>标签,标签里边用<el-tab-pane>来表明每一个每一个标签页。

先看一个最简单的代码:

细心的小伙伴会看到每一个<el-tab-pane>里会有一个label属性,这个属性就是你标签页的标题。内容能够直接写在<el-tab-pane>里。

el-table组件制做表格

须要在订单的tab标签页里放入表格,把点选的食品放入到待结帐列表里,可使用Element的内置组件el-table。若是你对el-table不了解, 能够去Element官网去查看一下。我这里不做太多的解释,先把代码贴过来,而后根据代码在讲解。

这里咱们采用了五列布表格, 在第1行中的:data是用来绑定数据源的, border表明表格有边框效果。在这视频里我会有详细的讲解。

 

tableData中的数据源的值,为了布局方便,因此咱们进行了写死,之后会改为动态添加的数据。

你如今能够打开浏览器进行一下预览,看一下效果了。若是效果正常,咱们能够继续往下编写了。

el-button 按钮组件

须要在点餐表格的下方放入三个功能性按钮,分别是挂单按钮、删除按钮、结帐按钮。一样使用Element里的组件,进行快速写入。el-button 的type属性是设置按钮样式的,为了学些和区分咱们这里用三个属性来设置按钮。

 

到这里咱们左边最重要的订单操做区域就布局完成了,下节课咱们布局右侧的商品布局。

 

第7节:利用Element快速布局(2)

上节完成了左边订单栏的布局,这节咱们仍是利用Element完成大部分布局。

这是完成布局的图片

经常使用商品区域布局:

在<el-col :span=17>标签里增长一个层,而后在层内进行布局。由于里边的商品实际意义上是列表,因此用无序列表<li>来布局商品。贴出布局的html代码。

有了基本html结构后,须要增长一些css样式来美化页面:

如今页面变的漂亮了,咱们这时候为了页面更逼近真实效果,咱们在Vue的构造器里临时加一个数组,用做经常使用商品使用。声明的变量叫oftenGoods(真实项目不能这样起名字,这里只是练习使用)。

有了数据,可使用v-for循环来输出到html模板中。

商品分类布局:

这样咱们商品的上半部分就布局完成了,如今须要布局下半部分,咱们在下半部分先添加一个tabs的标签样式。

有上节课做tabs标签页的经验,这个变的异常简单。

制做商品的无序列表:

对无序列表进行CSS样式编写:

有了基本的样式,咱们能够在Vue的构造器里添加汉堡类的数据。声明一个type0Goods的数据,数据格式以下。

用v-for改造咱们的无序列表:

页面的基本布局咱们已经制做完成,终于看起来像个收银界面了。可是如今的数据都是写死的,下节课咱们将从后端用Axios拉去数据。

第8节:Axios从远程读取数据

上节课咱们利用Elemnt已经把页面布局的差很少了,若是你觉的不够美观,能够本身再进行美化,由于课程的缘由css细节咱们这里就不深刻美化了。这节课咱们开始学习Axios的知识,并把商品数据从远端读取到页面上。学这节课时技术胖已经为你们准备好了后端数据,大家只要调用相应的页面就能够调取,在实际开发中,这些后台数据是须要后端程序员和你共同讨论制做的。咱们如今只作前端,数据你们只要会调用便可。

安装Axios

咱们直接使用npm install来进行安装。

因为axios是须要打包到生产环境中的,因此咱们使用–save来进行安装。

引入Axios

咱们在Pos.vue页面引入Axios,因为使用了npm来进行安装,因此这里不须要填写路径。

 

服务端拉取经常使用商品数据

远端服务器地址:http://jspang.com/DemoApi/oftenGoods.php

(在实际项目中这个后台接口地址是后端程序员提供给你的,你能够随便调用这个接口,我已经放到服务器上了。)

能够先把地址放到地址栏访问一下,是能够正常访问的,而且输出了json格式的字符串,这就是咱们须要的远端数据了。这里咱们使用Axios的get 方式来得到数据。

把axios的方法写到了created钩子函数中,咱们使用了get 方法进行拉取数据,若是拉取成功用远端数据对oftenGoods进行赋值。

拉取报错,通常有两种状况:

  1. 网络不通:网络情况不是很好,这能够在失败后隔5秒再次请求。
  2. 报决绝访问:这种可能是后端程序员设置了不容许跨域访问,须要你和后端程序员一块儿调试解决。

拉取分类商品数据:

远端服务器地址:http://jspang.com/DemoApi/typeGoods.php

依然用Get进行拉取,拉取后先用consoe.log(response)查看一下数据结构,让后进行赋值。因为知识跟上边的很像,文字版我就很少描述了,详细能够查看视频教程。

在这里贴出拉取和分配不一样分类代码:

html模板输出代码:

在实际开发中类别也是循环出来的,这里为了教学演示,没有写的那么复杂,你只要明白了如何操做,之后你能够本身增长。就像我这个项目同样,在视频结束后,会慢慢写完善全部功能,最后送给女神,赢得女神芳心。

下节课咱们学习订单操做里须要的功能,好比点击商品,添加到左边的订单栏里,增长,删除商品,模拟订单提交到后台。若是下节课一节讲不完,咱们就分红两节课来说。

 

第9节:订单模块制做 核心功能-1

通过上节课的学习,咱们已经能够从后台取得数据了。这节课要完成的任务是实现页面左侧的订单列表页面的添加操做。原本我想一节课讲完的,可是内容仍是比较多的,又不想让你们每节课学习很长时间,因此我把这个内容进行了划分。

添加商品到订单页面

咱们在vue的构造器里加入methods方法,在methods方法里再加入addOrderList方法。这个方法的做用是点击右侧的商品,而后把商品添加到左边的列表里。

addOrderList方法(也许你只看文字版没法理解,推荐查看视频):

在做这个方法的时候,在订单列表的下方又添加了订单的统计功能,其实也就两项:订单价格汇总和订单商品数量汇总。咱们在data里声明的值是totalMoney和totalCount。

写完这个方法后,咱们还须要在咱们的商品上绑定方法,来进行调用添加方法。

这样在点击商品时订单列表就会根据咱们的程序逻辑发生变化。

订单列表中的增长按钮

商品中绑定addOrderList方法是很是容易的,若是在订单列表中绑定是须要特殊处理一下的,须要用到template的scope值,让后进行绑定。

这节课咱们把订单增长的操做制做完成了,下节课咱们要制做订单商品的删除和订单的总体删除功能,最后模拟一下订单的结帐功能。

 

第10节:订单模块制做 核心功能-2

继续制做订单模块,这节课主要三个功能的制做,删除列表中的单个商品,删除列表中的所有商品,简单模拟结帐。

删除单个商品

在veu构造器methods属性里增长一个delSingleGoods方法,并接收goods对象为参数,用数组的filter能够轻松删除数组中单个的商品。

如今能够npm run dev试一下了,会发现如今商品能够正确的删除了,可是统计的数量和金额是不正确的,咱们须要写一些统计的代码。在下手以前你会发如今增长商品方法中也有相似统计的方法,既然两个功能很像,咱们就从新写一个方法。

须要注意的是,之前咱们是单独使用的,因此不用把totoalCount和totalMoney清零,可是作成公用方法了,记得清零。方法作好了,咱们在须要的地方直接用this.getAllMoney()引用就能够了。

功能作好了,咱们还须要为删除按钮绑定事件:

这样咱们就把删除单个订单商品的功能作好了,咱们能够测试调试一下。

删除所有订单商品

这个功能其实很简单,只要把this.tableData清空就能够了,在methods属性中写一个delAllGoods的方法。

有的小伙伴会好奇,你彻底能够再次复用getAllMoney()方法进行汇总,为何不用那?汇总方法里毕竟是有业务逻辑的,咱们只作两个清零,这样消耗的资源更少,因此咱们没有使用。

模拟结帐

由于模拟结帐须要Post数据到后台,个人服务器又不能提供这样的借口给你们,因此我只说制做思路,你们能够在本身的服务器上去实现。

一、设置咱们Aixos的Pos方法。

二、接受返回值进行处理。

三、若是成功,清空现有构造器里的tableData,totalMoney,totalCount数据。

四、进行用户的友好提示。

因为前两个步骤不能演示,因此这里咱们只模拟3和4步。在methods里做一个结帐方法,清空数据和进行友好提示。

订单模块基本的功能就制做完成了,我但愿你们都能动手练习一下,若是你不动手练习你永远学不会的。

 

第11节:项目打包和上线

一直追看的小伙伴可能知道原来还有一节挂单功能的制做,可是在录制的过程当中我发现90%的知识点都是重复的,不重复的知识点讲的还和Vue没有关系,是html5的localStorage操做,因此我去掉了这节。这节咱们主要讲一下打包须要注意的事项和总结一下咱们学习的知识。

打包注意事项:

一、把绝对路径改成相对路径

咱们打开config/index.js 会看到一个build属性,这里就咱们打包的基本配置了。你在这里能够修改打包的目录,打包的文件名。最重要的是必定要把绝对目录改成相对目录。

这样才能保证咱们打包出去的项目能够正常预览。

二、在命令行中用npm run build  进行打包。

 

总结:

咱们经过这篇文章和视频学到了Vue2.0在实际项目开发中用到的知识点,有vue-router,Element,Axios,iconFont,如何利用数据来修改Dom。但愿这篇文章能够对你有所帮助,(码了16000多字,陆陆续续写了20天)若是这篇文章对您有帮助,请到文章右方或者下方进行打赏。

相关文章
相关标签/搜索