Vue项目打包后都产生了哪些JS请求?

简介: 【8月更文挑战第19天】Vue项目打包后都产生了哪些JS请求?

引言

如果我们关注性能优化,会注意到vue项目在打包后,会产生若干js请求文件,如app.jschunk-vendors.js。本文将深入探讨Vue项目打包后产生的文件都是什么。

注:vue打包后和vue项目直接本地运行后产生的js请求文件一致,为了方便展示,本文采用本地启动项目后产生的文件进行探讨。

基础请求文件

我们创建一个最基础的vue项目,不引入路由vuex及其他任何第三方JS。运行项目,我们可以发现vue产生了两个请求文件:
GIF 2023-2-27 10-52-18.gif

name status type size time
chunk-vendors.js 200 script 392 kB 67 ms
app.js 200 script 15.5 kB 70 ms

我们逐一探讨。

app.js

我们在app.vue中添加大量文字,重新运行项目。
image.png
通过上图,我们可以发现,app.js的大小发生了改变,但chunk-vendors.js的大小并没有发生改变。
:::info
可见:打包后,app.js就是我们的业务层代码,如main.js里面的内容、各个vue组件里面的内容。
:::

chunk-vendors.js

我们app.vue中安装并引入moment.js

<script>
import moment from "moment"
moment()
export default {
   
   
  name: "App",
};
</script>
AI 代码解读

重新运行项目:
image.png
通过上图,我们可以发现chunk-vendors.js的尺寸几乎翻倍,但app.js的大小几乎没变。
:::info
可见:打包后,chunk-vendors.js集成的是node_modules里面用到的js内容。
:::

路由请求文件

以一个企业级项目为例,我们在项目中定义一个路由页面。

const headquarters = () => import("@/views/headquarters/index.vue");
export default [
  {
   
   
    path: "/",
    name: "headquarters",
    component: headquarters,
    meta: {
   
   
      keepAlive: false,
      title: "总部展示大屏",
      name: "总部展示大屏",
    },
  },
];
AI 代码解读

启动项目http://localhost:8080/demo/,我们可以看到页面请求了3个JS文件
GIF 2023-2-27 17-40-55.gif

注:链接中的demo是项目的baseUrl

它们的作用如下:

请求文件 作用 资源尺寸 请求时间
0.js headquarters路由内容 (prefetch cache) 60 ms
app.js main.js等非路由页面内容 893 kB 12 ms
chunk-vendors.js node_modules内容 37.9 MB 427ms

我们在增加一个路由

  {
   
   
    path: "/data-analysis",
    name: "dataAnalysis",
    component: () => import("@/views/data-analysis/index.vue"),
    meta: {
   
   
      keepAlive: false,
      title: "数据分析",
      name: "数据分析",
    },
  },
AI 代码解读

重新输入链接http://localhost:8080/demo/,你可能会疑惑,明明添加了路由,但是为什么请求文件还是0.js
image.png
实际上,因为我们没有访问对应路由链接。
输入包含新路由的链接http://localhost:8080/demo/data-analysis,就可以看到新路由文件的请求。
image.png
这里的1.js就是dataAnalysis组件内容。

此外,基于prefetch,我们实际上能在html中看到所有的路由页面0.js和1.jsimage.png

请求文件验证

实际上,我们可以借助webapck魔法注释来更改路由的请求文件名。

  {
   
   
    path: "/",
    name: "headquarters",
    component: () => import(/*webpackChunkName:"headquarters" */ "@/views/headquarters/index.vue"),
    meta: {
   
   
      keepAlive: false,
      title: "总部展示大屏",
      name: "总部展示大屏"
    }
  },
  {
   
   
    path: "/data-analysis",
    name: "dataAnalysis",
    component: () => import(/*webpackChunkName:"data-analysis" */ "@/views/data-analysis/index.vue"),
    meta: {
   
   
      keepAlive: false,
      title: "总部展示大屏",
      name: "总部展示大屏"
    }
  }
AI 代码解读

image.png

相关文章
关于Node.js,一定要学这个10+万Star项目 !!
一篇关于Node.js的宝藏项目——Node.js Best Practices。该项目在GitHub上已有102k Star,汇集了100+条最佳实践,涵盖架构、安全、性能等多方面。每条实践不仅有简明说明和详细解释,还附带代码示例及资源链接。文中通过三个实战案例(利用CPU多核、避免阻塞事件循环、使用中间件处理错误)展示了其实际应用价值,并推荐了几条对前端转Node.js开发者特别有用的最佳实践。强烈建议每位Node.js开发者学习此项目,理解“怎么做”与“为什么要这么做”,以提升开发能力。
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
142 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
90 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
127 11
【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
180 13
【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
129 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
139 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
5月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
46 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等