使用对象代替 if 及 switch
1 | let name = 'lisi'; |
- 判断过后有较多处理逻辑的还需要使用if或者switch
使用Array.from 快速生成数组
1
let hours = Array.from({ length: 24 }, (value, index) => index + '时');
使用router.beforeEach处理跳转前逻辑
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
// 首页
const Home = (resolve => {
require.ensure(['../views/home.vue'], () => {
resolve(require('../views/home.vue'))
})
})
let base = `${process.env.BASE_URL}`;
let router = new Router({
mode: 'history',
base: base,
routes: [
{
path: '/',
name: 'home',
component: Home,
meta: { title: '首页' }
},
]
})
router.beforeEach((to, from, next) => {
let title = to.meta && to.meta.title;
if (title) {
document.title = title; // 设置页面 title
}
if (to.name === 'home') {
// 拦截并跳转至 page2 单页,$openRouter 方法在第 5 节中封装
Vue.$openRouter({
name: 'page2'
});
}
next();
})
export default router - 注意最后需要调用next()方法执行路由跳转*
路由跳转尽量使用name而不是path
1
2
3
4
5
6
7
8this.$router.push({
name: 'page1'
});
// 而不是
this.$router.push({
path: 'page1'
});循环渲染添加 v-bind:key || :key (尽量使用id而不是index)
- 因为如果在数组中间插入值,其之后的index会发生该拜年,即使数据没变Vue也会进行重新渲染;
使用computed代替watch
- watch:当监测的属性变化时会自动执行对应的回调函数
- computed: 计算属性只有在它的相关依赖发生改变时才会重新求值
统一管理缓存变量
- 使用整合的常量管理
- types.js
使用setTimeout 代替 setInterval
不要使用for in 循环遍历数组
- 其会遍历数组原型链上的属性
1
2
3
4
5
6
7
8
9
10
11
12let arr = [1, 2];
for (let key in arr) {
console.log(arr[key]); // 会正常打印 1, 2
}
// 但是如果在 Array 原型链上添加一个方法
Array.prototype.test = function() {};
for (let key in arr) {
console.log(arr[key]); // 此时会打印 1, 2, ƒ () {}
}