1、线程和进程的区别?
1、进程是一段正在执行的程序,是资源分配的基本单元,而线程是CPU调度的基本单元。
2、进程间相互独立进程,进程之间不能共享资源,一个进程至少有一个线程,同一进程的各线程共享整个进程的资源(寄存器、堆栈、上下文)。
3、线程的创建和切换开销比进程小。
2、vue中的路由钩子函数有哪些?
定义:路由钩子主要是给使用者在路由发生变化时进行一些特殊的处理而定义的函数。
在路由跳转的时候,我们需要一些权限判断或者其他操作。这个时候就需要使用路由的钩子函数。
vue里面提供了三大类钩子,两种函数
1、全局钩子 2、某个路由的钩子 3、组件内钩子
两种函数:
1.Vue.beforeEach(function(to,form,next){}) /*在跳转之前执行*/
2.Vue.afterEach(function(to,form))/*在跳转之后判断*/
1.全局钩子函数:对全局有效的一个函数
beforeEach函数有三个参数:
- to:router即将进入的路由对象
- from:当前导航即将离开的路由
- next:Function,进行管道中的一个钩子,如果执行完了,则导航的状态就是 confirmed (确认的);否则为false,终止导航。
2、单个路由的钩子函数
主要用于写某个指定路由跳转时需要执行的逻辑
const router = new VueRouter({
routes: [
{
path: '/login',
component: Login,
beforeEnter: (to, from, next) => {
// ...
},
beforeLeave: (to, from, next) => {
// ...
}
}
]
})
3、路由组件的钩子
beforeRouteLeave(to, from, next) { //离开时
next()
},
beforeRouteEnter(to, from, next) { //进入时
next()
},
beforeRouteUpdate(to, from, next) {//更新时
next()
},
data:{},
method: {}
3、vue的两个特点?
Vue最核心的两个特点,响应式 和 组件化。
响应式:这也就是vue.js最大的优点,通过MVVM思想实现数据的双向绑定,通过虚拟DOM让我们可以用数据来操作DOM,而不必去操作真实的DOM,提升了性能。且让开发者有更多的时间去思考业务逻辑。
组件化:把一个单页应用中的各个模块拆分到一个个组件当中,或者把一些公共的部分抽离出来做成一个可复用的组件。所以组件化带来的好处就是,提高了开发效率,方便重复使用,使项目的可维护性更强。
4、vue中拦截器?
场景:1、每次都要在请求中加入,token ,判断是否登陆,如果vue系统中,所有的请求都加入token,比较麻烦,有没有,每次发送求加入,vue 提供了一种方法,拦截器。
2、解决请求任意接口之前进行统一拦截判断,看是否返回500或404等错误并在页面给出错误提示。
import axios from 'axios'
// 配置默认的host,假如你的API host是:http://api.htmlx.club
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
if (window.localStorage.getItem('access-token')) {
config.headers.Authorization = window.localStorage.getItem('access-token');
}
console.log(window.localStorage.getItem('access-token'));
return config
}, function (error) {
// 对请求错误做些什么
return Promise.reject(error)
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
// 对响应数据做点什么
return response
}, function (error) {
// 对响应错误做点什么
return Promise.reject(error)
});
5、vuex数据刷新后丢失问题解决办法
在vue项目中我们一般会用到Vuex对数据进行管理,但我们刷新页面时,store数据会全部丢失,如何解决呢?其实很简单,使用vuex的插件来把store中的数据缓存到本地就好了,我用的是vuex-persistedstate,应该还有其他插件。使用方法如下:
1.先安装vuex-persistedstate
npm install --save vuex-persistedstate
import createPersistedState from 'vuex-persistedstate'
const store = new Vuex.Store({
state: {
card: {},
},
mutations: {
updatecard(state, payload) {
state.card = payload
},
},
//这是把所有数据缓存到本地 也可以进行配置
plugins: [createPersistedState()],
})
export default store;
2、将vuex中的数据直接保存到浏览器缓存中(sessionStorage、localStorage、cookie)
3、在页面刷新的时候再次请求远程数据,使之动态更新vuex数据
4、在父页面向后台请求远程数据,并且在页面刷新前将vuex的数据先保存至sessionStorage(以防请求数据量过大页面加载时拿不到返回的数据)
具体看官网介绍!!!!!!!!