routes: [
{
// 进行路由配置,规定'/'引入到home组件
path: '/',
component: resolve => require(['../pages/home.vue'], resolve),
meta: {
title: 'home'
}
}]
在配置路由的时候,看网上很多代码里component都是这种写法,请问resolve => require是什么意思?为什么这里的component要这么写,不直接写引用名呢?
routes: [
{
// 进行路由配置,规定'/'引入到home组件
path: '/',
component: resolve => require(['../pages/home.vue'], resolve),
meta: {
title: 'home'
}
}]
在配置路由的时候,看网上很多代码里component都是这种写法,请问resolve => require是什么意思?为什么这里的component要这么写,不直接写引用名呢?
这样写是为了 异步组件
resolve
就是 promise
的 resolve
回调,组件加载成功后调用
因为 webpack
支持多种模块规范语法 所以有很多方式的异步加载:
require(['./a', './b'], function(a, b){
console.log(a, b)
});
require.ensure([], function(require){
var a = require('./a');
console.log(a)
});
import('./a').then(a => {
console.log(a)
})
路由懒加载的一种写法
也可以写成如下,参考文档
{
path: '/',
component: () => import('../pages/home.vue'),
meta: {
title: 'home'
}
}
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
4 回答1.9k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
这是异步加载组件,当你访问 / ,才会加载 home.vue。
不过这种写法已经过时了,推荐使用 import('../home.vue')