zoukankan      html  css  js  c++  java
  • Vue按需加载需要的路由(路由懒加载和修改chunk.js文件名)

    一、第一种写法:

    1.在src/下新建router.config.js:

     1 export default[
     2   {
     3     path: '/home',
     4     component: (resolve) => require(['./components/home/Home.vue'], resolve),
     5     children: [
     6       {
     7         path: 'revisepassword/:username',
     8         component: (resolve) => require(['./components/revisepassword/Revisepassword.vue'], resolve)
     9       },
    10       {
    11         path: 'userfeedback/:username',
    12         component: (resolve) => require(['./components/userfeedback/Userfeedback.vue'], resolve)
    13       },
    14       {
    15         path: 'aboutus',
    16         component: (resolve) => require(['./components/aboutus/Aboutus.vue'], resolve)
    17       }
    18     ]
    19   },
    20   {
    21     path: '/rainie',
    22     component: (resolve) => require(['./components/rainie/Rainie.vue'], resolve)
    23   },
    24   {
    25       path: '/radar',
    26       component: (resolve) => require(['./components/radar/Radar.vue'], resolve)
    27   },
    28   {
    29     path: '/weatherforecast',
    30     component: (resolve) => require(['./components/weatherforecast/Weatherforecast.vue'], resolve)
    31   },
    32   {
    33     path: '/login',
    34     component: (resolve) => require(['./components/login/Login.vue'], resolve)
    35   },
    36   {
    37     path: '/register',
    38     component: (resolve) => require(['./components/register/Register.vue'], resolve)
    39   },
    40    {
    41     path: '/',
    42     redirect: '/login'
    43   },  
    44   {
    45     path: '*',
    46     redirect: '/login'
    47   }
    48 ]

    2.在main.js中:

     1 import Vue from 'vue'
     2 import App from './App.vue'
     3 import VueRouter from 'vue-router'
     4 import routerConfig from './router.config.js'
     5 
     6 const router = new VueRouter({
     7   // 让滚动条滚回原来的位置
     8   scrollBehavior: () => ({ y: 0 }),
     9   // 去除vue路由分隔的#号
    10   // mode: 'history',
    11     routes: routerConfig
    12 })
    13 
    14 new Vue({
    15   el: '#app',
    16   router,
    17   render: h => h(App)
    18 })

    二、第二种写法更改高级一些(推荐)

    1.在src/下新建router文件夹,在router文件夹下新建index.js,在index.js中:

      1 import Vue from 'vue'
      2 import Router from 'vue-router'
      3 
      4 Vue.use(Router)
      5 
      6 const Home = (resolve) => {
      7     import('../components/home/Home').then((module) => {
      8         resolve(module)
      9     })
     10 }
     11 
     12 const Revisepassword = (resolve) => {
     13     import('../components/revisepassword/Revisepassword').then((module) => {
     14         resolve(module)
     15     })
     16 }
     17 
     18 const Userfeedback = (resolve) => {
     19     import('../components/userfeedback/Userfeedback').then((module) => {
     20         resolve(module)
     21     })
     22 }
     23 
     24 const Aboutus = (resolve) => {
     25     import('../components/aboutus/Aboutus').then((module) => {
     26         resolve(module)
     27     })
     28 }
     29 
     30 const Rainie = (resolve) => {
     31     import('../components/rainie/Rainie').then((module) => {
     32         resolve(module)
     33     })
     34 }
     35 
     36 const Radar = (resolve) => {
     37     import('../components/radar/Radar').then((module) => {
     38         resolve(module)
     39     })
     40 }
     41 
     42 const Weatherforecast = (resolve) => {
     43     import('../components/weatherforecast/Weatherforecast').then((module) => {
     44         resolve(module)
     45     })
     46 }
     47 
     48 const Login = (resolve) => {
     49     import('../components/login/Login').then((module) => {
     50         resolve(module)
     51     })
     52 }
     53 
     54 const Register = (resolve) => {
     55     import('../components/register/Register').then((module) => {
     56         resolve(module)
     57     })
     58 }
     59 
     60 // 配置路由
     61 export default new Router({
     62     routes: [
     63         {
     64             // 配置默认的路由(根路由)
     65             path: '/',
     66             redirect: '/login'
     67         },
     68         {
     69             path: '/home',
     70             component: Home,
     71             children: [
     72                 {
     73                     path: 'revisepassword/:username',
     74                     component: Revisepassword
     75                 },
     76                 {
     77                     path: 'userfeedback/:username',
     78                     component: Userfeedback
     79                 },
     80                 {
     81                     path: 'aboutus',
     82                     component: Aboutus
     83                 }
     84             ]
     85         },
     86         {
     87             path: '/rainie',
     88             component: Rainie
     89         },
     90         {
     91             path: '/radar',
     92             component: Radar
     93         },
     94         {
     95             path: '/weatherforecast',
     96             component: Weatherforecast
     97         },
     98         {
     99             path: '/login',
    100             component: Login
    101         },
    102         {
    103             path: '/register',
    104             component: Register
    105         }
    106     ]
    107 })

    2.在main.js中:

     1 import Vue from 'vue'
     2 import App from './App.vue'
     3 
     4 import router from './router'
     5 
     6 new Vue({
     7   el: '#app',
     8   router,
     9   render: h => h(App)
    10 })

    3.注意别忘了安装插件

    第二种:使用webpck的import()来做代码分割——import('./nice-scroll').then(init => init(dom))

    webpack dynamic import出错: SyntaxError: ‘import’ and ‘export’ may only appear at the top level


    解决办法: cnpm install --save-dev babel-plugin-syntax-dynamic-import


    然后调整babel-loader配置如下:

    1 use: {
    2     loader: 'babel-loader',
    3     options: {
    4 
    5         "plugins": [
    6             "syntax-dynamic-import"
    7         ]
    8     }
    9 }

     三、默认情况下,加载的路由js是按照0.js  1.js  2.js....命名的,想要修改js的名字

    在webpack.config.js中的output:{}中添加

    chunkFilename: '[chunkhash].chunk.js'

     

     

  • 相关阅读:
    Windows、Linux、ARM、Android、iOS全平台支持的RTMP推流组件EasyRTMPAndroid如何修改分辨率和码率
    高稳定性、低延时的网络全终端播放器H5播放器网页直播/点播播放器EasyPlayer.js播放flv格式视频显示跨域问题解决方案
    RTSP播放器网页web无插件直播流媒体音视频播放器EasyPlayerRTSP实现支持H265编码格式过程介绍
    简单、高效、易用的全平台(Windows/Linux/ARM/Android/iOS)web实现RTMP推送组件EasyRTMPAndroid如何开启悬浮窗
    模板学习实践一 accumulationtraits
    模板学习实践二 pointer
    黑客屏保 代码来自网络搜索 做了部分改动
    设计模式之模板模式 template
    CMAKE 教程前两章节学习
    cmake 及make 实践记录
  • 原文地址:https://www.cnblogs.com/tian-long/p/8417935.html
Copyright © 2011-2022 走看看