Vue中使用import进行路由懒加载的原理分析

目录
  • 使用import进行路由懒加载的原理
    • (1)遵循规范
    • (2)调用时间
    • (3)本质
  • vue路由懒加载,使用import无法处理
    • 解决

使用import进行路由懒加载的原理

首先我们来说说,import 和 require 的区别

node 编程中最重要的思想就是模块化,import 和 require 都是被模块化所使用。

(1)遵循规范

  • require是 AMD规范引入方式
  • import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法

(2)调用时间

  • require是运行时调用,所以require理论上可以运用在代码的任何地方
  • import是编译时调用,所以必须放在文件开头

(3)本质

  • require是赋值过程,其实require的结果就是对象、数字、字符串、函数等,再把require的结果赋值给某个变量
  • import是解构过程,但是目前所有的引擎都还没有实现import,我们在node中使用babel支持ES6,也仅仅是将ES6转码为ES5再执行,import语法会被转码为require

在路由中,我们如何使用懒加载呢?

export default new VueRouter({
    routes: [
        {
            path: '/',
            component: () => import('../components/Navigator')
        }
    ]
})

使用路由懒加载的写法,只会在进入当前这个路由时候才会走 component ,然后在运行import编译加载相应的组件。

可以理解也是为通过Promise的resolve机制。因为Promise函数返回的Promise为resolve组件本身,而我们又可以使用import来导入组件。

注意:import会返回一个Promise对象。

setTimeout(() => {
    import('./dynamic-data.js').then(res => {
        console.log(res.default.message)
    })
}, 1500)
// dynamic-data.js
export default {
    message: 'this is message'
}

vue路由懒加载,使用import无法处理

问题原因:import属于异步引用组件,需要特殊的babel-loader处理

解决

npm i babel-plugin-syntax-dynamic-import -D

在 .bablerc中引入syntax-dynamic-import插件

{
    "presets": ["env"],
    "plugins": ["syntax-dynamic-import"]
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue-router路由懒加载及实现的3种方式

    什么是路由懒加载? 也叫延迟加载,即在需要的时候进行加载,随用随载. 官方解释: 1:当打包构建应用时,JavaScript 包会变得非常大,影响页面加载. 2:如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 官方在说什么呢?为什么需要懒加载? 1:首先,我们知道路由中通常会定义很多不同的页面. 2:这个页面这项目build打包后,一般情况下,会放在一个单独的js文件中 3:但是,如果很多的页面都放在同一个js文件中,必然会造成这个页面

  • vue-router路由懒加载的实现(解决vue项目首次加载慢)

    在Web应用程序中,系统的瓶颈常在于系统的响应速度.如果系统响应速度过慢,用户就会出现埋怨情绪,系统的价值也因此会大打折扣.因此,提高系统响应速度,是非常重要的. 懒加载(Load On Demand)是一种独特而又强大的数据获取方法,它能够在用户滚动页面的时候自动获取更多的数据,而新得到的数据不会影响原有数据的显示,同时最大程度上减少服务器端的资源耗用. 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的

  • vue实现路由懒加载的3种方法示例

    前言 路由懒加载在访问页面的时候非常重要,能够提高首页加载速度,避免出现加载时候白页,如果没有懒加载,webpack打包后的文件会非常大. import按需加载(常用) vue异步组件 webpack提供的require.ensure() 1.import按需加载(常用) 允许将不同的组件打包到一个异步块中,需指定了相同的webpackChunkName. 把组件按组分块 const A = () => import(/* webpackChunkName: "group-A"

  • vue实现路由懒加载及组件懒加载的方式

    一.为什么要使用路由懒加载 为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题. 二.定义 懒加载简单来说就是延迟加载或按需加载,即在需要的时候的时候进行加载. 三.使用 常用的懒加载方式有两种:即使用vue异步组件 和 ES中的import 1.未用懒加载,vue中路由代码如下 import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld'

  • vue 路由懒加载详情

    目录 1.什么是路由懒加载 2.路由懒加载的使用 1.什么是路由懒加载 官方的解释: 当打包构建应用时,JavaScript 包会变得非常大,影响页面加载. 如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了. 官方想表达的意思 首先,我们知道路由中通常会定义很多不同的页面 这个页面最后会被打包到哪里呢?一般情况下是会放在一个js文件中 但是页面这么多,所有文件都放到一个js文件中,必然会造成这个页面会非常的大 如果我们一次性从服务器中请求下

  • vue 路由懒加载中给 Webpack Chunks 命名的方法

    最早的路由定义方式 import Vue from 'vue' import VueRouter from 'vue-router' import Home from '../views/Home.vue' import About from '../views/About.vue' import Login from '../views/Login.vue' Vue.use(VueRouter) const routes = [ { path: '/', name: 'Home', compo

  • Vue中使用import进行路由懒加载的原理分析

    目录 使用import进行路由懒加载的原理 (1)遵循规范 (2)调用时间 (3)本质 vue路由懒加载,使用import无法处理 解决 使用import进行路由懒加载的原理 首先我们来说说,import 和 require 的区别 node 编程中最重要的思想就是模块化,import 和 require 都是被模块化所使用. (1)遵循规范 require是 AMD规范引入方式 import是es6的一个语法标准,如果要兼容浏览器的话必须转化成es5的语法 (2)调用时间 require是运行

  • vue3 vite异步组件及路由懒加载实战示例

    目录 引言 一.前言 1-1.三点变化: 1-2.引入辅助函数defineAsyncComponent的原因: 二.Vue 2.x与Vue 3.x定义比较 2-1.异步组件/路由定义比较 2-2.声明方式比较 2-3.异步组件加载函数返回比较 三.Vue3实践 3-1.路由懒加载实现 3-2.异步组件实现 四.总结 引言 在 Vue2 中,异步组件和路由懒加载处理使用 import 就可以很轻松实现.但是在Vue 3.x 中异步组件的使用与 Vue 2.x 完全不同了.本文就详细讲讲vue3中异

  • vue路由懒加载的实现方法

    本文介绍了vue的路由懒加载,分享给大家,具体如下: 我们可以把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件. component可以是一个箭头函数,我们可以使用动态 import语法来定义代码分块点: 如果想在network里面看到动态加载的组件名字,可以加webpackChunkName: 同时要在webpack.base.conf.js里面的output里面的filename下面加上chunkFileName 代码 // router里面的index.js i

  • vue-router路由懒加载和权限控制详解

    vue-router路由懒加载 和权限控制,今天刚好搞了一个基于node token验证的小demo 所以下面介绍下,路由懒加载 1.为什么要使用路由懒加载呢 用vue.js写单页面应用时,会出现打包后的JavaScript包非常大,影响页面加载,我们可以利用路由的懒加载去优化这个问题,当我们用到某个路由后,才去加载对应的组件,这样就会更加高效 2.用法 import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) e

  • React 路由懒加载的几种实现方案

    这篇文字简单的介绍了React在路由懒加载方面的几种实现方案. 传统的两种方式 import() 符合ECMAScript提议的import()语法,该提案与普通 import 语句或 require 函数的类似,但返回一个 Promise 对象.这意味着模块时异步加载的 webpack v2+ 使用 使用方式 function component() { return import( /* webpackChunkName: "lodash" */ 'lodash').then(_

随机推荐