当前位置: 首页 > 知识库问答 >
问题:

前端 - vue2中,vue-cli进行element-ui打包不放入check-vendor.js,而是单文件组件形式存在?

后源
2024-01-23

vue2中,vue-cli进行element-ui打包不放入check-vendor.js,而是单文件组件形式存在,比如el-input-683fb76c.js这种的,完全从check-vendor中抽离出来,而且是懒加载的形式。
也就是说:

如果home.vue组件使用了el-input组件,才会加载这个组件,而按照现在的打包方式,check-vendor会在页面一开始渲染就加载,包也很大,首页优化难做。

所以能不能通过vue-cli的webpack配置完成这个打包,求解

现在对一些组件使用注解魔法:

let dNumber = ()=> import(/* webpackChunkName: "d-Number" */ '@/components/public/d-number');

打包出来的文件名就是d-Number.js,但是不知道怎么抽离element-ui的每一个按需导入的组件,也形成懒加载的形式,或者check-vendor.js其实可以不存在,所有的资源都是懒加载形式

共有2个答案

慕光霁
2024-01-23

问过一个类似的问题:

https://segmentfault.com/q/1010000044542070

可试试在.env配置:

# 第一放在第一行NODE_ENV = production
居焱
2024-01-23

在 Vue 2 和 Vue CLI 中,Element UI 的组件确实可以以单文件组件的形式进行打包,并且支持懒加载。这可以通过在组件上使用动态导入来实现。动态导入允许你将模块的加载延迟到需要时才进行,从而减少首屏加载时间。

要实现这一目标,你可以对 Element UI 的组件进行如下处理:

  1. 使用动态导入:你可以使用 webpack 的动态 import() 语法来按需加载组件。例如,如果你想按需加载 el-button 组件,你可以这样做:
let ElButton = () => import(/* webpackChunkName: "el-button" */ 'element-ui/lib/button');
  1. 配置 webpack:如果你想进一步控制 webpack 的打包行为,你可以修改 vue.config.js 文件(如果存在)来自定义 webpack 配置。例如,你可以使用 optimization.splitChunks 来配置代码拆分和懒加载。
  2. 优化 check-vendorcheck-vendor.js 文件通常用于检查并引入必要的第三方库。如果你可以确保所有需要的库都已经通过按需加载的方式引入,那么 check-vendor.js 的作用可能会减小。但是,如果你仍然需要这个文件,你可以考虑自定义它,使其只包含必要的检查和引入。
  3. 使用异步组件:Vue CLI 已经支持异步组件,这意味着你可以在创建组件时返回一个 Promise,从而延迟组件的加载。这对于实现按需加载非常有用。
  4. 使用 Vue 的异步组件工厂函数:你可以使用 Vue 的 async 函数和 Vue.component 方法来创建异步组件。这允许你在需要时才加载和注册组件。

总的来说,通过上述方法,你应该能够使用 Vue CLI 和 webpack 配置来实现 Element UI 组件的按需加载和懒加载。同时,根据你的项目需求和性能要求,你可能还需要进一步调整 webpack 配置和其他优化措施。

 类似资料:
  • Element 网站快速成型工具,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。

  • 本文向大家介绍Vue element-ui父组件控制子组件的表单校验操作,包括了Vue element-ui父组件控制子组件的表单校验操作的使用技巧和注意事项,需要的朋友参考一下 方法一: 父组件代码: //子组件代码 补充知识:vue element-ui表单验证无效解决方案 在写页面的时候用到的element-ui库中的表单验证 出现如下问题 表单验证效果已有 但验证功能不正确。 检查与对照官

  • 介绍 在很多Vue项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素。 全局定义(Global definitions) 强制要求每个 component 中的命名不得重复 字符串模板(String templates) 缺乏语法高亮,在 HTML 有多行的时候,需要用到丑陋的 \ 不支持

  • 例如: 打包时候,vconsole总是被打包到chunk-vendors中,没有单独打成一个chunk,这么配置如何修改,才能实现异步加载vconsole?

  • 我有一个使用MS access作为数据库的JavaFX项目,在IntelliJ中创建可执行JAR后,在CMD中运行JAR时,我得到以下异常 这表示数据库文件不能被我的以下代码访问: 我已经检查了Jar文件,是的,它里面有“Account_Record.accdb”,当在IntelliJ IDE中运行JAR文件时,我没有错误,但无法使其独立!

  • 代码如下 this.changeTableData是要刷新表格的数据,provide发送changeTableData方法,在App.vue点击触发this.changeTableData,但是没有生效 用了inject: ['changeTableData'],reset是点击触发这个this.changeTableData,不但没有生效,还在页面上报 大佬们,怎么在app.vue,点击触发这个