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组件生命周期运行原理解析
Nov 25 Vue.js
vue组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
vue 使用class创建和清除水印的示例代码
Dec 25 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
Vue+scss白天和夜间模式切换功能的实现方法
Jan 05 Vue.js
vue3.0中友好使用antdv示例详解
Jan 05 Vue.js
vue实现简易计算器功能
Jan 20 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
VUE之图片Base64编码使用ElementUI组件上传
Apr 09 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
vue3.0 数字翻牌组件的使用方法详解
Apr 20 Vue.js
vue实现简易音乐播放器
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
解决FastCGI 进程超过了配置的活动超时时限的问题
2013/07/03 PHP
PHP简单实现生成txt文件到指定目录的方法
2016/04/25 PHP
css图片自适应大小
2007/11/28 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
jQuery - css() 方法示例详解
2014/01/16 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
简单解析JavaScript中的__proto__属性
2016/05/10 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
2017/10/25 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
详解为生产环境编译Angular2应用的方法
2018/12/10 Javascript
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
微信小程序实现单个或多个倒计时功能
2020/11/01 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
2019/04/30 Python
python实现xml转json文件的示例代码
2020/12/30 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
一套C++笔试题面试题
2012/06/06 面试题
描述JSP和Servlet的区别、共同点、各自应用的范围
2012/10/02 面试题
干部作风建设个人剖析材料
2014/10/11 职场文书
护理实习生带教计划
2015/01/16 职场文书
社区活动总结
2015/02/04 职场文书
贷款收入证明格式
2015/06/24 职场文书
python中的被动信息搜集
2021/04/29 Python
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python
Python中的 No Module named ***问题及解决
2022/07/23 Python