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


Posted in Vue.js onApril 01, 2022

使用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"]
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。 

Vue.js 相关文章推荐
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
vue使用element-ui实现表单验证
Dec 13 Vue.js
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
解决vue使用vant轮播组件swipe + flex时文字抖动问题
Jan 07 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
vue.js Router中嵌套路由的实用示例
Jun 27 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
vue实现在data里引入相对路径
Jun 05 Vue.js
el-table-column 内容不自动换行的解决方法
Aug 14 Vue.js
vue使用refs获取嵌套组件中的值过程
Mar 31 #Vue.js
vue ref如何获取子组件属性值
Mar 31 #Vue.js
vue如何使用模拟的json数据查看效果
vue+iview实现手机号分段输入框
Mar 25 #Vue.js
Vue3中toRef与toRefs的区别
Mar 24 #Vue.js
一起来看看Vue的核心原理剖析
Mar 24 #Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 #Vue.js
You might like
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
PHP概述.
2006/10/09 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
php实现通过ftp上传文件
2015/06/19 PHP
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
Javascript玩转继承(一)
2014/05/08 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
Javascript实现页面滚动时导航智能定位
2017/05/06 Javascript
JavaScript正则表达式函数总结(常用)
2018/02/22 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
node Buffer缓存区常见操作示例
2019/05/04 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Python实现的ini文件操作类分享
2014/11/20 Python
Python判断值是否在list或set中的性能对比分析
2016/04/16 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
numba提升python运行速度的实例方法
2021/01/25 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
大学生个人推荐信范文
2013/11/25 职场文书
syb养殖创业计划书
2014/01/09 职场文书
校园之声广播稿
2014/01/31 职场文书
学习礼仪心得体会
2014/09/01 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
个人政治思想总结
2015/03/05 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
销售督导岗位职责
2015/04/10 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
2016春节放假通知范文
2015/08/18 职场文书
Windows Server 2016服务器用户管理及远程授权图文教程
2022/08/14 Servers