前端vue部分小结

时光总嘲笑我的痴心妄想 提交于 2020-03-05 19:19:32

对Vue进一步理解
1、Vue的特点(数据的双向绑定和组件化)
A.响应式:可以实现数据和视图层的双向绑定,可以只关心数据,试图会自动同步,减少了DOM 操作
B.组件化、模块化:将大片的代码拆分成若干个小的模块,增强了代码的复用性和可读性,便于管理

2、vue与后台交互的方法
Get post put delete
Get:将提交的数据放在URL中,即以明文的方式传递参数数据(以?分割URL地址和数据,参数间以&相连接);
因为受URL长度限制,传递的数据量较小,最大不超过2kB;
会产生一个TCP数据包,会把header和data一并发出去,服务器响应200并传回相应的数据
Post:将提交的数据放在请求体中;
传递的数据量较大,一般不受限制,(大小取决于服务器的处理能力);
会产生两个TCP数据包,浏览器会先把header发出去,浏览器响应100(continue)后,浏览器再发送data,服务器响应200,并回传相应的数据

get在浏览器回退的时候是无害的,而post会再次提交请求;get请求参数会被完整的保留在浏览器的历史记录中,而post不会;对于参数的数据类型,Get只接收ASCII字符,而post没有限制;get参数通过URL传递,post放在request body中

Post和get本质上是没有区别的;GET和POST是HTTP协议中两种发送请求的方法,而HTTP的底层是TCP/IP,所以GET/POST的底层也是TCP/IP,本质上都是TCP链接

优缺点对比:get效率高,但安全性较低;post效率低,但安全性高

3、vue数据双向绑定的原理:
通过发布-订阅模式+数据劫持实现。通过Object.defineProperty()来实现对属性的劫持,达到监听数据变动的目的当把一个普通的JavaScript对象传给vue实例的data时,vue将遍历此对象所有的属性,并使用Object.defineProperty()把这些属性全部转为getter/setter,在内部他们让vue追踪依赖,在属性被访问和修改时同时变化;
将MVVM作为数据绑定的入口,整合observer,compile和watcher三者,通过observer来监听自己的model的数据变化,通过conpile来解析解析编译模板指令,最终用watcher和搭起的observer和compile之间的通信齐奥廖,达到数据变化->视图更新;视图交互变化->数据model变更的双向绑定效果

4、什么是单页面
即一个web项目只有一个页面(一个html文件),把整个项目的所有内容分成了很多的小块,即组件,每个组件都是独立的一部分,再做一个html作为容器,需要哪个组件时直接引入,跳转时跳转组件,当需要加载某个组件时,js会动态创建这些组件里的html、css等。也就是说一旦首次加载完成了,SPA不会因为用户的操作而进行页面的重新加载或跳转,而是利用JavaScript动态的变换html的内容来实现UI与用户的交互。
由于避免了页面的重加载,SPA可以提供较为流畅的用户体验

5、组件之间的跳转方式
在router里面配置path,通过路径跳转。直接跳转的时候用router-link标签,给标签的to属性赋值路径;在js中设置跳转用this.router.push(path:/)paththis.router.push({path:’/---’}) path为跳转路径(此方法会产生历史记录);this.router.replace();此方法不会产生历史记录;this.$router.go(n)为向前或向后跳转n个页面

6、组件之间的信息传递
父给子:父组件中v-bind绑定,子组件中props接收
子给父:①主要通过事件传递数据给父组件(需要用到自定义事件)
在父组件中定义一个方法,来接收子组件的通过事件发来的数据,函数接收一个参数,就是子组件传来的数据;在父组件中,给子组件模板绑定一个自定义事件处理函数;在子组件中触发事件,通过emit()emit()方法传递数据,emit有两个参数,第一个是 在父组件中子组件模板绑定的自定义事件,第二个是要发送的数据
②通过$parent refsdatavuerefs来直接获取数据,但是这种方法只能获取到组件中data属性中的值 兄弟之间:先声明一个公共的vue对象,发送方通过emit()发送数据,接收方通过$on()接收数据

7、routerrouter和route的区别
routerhistory使router是声明的一个实例,相当于一个全局的路由器对象(返回上一个history使用router.go方法)
$route是当前router的一个URL,是当前正在跳转的路由对象

8、路由守卫
就是进入当前路由前,有个“门卫”进行保护;
beforeRouteEnter就是完成路由守卫的,表示进当前路由前要做什么;该函数在点击路由连接,进入组件到但是组件还没有显示时执行
beforeRouteEnter:function(to,from,next){///}
to:表示要去的路由
From:表示从哪来的
Next():表示下一步要干啥,next(‘/indexPage’),即下一步要跳到首页,永远不会跳到当前组件,只能跳到首页组件
可以在进入组件时判断有没有登陆,若未登录就跳到登陆组件

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!