省A类竞赛二等奖--村先游项目VUE前端重构
村先游--省二竞赛项目VUE重构
源码地址:
重构前的(前端+后台):https://github.com/Archer-Fang/cunxianyou
重构前的(前端):https://github.com/Archer-Fang/cunxianyouv2
笔记:
1.<style scoped>避免组件样式污染
功能:
登陆页@/pages/login/login:
1.登陆页验证手机号码
2.登陆页是否显示密码
3.跨域获取验证码,将base64编码过的图片进行显示
4.导航栏登陆状态判断,如果登陆则显示不同的导航栏
5.跨域验证:手机号,密码和验证码
坑点:一开始我想通过action-->mutation-->getter来进行对账号密码验证码的验证,但是执行顺序action执行完resolve以后,getter还没有执行,所以用getter获取的userInfo变量为空,点击登陆显示验证码输入错误,然后由于页面没有刷新,并且getter的辅助函数检测到userInfo改变,验证码保存到status,再次点击登陆以后登陆成功。
总结一下就是:验证的时候直接调用action并且回传状态给变量,不要用getter获取state。
6.手机号码正则判断验证是否为11位,是,则登陆按钮变色
7.对账号密码进行状态管理,存储到status并且将user_id存储到localStore中
8.前端登陆拦截(钩子函数)
原思路如下:
1.token:与cookie进行验证相比更加安全
组成:header payload 签名
生成形式:header和payload进行base64加密,将密文用句号链接起来发送给服务器端,服务端用密钥进行HS256加密生成签名,返回给客户端形成token
校验:服务器端对header payload进行base64解密,知道用了HS256算法加密,对服务器端密钥进行HS256加密与签名进行比对。
2.用router的钩子函数对需要token的身份认证进行判断,并且用axios对所有的请求响应进行拦截,如果需要token,则在header首部加入: config.headers.Authorization = `token ${store.state.token}`;
但是这个项目主要是对前端的东西用vue进行重构,后端不打算动它先,token没有生成,所以对token判断改为是否登陆的login进行判断,所以只调用了router的钩子函数对router进行判断拦截,简化了一些流程。
9.导航栏点击以后的样式显示
使用 .router-link-active
10.退出登录并且回到登陆页
1.@click 子组件传给父组件无效解决方案
在vue学习中遇到给router-link 标签添加事件@click 、@mouseover等无效的情况
根据Vue2.0官方文档关于父子组件通讯的原则,父组件通过prop传递数据给子组件,子组件触发事件给父组件。但父组件想在子组件上监听自己的click的话,需要加上native修饰符。
所以如果在想要在router-link上添加事件的话需要@click.native这样写
2.把用户ID从localStore中删除,并且Login置为false
登陆页:
11.vue-cli npm引入bootstrap,并且进行相应的配置
http://www.cnblogs.com/kongxianghai/p/6910133.html
12.轮播图组件化
添加bootstrap4 bootstrap-vue,bootstrap-loader
13.小banner图片引用问题,需要把图片放在static中而不是asset中。
坑点:如果图片放在assets中src=“图片”可以显示,而onmouseover="this.src='图片'"显示错误
14.添加知乎api,获取接口数据
15.时间过滤器-20180401-->2018年04月02日
16.敬语组件化,并且传值判断
17.修改footer样式
18.解决图片显示的403问题。状态码403
但有时我们会发现 引入的外部图片链接也是可以正常展示的,那是因为先访问了外部图片链接图片展示过后,被浏览器缓存了下来,并未正常引用。
https://pic2.zhimg.com/v2-04f07c460873947baca37a2be1b9e3f5.jpg
找个专门缓存图片的网址,去掉图片的https://,加到https://images.weserv.nl/?url=后面进行缓存
加载速度有点慢,点击更多的时候要等一下才能加载出来
getImage(url){
console.log("url:"+url);
console.log("before test");
// 把现在的图片连接传进来,返回一个不受限制的路径
if(url !== undefined){
let _u = url.substring( 7 );
console.log("newURL:"+'https://images.weserv.nl/?url=' + _u);
return 'https://images.weserv.nl/?url=' + _u;
}
/*
console.log("test");
*/
}
19.把swiper小轮播图改为bootstrap小轮播图
20.修改子组件style 去除bootstrap小轮播图蓝色边框,以及indicators样式
全局样式<style ></style >可以修改子组件的样式<style scoped></style >只能修改该组件的样式,用于避免样式的污染
21.旅游页完成。
22.旅游交通页点击title,返回一个judge值,用于判断显示两个不同的页面
23.租车排行榜完成
24.bootstrap-vue重新引入
https://bootstrap-vue.js.org/docs/
25.解决特产页热销榜carousel的BUG
设置不同的slide
26.修改首页样式,button适应bootstrap4
27.添加问答页
28.添加useiconic
https://useiconic.com/open/
29.问答页添加vue的模态框
bootstrap-vue
30.登陆状态判断header显示的修改
点击退出的时候,退出按钮不能放在router,或者给它加个native
31.ref的使用
<div ref="test">
method:this.$refs.test.style.background="black";
32.引入css报错:cannot resolve file
@import "./assets/css/bootsrap.min.css";
解决:把bootstrap的font文件也添加到asset上
api接口说明:
1.配置http代理表
proxyTable: {
'/api2': {
target: 'http://cangdu.org:8001',
changeOrigin: true,
pathRewrite: {
'^/api2': '/'
}
},
'/api': {
target: 'https://news-at.zhihu.com/api/4',
changeOrigin: true,
pathRewrite: {
'^/api': '/'
}
}
},
2.定义常量
const urlBase = '/api/';
const urlBase2 = '/api2/';
3.用常量表示跨域的url
登陆页验证码和登陆验证:
post:axios.post(urlBase2+'v1/captchas',{})//base64编码的验证码图片
axios.post('/api2/v2/login',{
username:this.phoneNumber,
password:this.password,
captcha_code: this.captcha
})
post查看数据,百度post模拟,输入url+变量
人文页数据:
get:axios.get(urlBase + 'news/before/' + now) //例子:now='20180404'
api:https://news-at.zhihu.com/api/4/news/before/20180404
我用axios在自己的项目上试了一下,是可以的,代码如下:
axios.get('/api3/hello').then(res=>console.log("res.data:"+res.data))
.catch(err => console.log(err))
省A类竞赛二等奖--村先游项目VUE前端重构的更多相关文章
- 项目实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错,eclipse中配置lombok
@Data注解来源与Lombok,可以减少代码中大量的set get方法,大量减少冗余代码,但是今天部署项目时候,发现实体类使用@Data注解,但是项目业务类中使用getA(),setA()方法报错. ...
- Dota2 demo手游项目历程
最近其实是打算认真研究c++ primer和设计模式的原著,然后写一些读书笔记的,不过设计模式原著里生词太多,大多都看的不是很明白,因此暂时放弃阅读设计模式,打算用这些时间做一个类似我叫mt2的手游d ...
- IT第八天 - 类的应用、debug、项目开发模式优化
IT第八天 上午 类的应用 1.对象在实例化时是非常耗费系统资源的,因此要尽量减少new字段的使用 2.类的初始值是null,在使用未实例化的类时,很容易导致报错:NullExceptionPoint ...
- SpringMVC通过实体类返回json格式的字符串,并在前端显示
一.除了搭建springmvc框架需要的jar包外,还需要这两个jar包 jackson-core-asl-1.9.2.jar和jackson-mapper-asl-1.9.2.jar 二.web,. ...
- 手游项目Crash的上报
基于cocos2d-x开发的手游,免不了会遇到崩溃.闪退,在非debug状态下定位问题异常的艰难,像我们项目是在cocos2dx的基础上封装了一层,然后又与lua进行互调.因为接受C++/移动端开发比 ...
- 错误: 找不到或无法加载主类(IDEA中启动spring boot项目)
版权声明:本文为博主原创文章,如果转载请给出原文链接:http://www.jufanshare.com/content/142.html 提示:需要对IDEA编辑工具使用熟悉 出现一个问题,就是sp ...
- [转]基于 Quercus 的手游项目终于上线了
原文:http://blog.andsky.com/quercus-php-ngame/ 经过半年的开发,我们第一款手游戏终于开发完毕,架构使用了 netty + Quercus 实现用 php 通过 ...
- android应用编译失败 ResXMLTree_node size 类错误,以及 android studio 项目内搜索
今天很郁闷,又遇到个很让人崩溃的问题: ResXMLTree_node size 0 is smaller than header size 0x45. 类似这样的错误,提示中看不出任何有用的内容,网 ...
- Android Studio使用过程中Java类突然报红,但项目可运行解决方案
1.点击File->Invalidate Caches / Restart... 2.重启Gradle,清除缓存 3.Clean Project
随机推荐
- 静态页面缓存(thymeleaf模板writer)
//前端html <!DOCTYPE html><html lang="en"> <head> <meta charset="U ...
- 使用Eclipse开发学习 Spring Boot 教程的内容小结
spring-tool-suite使用教程,并创建spring配置文件 Spring Boot基础教程1-Spring Tool Suite工具的安装 Spring Boot基础教程2-RESTful ...
- 漫谈设计模式(一):代理(Proxy)模式与适配器(Adapter)模式对比
1.前言 为什么要将代理模式与适配器模式放在一起来说呢?因为它们有许多的共同点,当然也有一些不同的地方.首先两者都是属于结构型模式.结构型模型是这样定义的: 结构型模式涉及到如何组合类和类以获得更大的 ...
- Promoter complex|转录组水平RNA的复杂度|
生命组学 Promoter complex Tata box识别位点 Enhancer加入之后增强转录 不确定性与确定性之间的关系,原因中存在这不确定性,但是结果表达又是确定的.因为promoter的 ...
- Python笔记_第三篇_面向对象_4.单下划线和双下划线
说道这里我们需要稍微暂停一下.前面我们说到了类是作为一个对象存放容器.这个容器里面有属性和方法.最好的理解类的方式就是把类想想成一个容器. 然后构造了一个析构函数和构造函数,然后又对object和se ...
- drf三大认证补充
频率认证 源码分析部分 def check_throttles(self, request): for throttle in self.get_throttles(): if not throttl ...
- 简述cookies 和 session
session HTTP协议本身是无状态的,本身并不能支持服务端保存客户端的状态信息,于是,Web Server中引入了session的概念,用来保存客户端的状态信息. 1)当一个用户向服务器发送第一 ...
- 17.3.13--python编码问题
1----字符编码: 字符编码(英语:Character encoding).字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式.自然数串行.8位组或者电脉冲),以便文本在计算机中存储和 ...
- webfrom 控件
服务器基本控件: button: text属性 linkbutton:text属性,它是一个超链接模样的普通button hyperlink: navigateurl:链接地址,相当于<a> ...
- 关于前端jquery的总结
简介 jQuery是一个JavaScript库,特性丰富,包含若干对象和很多函数,可以代替传统DOM编程的操作方式和操作风格,通过对DOM API.DOM事件的封装,提供了一套全新的API,这套全新 ...