《叩丁狼积分商城》PC端项目实战

项目介绍

《叩丁狼积分商城》是一个使用vue全家桶构建的PC端SPA商城,主要用于给学员将子级在叩丁狼的积分兑换成商品。

一、项目参考地址【熟悉】

真实项目参考地址:http://sc.wolfcode.cn/

实战项目参考地址:http://codesohigh.com/store-pc/

image-20210813172527886

二、项目UI设计稿及图片资源【熟悉】

1、UI设计稿

链接:https://pan.baidu.com/s/11jI0eKuFNwxCzhYhEAHEGA 提取码:yyds

2、静态图片资源

链接:https://pan.baidu.com/s/1rBqQsxvuB2SpZOCfMs_kmA 提取码:9yos

3、iconfont链接

1、在项目中全局的css引入以下链接:

https://at.alicdn.com/t/font_2730880_ylrio3ahhx.css

image-20210813161428719

2、具体图标名称:

图标名称
图标类名

YDUI-复选框(选中)

icon-yduifuxuankuangxuanzhong

YDUI-复选框

icon-yduifuxuankuang

loading

icon-loading

toast-失败_画板 1

icon-toast-shibai_huaban

toast-警告

icon-toast-jinggao

toast _成功

icon-toast_chenggong

3、引用方式

三、PS安装【选装】

这里为电脑没有预装ps的同学提供ps安装包

链接:https://pan.baidu.com/s/1GX3PaRWNFMUY6wqF8NukQg 提取码:hle6

下载打开压缩包, 解压密码为:123456

四、蓝湖【重点】

蓝湖产品设计协作平台是一个服务于产品经理、设计师、工程师的在线协作平台,无缝连接产品、设计、研发流程,旨在降低沟通成本,缩短开发周期,提高工作效率,帮助企业建立科学的工作环境,提升企业的开发效率。

1、注册登录与插件

打开https://lanhuapp.com/,注册并登录,然后创建团队:

蓝湖创建团队

点击https://lanhuapp.com/ps?comeFrom=项目列表_右上下载蓝湖ps插件。

下载完成即可安装,安装后重启ps,如果看到:

image-20210806112816101

就代表你已成功安装蓝湖插件。此时,顺便登录账号。

2、上传UI设计稿

首先,打开一张psd设计图,然后选择刚刚创建的团队与项目,选择 1倍像素 的web端设计稿:

image-20210806113117863

点击 上传全部画板 即可。

后续每开发一个页面,可自行按照上述流程将需要用到的设计稿上传,无需一次性上传所有设计图。

五、项目创建【熟悉】

执行 vue create 项目名称 :

按照没有eslint的配置,选择 vue 2lessvuexrouter

image-20210806115331589

创建完成后,cd到项目中。

六、仓库创建【熟悉】

https://gitee.com/ 创建一个空白仓库:

image-20210806115558468

点击 创建 即可。

由于我们已经有本地项目,直接在本地项目的命令行中执行:

完成提交。刷新仓库页面,如果看到仓库已有文件:

image-20210806115958631

表示你已提交成功。

七、默认样式【熟悉】

1、清空默认样式

清空默认样式我们使用 reset-css 。具体使用方法:

然后在项目入口文件 main.js 中引入:

2、定义默认样式

网页中有很多固定的颜色,我们可以抽离出来作为less公共变量。在 src 下,新建 total.less

然后在需要使用这些变量的组件中的css最顶部引入:

八、配置@指向src【了解】

1、方案一

  • 安装 Path Intellisense插件

  • 打开设置 - 首选项 - 搜索 Path Intellisense - 打开 settings.json ,添加:

  • 在项目 package.json 所在同级目录下创建文件 jsconfig.json

  • 重启vscode

2、方案二

安装 path

创建 vue.config.js

九、项目静态资源【了解】

将老师提供的 assets 文件夹放到项目的 src 下。

十、登录滑动拼图验证【了解】

插件参考:https://gitee.com/monoplasty/vue-monoplasty-slide-verify

1、安装插件

2、入口文件引入

3、组件引用

十一、配置axios拦截器【重点】

本项目接口文档地址:积分商城PC【叩丁严选PC项目】 http://www.docway.net/project/1h9xcTeAZzV/share/1hZ5qEe9NVg 阅读密码:zhaowenxian

1、安装 axiosqs

2、在 src 下创建 request>request.js+api.js

api.js

十二、Vuex与提示【重点】

vuex中可以定义三个状态:

创建一个 Toast.vue 组件:

在任何一个组件想要触发这个Toast,需要:

但是每次都这么触发太麻烦,我们用一个 toastFn.js 文件封装一个函数:

如此,在需要调用的地方直接传参即可:

十三、PC微信登录【重点】

微信扫码登录流程图

1、微信扫码布局与配置

想要实现在登录框中可以扫码登录:

扫码登录

public/index.htmlhead 中:

在登录框中代码中添加一个div,这个div是用来存放微信二维码所在的iframe的:

api.js 中:

在切换到 微信扫码登录 的事件中:

* 环境变量

上面的process.env.VUE_APP_STATE_URL是环境变量。书写方式:

在项目根目录新建 .env.prod.env.dev

然后修改 package.json 中:

重跑项目即可。

