vue的单页面(SPA)项目,必然涉及路由按需的问题。
以前我们是这么做的

//require.ensure是webpack里面的,这样做会将单独拉出来作为一个chunk文件
const Login = r => require.ensure( [], () => r (require('../component/Login.vue')));

但现在无Vue-router的官网看看,推荐这种方式:

//vue异步组件和webpack的【代码分块点】功能结合,实现了按需加载
const App = () => import('../component/Login.vue');

可是,很多情况下,我们这么写npm控制台直接报错,这是为什么呢?

Module build failed: SyntaxError: Unexpected token

原来是import这儿报错了,这就需要babel的插件了,vue-router官网上有一段提示:
如果您使用的是 Babel,你将需要添加 syntax-dynamic-import 插件,才能使 Babel 可以正确地解析语法。
至此,问题全部解决了。

如果使用vue-cli生成项目,很可能在babel-loader没有配置上面的插件,这时需要我们自己去安装此插件:

npm install babel-plugin-syntax-dymic-import --save-dev

然后修改js的loader部分:

{
test: /\.js$/,
loader:'babel-loader',
options:{
plugins:['syntax-dynamic-import']
},
},

增加了option选项,至此,能识别我们const App = () => import('../component/Login.vue');的语法了

在打包的时候,发现我们如果只是这么写:const App = () => import('../component/Login.vue');出现的chunk包名字都是乱的,如果我们指定命名,该怎么办呢?webpack3提供了Magic Comments(魔法注释)

const App = () => import(/* webpackChunkName:'login'*/ '../component/Login.vue');

这样我们就为打包出来的chunk指定一个名字,最终生成login.js的chunk包。

// 下面2行代码,没有指定webpackChunkName,每个组件打包成一个js文件。
const ImportFuncDemo1 = () => import('../components/ImportFuncDemo1')
const ImportFuncDemo2 = () => import('../components/ImportFuncDemo2')
// 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。
const ImportFuncDemo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo')
const ImportFuncDemo2 = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo2')

转自:https://www.cnblogs.com/xiaochongchong/p/7772773.html

https://segmentfault.com/a/1190000011519350

转载于:https://www.cnblogs.com/yunspider/p/9248795.html

vue-router 按需加载相关推荐

  1. vue router按需加载

    1 import Vue from 'vue' 2 import Router from 'vue-router' 3 4 Vue.use(Router); 5 //按需加载,当渲染其他页面时才加载其 ...

  2. webpack和vue的按需加载组件、console、抓包

    1.webpack和vue的按需加载组件 webpack特有的懒加载文件的方式,很大的提升了webpack打包SPA应用的在性能方面. 而从webpack2以后require.ensure已经被imp ...

  3. vue 路由按需加载

    在vue项目中,一般引入组件都是用import import 组件名 from '组件路径' webpack在npm run build的时候会打包成一个整个的js文件,如果页面一多,会导致这个文件非 ...

  4. vue tree组件_Ant-Design-Vue和Icon按需加载方案 - JeecgBoot实战

    JeecgBoot实战 - 按需加载方案 一.Ant-Design-Vue 按需加载 1.创建js文件 src/components/lazy_antd.js import Vue from 'vue ...

  5. ant design pro取消登录_JeecgBoot实战按需加载 Ant-Design-Vue和Icon

    一.Ant-Design-Vue 按需加载 1.创建js文件 src/components/lazy_antd.js import Vue from 'vue'// base library impo ...

  6. Ant-Design-Vue和Icon按需加载方案 - JeecgBoot实战

    JeecgBoot实战 - 按需加载方案 文章目录 JeecgBoot实战 - 按需加载方案 一.Ant-Design-Vue 按需加载 二.Icon按需加载 一.Ant-Design-Vue 按需加 ...

  7. vue 按需加载,换存,导航守卫

    开发中的注意事项:代码性能的优化 1. 减少对第三方的依赖,降低耦合度 2. 加强组件的重复利用率 3. 按需加载 4. 缓存 (尽量发送请求后保存数据) 5. 开发过程中,尽量有着面向对象的思想,这 ...

  8. vue项目实现按需加载的3种方式

    vue异步组件技术 vue-router配置路由,使用vue的异步组件技术,可以实现按需加载.这种方式下一个组件生成一个js文件 用例: {path: '/promisedemo',name: 'Pr ...

  9. Vue根据菜单json数据动态按需加载路由Vue-router

    每个菜单项对应一个页面组件,根据菜单项动态按需加载路由 路由配置的正确写法: /*router/index.js*/ import Vue from 'vue' import Router from ...

  10. vue组件的按需加载

    一.require.ensure() require.ensuire(dependencies:String[],callback:function(require),errorCallback:fu ...

最新文章

  1. 09最短小说:意见统一
  2. python中digits什么意思_在Caffe中使用 DIGITS自定义Python层
  3. .NET MVC Scripts.Render 上下文不存在问题解决方法
  4. GridView上同时定义了 DataSource 和 DataSourceId
  5. 【转载】【原创】贵在,难在,成在
  6. 机器学习加速器文献整理
  7. MakeApie 将于 2月15号开始暂停服务
  8. 正则表达式判断手机号和邮箱格式是否正确
  9. 和老外聊天、发邮件常用英语缩写(超实用)
  10. 百度搜索信风算法上线,为什么要严厉打击翻页诱导行为?
  11. Excel如何实现单元格内轻松换行?
  12. 李航(统计学习方法第四章)
  13. 世界上最大的计算机硬盘,全球我最大 忆捷A600 2TB移动硬盘评测
  14. Windows管理员必须掌握的25个PowerShell命令​
  15. [机缘参悟-88]:什么是平台?国家、公司、家庭、硬件、软件、应用?
  16. MySQL 数据库死锁问题-Deadlock found when trying to get lock
  17. [译]高性能浏览器网络(第九章)--HTTP简史
  18. 基于JSP酒店预订系统
  19. 计算机房外来运维人员保密协议,总站动态 | 国家环境空气质量监测网城市站运维驻站工作人员保密协议和廉洁自律承诺书签订仪式顺利举行...
  20. i18n和i10n:国际化本地化

热门文章

  1. 世纪联华的 Serverless 之路
  2. Unity VR游戏开发干货教程:优化VR体验
  3. 游戏编程技巧分析:策划变心太快?也许可以使用组合
  4. 零基础学Python(第十四章 字典)
  5. 小议Oracle外键约束修改行为
  6. dubbo-admin构建问题总结
  7. IT行业分析之企业信息化技术
  8. 1. 赋值运算符函数
  9. 无法加载主类的10中方法
  10. (MoMoCMS教程11)页面的SEO优化与外链