web 前端

路由守卫,路由传参方法,闭包是什么?优缺点?使用环境?面向对象的

2019-04-30  本文已影响0人  萬wan事顺意

1.路由守卫?

只有用户登录并有某些权限时才能进入某些路由,简单的说,就是通过给路由跳转加一个验证,当我们在离开页面时,会提示还未保存,是否确定离开,就算是守卫的一种,设置方法:router.veforeEach((to,from,next)=>{})

to:要进入的路由,

from:从哪个路由离开,

next:决定是否展示你要看的页面。

可以引入正则,

正则:正则表达式是对字符串操作的一种逻辑公式,它是规则!

2.路由传参方法?

(1)通过query的方式也就是?的方式路径会显示传递的参数?

(2)通过params的方式,路径不会显示传递的参数?

(3)通过:冒号的的形式传递传参?

(4)router-link to 中的query来传参

query更类似get params更类似post

都是通过ID传参,或name。

3.闭包是什么?优缺点?使用环境?(说一下垃圾回收机制)

说到闭包不得不说变量的作用域,变量作用域无非两种,全局变量,和局部变量,

函数内部可以直接读取全局变量,函数外部无法读取内部变量,

闭包是子函数可以使用父函数的局部变量,如果不去释放会存在整个作用域链上,释放方法就是return,

作用域链就是子函数使用父函数的局部变量,如果附函数没有就会向父函数的父函数去找,直到找到位置,而这一过程叫做作用域链。

缺点:不释放变量保存在内存中,内存占用过多。

优点:函数内部的变量更安全,不会轻易被改变。

4..token值是什么

在登录的时候会用到,当客户端多次向服务器请求数据时,服务器就需要多次从数据库查询用户名和密码并进行对比,判断用户名和密码是否正确,并作出相应提示,但这样无疑会增加服务器端的压力。然后呢,我们就想有没有一种方式只需要验证用户而不需要每次都查询数据库判断用户名和密码是否正确,在这种请求下,引入了token来解决服务器多次访问数据库问题。token是服务端生成的一串字符串,作为客户端请求时辨别客户身份的一个令牌,当用户第一次登陆成功时,服务器会生成一个token,将此token返回给前端的cookie,前端就进行存储,前端在进行数据请求的时候发送token到后端,后端进行token验证,而且会进行过期时间的验证

5.面向对象的理解

面向对象就是你不需要知道他的内部实现,只需要知道他怎么用;

属性放在构造函数中,方法放在原型中

面向对象就是oop,

面向对象的三大特征就是 继承,封装,多态,

继承就是子类拥有父类的所有属性和方法, 抽取了重复的代码,使代码重用

发生在两个对象之间,继承对象可以使用被继承的对象的一些属性,方法,函数等,

封装就是将各个独立功能设计成一个个独立的单元,形成一个有规划设计的整体,减小耦合,提高内聚,避免牵一发而动全身,方便对程序的修改

6.你都怎么优化你的项目 ,具体做了哪些东西?

减少http请求数,保持页面简洁,减少资源的使用,如果页面复杂,就要合理设置http缓存,尽可能将外部的脚本,样式进行合并,减少js和css的请求,也都可以用响应的工具进行压缩,图片尽量使用雪碧图,减少image的请求,一般将外部脚本放在靠后的位置,要减少作用域链查找,减少闭包的使用,

7.登录是怎么实现的,登陆之后权限判断是怎么匹配的。

调用登录接口,在回调函数中将token存储到cookie中,

token就是服务端返回的一个字符串,作为客户端请求时辨别客户身份的一个令牌,当用户第一次登陆成功时,服务器会生成一个token,将此token返回给前端的cookie,前端就进行存储,前端在进行数据请求的时候发送token到后端,后端进行token验证,而且会进行过期时间的验证

8.动态创建路由是怎么实现的?

通过router-link to  可以进行跳转,还有this.$router.push(); this.$router.replace({})

里面还可以传参。通过query或者params

9.js兼容问题;even事件问题“ev||window.event; ev兼容火狐和谷歌,IE9以上支持,

event,谷歌和IE支持,火狐不支持

阻止事件冒泡:IE中,e.cancelBubble=true;

  非IE  e.stopPropagation

获取DOM父节点,子节点的方式不同,

非IE  parentNode  parentNode.childNode;

IE  parentElement  parentElement.children;

css兼容问题: 获取元素的非行间样式; 

上一篇下一篇

猜你喜欢

热点阅读