当前位置: 首页 > 知识库问答 >
问题:

vue2.6 router.js 路由文件的这样写法是按需加载吗?

车峻熙
2025-01-14

现在第一次打开登录页面,把所有路由的页面.js全部加载了,第一次打开时间很长,
按网上的路由按需加载方式设置了,没有起作用。

export const constantRoutes = [
  {
    path: '/login',
    component: () => import(/* webpackChunkName: "login" */ '@/views/login/index'),
    meta: {
      navigation: true
    },
    hidden: true
  }
]

const createRouter = () => new Router({
  // mode: 'history', // require service support
  scrollBehavior: () => ({
    y: 0
  }),
  //base: "/Hisense/www/web/",
  routes: constantRoutes
})

const router = createRouter()

router.$addRoutes = (params) => {
  router.matcher = new Router({ // 重置路由规则
    routes: constantRoutes.concat(fixedRoutes)
  }).matcher
  router.addRoutes(params) // 添加路由
}

解决方法,
在服务器上开启gzip压缩,解决加载时间长的问题了。

共有2个答案

朱阳晖
2025-01-14

在服务器上开启gzip压缩,解决加载时间长的问题了。

白吕恭
2025-01-14

不是按需加载

在 Vue 2.6 中,如果你的 router.js 文件中的路由配置没有正确地使用动态导入(import()),那么即使你按照网上的按需加载方式设置了,也可能没有实现真正的按需加载。

通常,按需加载(也称为代码分割)是通过动态导入来实现的。以下是一个基本的例子,展示了如何在 Vue Router 中使用动态导入来实现按需加载:

// router.js

import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

const routes = [
  {
    path: '/login',
    name: 'Login',
    // 使用动态导入实现按需加载
    component: () => import(/* webpackChunkName: "login" */ './views/Login.vue')
  },
  {
    path: '/home',
    name: 'Home',
    // 其他页面的按需加载
    component: () => import(/* webpackChunkName: "home" */ './views/Home.vue')
  },
  // 其他路由配置...
];

const router = new Router({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
});

export default router;

在上面的例子中,component 属性使用了箭头函数和 import() 语法来动态导入组件。Webpack 会识别这种语法,并自动将代码分割成单独的块(chunks),这些块只有在需要时才会被加载。

如果你的 router.js 文件中的路由配置没有使用这种动态导入的方式,而是直接引入了所有组件,那么所有相关的 .js 文件都会在应用启动时被加载,从而导致第一次打开时间很长。

请检查你的 router.js 文件,确保你使用了动态导入的方式,并且 Webpack 配置正确支持了代码分割。如果你已经这样做了,但问题仍然存在,可能需要检查其他可能的配置问题或代码错误。

 类似资料:
  • 我正在尝试将我的angular2应用程序从已弃用的路由器切换到推荐的路由器[https://angular.io/docs/ts/latest/guide/router.html][1]。我正在使用angular2 cli帮助构建我的项目。我已经在没有cli的种子项目中成功地完成了这一点,但是在使用cli执行此操作时,我一直收到此错误: 加载错误http://localhost:4200/app.

  • 本文向大家介绍怎样动态加载路由?相关面试题,主要包含被问及怎样动态加载路由?时的应答技巧和注意事项,需要的朋友参考一下 vue-router的addRoutes方法

  • 本文向大家介绍详解基于angular路由的requireJs按需加载js,包括了详解基于angular路由的requireJs按需加载js的使用技巧和注意事项,需要的朋友参考一下 最近终于不忙了!!有时间沉淀一下之前学到的angular东东!! angular路由想必大家已经不陌生了!(陌生的去看我之前那篇手把手教你配置angular路由!) angular路由作为单页面应用,切换页面的时候都是一

  • 我安装了新的Ruby(2.0)和Rails 4.0,当我做“Rails新test_app”时,我会得到以下信息。有人遇到这个吗? [devuser@devbox~]$railstest_app /usr/本地/库/红宝石/2.0.0/红宝石/core_ext/kernel_require.rb:45:

  • 本文向大家介绍什么是按需加载?相关面试题,主要包含被问及什么是按需加载?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 当用户触发了动作时才加载对应的功能。触发的动作,是要看具体的业务场景而言,包括但不限于以下几个情况:鼠标点击、输入文字、拉动滚动条,鼠标移动、窗口大小更改等。加载的文件,可以是JS、图片、CSS、HTML等。

  • 本文向大家介绍requirejs按需加载angularjs文件实例,包括了requirejs按需加载angularjs文件实例的使用技巧和注意事项,需要的朋友参考一下 之前分享了一篇用ocLazyLoad实现按需加载angular js文件的博客.本来当时想会使用一种方法就行了.可最近刚好有时间,在网上查找了一下requirejs实现angular js文件按需加载的资料.方案如下: 项目的主结构

  • 出于性能的考虑,我们会对模块和组件进行按需加载。 按需加载组件 通过 umi/dynamic 接口实现,比如: import dynamic from 'umi/dynamic'; const delay = (timeout) => new Promise(resolve => setTimeout(resolve, timeout)); const App = dynamic({ loa

  • 我正在尝试运行一个jruby应用程序。每当我启动jruby脚本时,应用程序就会抛出一个错误 loaderror:没有这样的文件可加载--openssl/dummy(root)在/home/ubuntu/.rvm/gems/jruby-1.7.3/gems/jruby-0.8.2/lib/shared/jruby-openssl.rb:15 require at org/jruby/rubykern