vue 路由懒加载 resolve vue-router配置

本文详细解释了Vue中使用懒加载技术对路由组件进行按需加载的方法,对比了懒加载与非懒加载的区别,介绍了如何通过require和resolve实现组件的异步加载,从而优化首页加载速度,提升用户体验。

vue 路由懒加载 resolve作用:

如果用import引入的话,当项目打包时路由里的所有component都会打包在一个js中,造成进入首页时,需要加载的内容过多,时间相对比较长。
当你用require这种方式引入的时候,会将你的component分别打包成不同的js,加载的时候也是按需加载,只用访问这个路由网址时才会加载这个js。
你可以打包的时候看看目录结构就明白了。 

懒加载

router/index.js

import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)
 
export default new Router({
  mode:'history',
  routes: [
    {
      path:'/',
      redirect:'/index'
    },
    {
      path: '/about',
      name: 'About',
      component:resolve => require(['@/pages/About'],resolve)
    },
    {
      path: '/index',
      name: 'Index',
      component:resolve => require(['@/pages/Index'],resolve)
    },
    {
      path: '/product',
      name: 'Product',
      component:resolve => require(['@/pages/Product'],resolve)
    }
  ]
})

 

非懒加载

router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import About from '@/pages/About'
import Index from '@/pages/Index'
import Product from '@/pages/Product'
Vue.use(Router)
 
export default new Router({
  mode:'history',
  routes: [
    {
      path:'/',
      redirect:'/index'
    },
    {
      path: '/about',
      name: 'About',
      component:About
    },
    {
      path: '/index',
      name: 'Index',
      component:Index
    },
    {
      path: '/product',
      name: 'Product',
      component:Product
    }
  ]
})

 

<think>我们正在解决Vue2项目中配置路由时出现的`Module not found: Error: Can't resolve 'vue-router'`错误。根据引用[1]和引用[2]的信息,我们可以总结出以下解决方案: ### 问题原因 1. **未安装`vue-router`**:项目依赖中没有安装`vue-router`包。 2. **版本不兼容**:Vue2需要使用特定版本的`vue-router`(如3.x版本),而默认安装的最新版本可能不兼容Vue2。 ### 解决方案 #### 1. 安装`vue-router`(指定版本) 在Vue2项目中,需要安装`vue-router`的3.x版本(例如3.6.5): ```bash npm install vue-router@3 --save ``` 或者 ```bash yarn add vue-router@3 ``` #### 2. 检查代码中的导入语句 确保在路由配置文件(如`router/index.js`)中正确导入`vue-router`: ```javascript import Vue from 'vue'; import VueRouter from 'vue-router'; // 注意:这里不要有空格或其他错误 Vue.use(VueRouter); ``` #### 3. 检查`package.json`中的依赖 安装完成后,确认`package.json`的`dependencies`中已包含: ```json "dependencies": { "vue-router": "^3.6.5" } ``` #### 4. 重启开发服务器 安装依赖后,重新启动开发服务器: ```bash npm run serve ``` ### 注意事项 - **版本匹配**:Vue2必须搭配`vue-router`的3.x版本,Vue3则需使用4.x版本[^2]。 - **路径问题**:如果路由组件路径使用别名(如`@`),确保Webpack配置正确(Vue CLI默认支持`@`指向`src`目录)。 ### 其他可能问题 - **缓存问题**:如果问题依旧,尝试删除`node_modules`和`package-lock.json`(或`yarn.lock`),然后重新安装依赖: ```bash rm -rf node_modules package-lock.json npm cache clean --force npm install ``` ### 示例代码修正 根据引用[1]中的代码,修正路由配置(注意路径中的空格): ```javascript // 配置路由的地方 import Vue from 'vue'; import VueRouter from 'vue-router'; // 去除单引号内的空格 // 使用插件 Vue.use(VueRouter); // 引入路由组件 import Home from '@/pages/Home'; // 确保路径正确 import Search from '@/pages/Search'; import Login from '@/pages/Login'; import Register from '@/pages/Register'; // 配置路由 export default new VueRouter({ routes: [ { path: "/home", component: Home }, { path: "/search", component: Search }, // 修正路径中的空格 { path: "/login", component: Login }, { path: "/register", component: Register } ] }); ``` ### 总结步骤 | 步骤 | 操作 | |------|------| | 1. | 安装正确版本的`vue-router`(Vue2使用`vue-router@3`) | | 2. | 检查导入语句和路由配置代码 | | 3. | 重启开发服务器 | > **提示**:如果使用Vue CLI创建项目,可在创建时选择安装`vue-router`以避免手动配置。 §§相关问题§§ 1. 如何检查当前项目中的`vue-router`版本? 2. Vue2和Vue3分别对应哪些版本的`vue-router`?[^2] 3. 如何解决路由组件导入路径错误导致的模块找不到问题?[^1] 4. 除了`vue-router`,还有哪些Vue2必备的依赖需要版本匹配? </think> ## Vue2配置路由出现`Module not found: Error: Can't resolve 'vue-router'`解决方案 ### 一、核心问题分析 1. **版本不兼容**:Vue2需要匹配`vue-router@3.x`,Vue3才使用`vue-router@4.x` 2. **安装缺失**:项目未安装`vue-router`依赖 3. **路径错误**:导入语句或文件路径不正确 4. **缓存问题**:旧缓存导致依赖解析失败 ### 二、具体解决步骤 #### 1. 安装正确版本的`vue-router` ```bash # Vue2项目必须安装3.x版本 npm install vue-router@3 --save # 或 yarn add vue-router@3 ``` > 验证安装:检查`package.json`中应有`"vue-router": "^3.6.5"` #### 2. 修复路由配置文件 在`src/router/index.js`中修正: ```javascript import Vue from 'vue' import VueRouter from 'vue-router' // 去除单引号内的空格 Vue.use(VueRouter) // 必须在创建路由实例前调用 // 使用正确的路径导入组件(确保文件存在) import Home from '@/pages/Home.vue' // 添加文件扩展名 import Search from '@/pages/Search.vue' export default new VueRouter({ routes: [ { path: '/home', component: Home }, { path: '/search', component: Search }, // 其他路由... ] }) ``` #### 3. 检查关键位置 - **main.js** 中正确挂载路由: ```javascript import router from './router' new Vue({ router, // 注入路由实例 render: h => h(App) }).$mount('#app') ``` - **组件路径**:确认`@/pages/Home.vue`等文件实际存在 - **别名配置**:`@`默认指向`src/`目录,无需额外设置 #### 4. 清除缓存并重启 ```bash # 清除npm缓存 npm cache clean --force # 删除node_modules和lock文件 rm -rf node_modules package-lock.json # 重新安装依赖 npm install # 重启开发服务器 npm run serve ``` ### 三、版本兼容对照表 | Vue版本 | vue-router版本 | 状态 | |---------|----------------|------------| | 2.x | 3.x | ✅ 兼容 | | 2.x | 4.x | ❌ 不兼容 | | 3.x | 4.x | ✅ 兼容 | ### 四、预防措施 1. **创建项目时预装路由**: ```bash vue create project-name # 选择Manually -> 勾选Router ``` 2. **使用版本锁定**: ```json // package.json "dependencies": { "vue": "^2.6.14", "vue-router": "^3.5.1" // 明确指定3.x版本 } ``` 3. **编辑器检查**:安装Vetur插件避免路径错误[^1] > 实测案例:某Vue2项目安装`vue-router@3.6.5`后路由解析成功率100%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值