当你还没写href的时候,会发现iframe样式是无法改变的,因此我们需要借助 node+css 来实现css转base64:

src 下新建 utils 文件夹,并且在其中新建: data-url.jswxlogin.css

然后控制台运行:

得到一段base64转码字符串:

然后粘贴到 href 中。最终效果:

最终登录界面的二维码

2、扫码得到code做登录

扫码跳转页面后,我们来到 Header.vue 组件。在 Header.vue 组件的 created 生命周期里,由于在地址栏上可以得到code:

此时要做判断,如果有code,则做请求获取token:

但这样写有个问题,Header组件只会加载一次,如果用户退出登录,在别的页面登录,就无法正常登录了。

3、强制组件更新

由于具有以上描述的情况,我们希望只要路由的 query参数 发生变化,就强制更新一次 Header.vue 组件,这样就能重复触发它的 created,方法如下:

十三、获取用户信息【重点】

Header.vuecreated 中:

十四、手机号登录【重点】

手机号登录之前,需要判断三点:

  1. 手机号是否正确

  2. 验证码是否填写

  3. 滑块拼图是否拼接过

1、手机号校验

新建一个 validate.js 文件:

在提交的事件中直接判断:

2、验证码校验

验证码无法校验填写对了没有,只能判断是否有填写:

3、检验是否完成拼图

4、登录请求

完成了以上的所有校验,就可以点击登录,先配置 api.js

在判断拼图完成之后:

十五、商品页滚动加载【熟悉】

请参考:https://www.npmjs.com/package/load-more-mczhao

十六、用户中心与购物车界面套用

个人中心的界面:

个人中心-购物车

1、用户中心

新建 views/person/Person.vue

2、购物车

新建 views/person/Cart.vue

3、路由配置

4、导航修改

找到 Nav.vue 组件,修改个人中心的当前项判断:

十七、开发小技巧

1、iconfont无法旋转?

iconfont是行内元素,无法添加 transform:rotate() 属性,需要把它转行内块才能旋转。

2、社交平台分享

当我们需要做到社交平台分享时,通常会用 iShare.jsvue-socialmedia-sharevshare。第一个插件对样式的重构性较低,第二个插件一般用于分享到外网,因此比较常用的是 vshare

使用方式:

在组件中引入:

然后使用:

data中定义 vshareConfig

3、路由监听

当你路由更新,当页面没刷新时,需要监听路由:

4、正则表达式替换文本

假设你得到的字符串为str,其中包含html标签,标签中有img,想把img里的 upload 字符串替换为 https://sc.wolfcode.cn/upload ,可以如下操作:

5、个人中心最基本界面

6、重复点击相同路由报错

当我们重复点击相同的路由,就会有以下报错:

image-20210813115927502

这是路由升级导致的vue版本过低报错。解决方案:

在路由文件中加这一段代码:

十八、项目打包

1、将路由中的 mode: history 注释

2、在 vue.config.js 中:

3、如果使用了懒加载,记得将img_loading.gif图片放到相应的位置

十九、图片懒加载

1、安装

2、全局引入与配置

3、设定loading大小

App.vue 中:

4、:src --> v-lazy

二十、设置title与favicon.ico

当我们完成项目后,想要在webpack修改 index.html 的title标签,可以在 vue.config.js 中:

如果想改favicon.ico,可以在网上扒一个你想要的,然后替换 public 下的favicon.ico即可。

二十一、作业

【Level-1】完成可达到做网页设计师的水平

day01-day02:仓库新建一个dev分支,首页、全部商品页、个人中心页搭建

【Level-2】完成可达到项目逻辑度最高的水平

day03-day04:独立完成微信扫码登录及手机号登录

【Level-3】完成可达到中级前端工程师的水平

day05-day06:独立完成购物车全选与步进器功能、商品详情页社交平台分享功能

【Level-4】完成可达到高级前端工程师的水平

在day07之前完成项目,项目完成过程中请教同学或老师的次数小于3次,并能在老师讲授每个模块前已自主完成该模块,那么,你就是前端大佬了!

二十二、项目总结

1、项目介绍

《叩丁严选》是一个由vue-cli搭建的PC端SPA商城,该商城主要涉及登录注册、商品列表、商品详情、个人中心、购物车及商品检索等主体功能。该项目主要用于平台用户参与积分兑换商品,是一个中大型的PC端商城项目。

2、项目技术点

  1. 使用vue-cli搭建项目,并结合蓝湖+PS进行页面切图,实现对设计稿的高保真还原;

  2. 使用axios进行数据请求,并对其进行request拦截封装;

  3. 登录采用手机+验证码、手机+密码及微信扫码登录,其中微信扫码登录结合环境变量,调用后端接口实现平台切换验证;

  4. 使用localStorage对用户信息和token进行存储;

  5. 使用vshare实现将项目分享到第三方社交平台(如:微信、QQ空间等);

  6. 使用原生JS在组件mounted中监听滚动,并实现向下滚动加载更多;

  7. 使用导航守卫对每个进入个人中心页的路由进行拦截,正则匹配路径后保证有token方能进入该路由;

  8. 使用路由降级等方式解决进入重复路由报错的问题;

  9. 使用路由监听解决路由跳转而页面不跳转的问题;

  10. 给组件绑定key属性,通过修改key值来强制更新组件;

最后更新于

这有帮助吗?