1,路由懒加载写法:
// 我所采用的方法,个人感觉比较简洁一些,少了一步引入赋值。 const router = new VueRouter({ routes: [ path: '/app', component: () => import('./app'), // 引入组件 ] }) // Vue路由文档的写法: const app = () => import('./app.vue') // 引入组件 const router = new VueRouter({ routes: [ { path: '/app', component: app } ] })
2,路由的项目启动页和404页面
一般项目都会设置这个,如果默认进入地址会跳到login页面,如果你输入的是一个没有用的路由或者是空路由会跳转到notFind页面(你自己设置的404页面)
export default new Router({ routes: [ { path: '/', // 项目启动页 redirect:'/login' // 重定向到下方声明的路由 }, { path: '*', // 404 页面 component: () => import('./notFind') // 或者使用component也可以的 }, ] })
3,setTimeout/setInterval this指向改变,无法用this访问VUe实例
这个地方大家的默认方法肯定是:
//使用变量访问this实例 let self=this; setTimeout(function () { console.log(self);//使用self变量访问this实例 },1000);
其实这个地方我们可以用箭头函数,因为箭头函数会改变this的指向,而指向的刚好是自己的父级this,所以我们可以这样用:
//箭头函数访问this实例 因为箭头函数本身没有绑定this setTimeout(() => { console.log(this); }, 500);
这样我们的this就是指向我们的vue实例了
4,深度watch与watch立即触发回调
watch很多人都在用,但是这watch中的这两个选项deep、immediate,或许不是很多人都知道,我猜。
选项:deep
在选项参数中指定 deep: true,可以监听对象中属性的变化。
选项:immediate
在选项参数中指定 immediate: true, 将立即以表达式的当前值触发回调,也就是默认触发一次。
watch: { obj: { handler(val, oldVal) { console.log('属性发生变化触发这个回调',val, oldVal); }, deep: true // 监听这个对象中的每一个属性变化 }, step: { // 属性 //watch handler(val, oldVal) { console.log("默认触发一次", val, oldVal); }, immediate: true // 默认触发一次 }, }