vue数据绑定的原理
采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应监听回调。(Object的defineproperty属性,重写data里面的get与set)
谈谈vue命名视图
就是给router-view增加个name属性,路由表里直接name属性的值为某个文件。为视图展示更好的做了区分,跟router的命名一个道理。
vue深度监听
watch监听中增加了个属性deep:true,就代表深度监听。deep的意思就是深入观察,监听器会一层层的往下遍历。为什么要用呢,因为如果你监听的是一个对象的话,不使用深度监听是不会触发这个handler方法的
聊聊你对Vue.js的template编译的理解
通过编译器 将 template 转化成 virtual node 虚拟DOM节点。通过render 函数渲染到视图中(VNode是vue的虚拟DOM节点,里面包含标签名、子节点、文本等)
谈谈vue-router
分为全局路由守卫/单个路由守卫/组件路由守卫
全局: router.beforeEach / router.afterEach
单个路由守卫:beforeEnter
组件路由守卫:beforeRouteEnter / beforeRouteUpdate / beforeRouteLeave
vue-loader是什么?使用它的用途有哪些?
vue-loader是基于webpack的。用于处理.vue文件,通过webpack打包编译成我们浏览器认识的代码
nextTick 干嘛用的,如何使用
将回调延迟到DOM 更新之后需要操作的话,就使用这个方法。
在页面视图更新完或者数据渲染完之后的操作就再写nextTick方法里,这样等数据渲染完它就会执行里面的操作
vue配置打包环境
在static文件下创建一个config.js,里面直接用window.g={里面配置开发环境/测试环境/线上环境的一些地址},再将它引入到index.html中。在整个项目中都能以window.g.api来调用了。
项目中如何结合axios封装http请求,并详解axios拦截器
先建一个http.js,引入axios。在export const jsonPost 方法,里面return axios ({ method:'post'})等一些配置
axios.interceptors.request 请求前拦截
axios.interceptors.response 请求响应拦截
请求前拦截对全局的loading,token等做出处理,不用每次调用请求前取做判断处理
请求响应拦截 对返回的状态做处理以及相对应的提示文案
简述sass与less的区别
1.编译环境不同
less是通过js编译 是在客户端处理
sass同通过ruby 是在服务器端处理
2.变量符不一样
less是用@,sass是用$
3.sass支持条件语句,可以使用if{}else{},for{}循环等等。而less不支持
vue如何封装组件
首先,使用Vue.extend()创建一个组件
● 然后,使用Vue.component()方法注册组件
● 接着,如果子组件需要数据,可以在props中接受定义
● 最后,子组件修改好数据之后,想把数据传递给父组件,可以使用emit()方法
vue-cli3跟2相比有哪些不同
1.创建项目的方式不同,3是vue create myPorject。2是vue init webpack myPorject
2. 3.0的安装项目时自动下载node-model。build没了、config没了
3. 需要自己手动在根目录下配置一个config.js
ui框架的默认样式在scoped的情况下如何修改
常用的就是深度选择器 .a >>> .b { color :red}
HTTP与HTTPS
1、http https 的概念、区别
概念:超文本网络传输协议
区别:①https需要申请安全证书(CA)
②http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
③http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
④http的连接很简单,是无状态的。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
2、tcp三次握手(http三次握手,https四次握手-中间多了次 传输 SSL 加密协议)
①客户端发送资源包给服务器端,服务器端被动接收
② 服务器端接收到资源包,发送给客户端一个新资源包和应答
③ 客户端在收到新的资源包和回应服务端收到了,二边开始传送数据!