做网站加手机app需要多少钱,qq引流推广软件免费,施工企业环境管理体系,网络营销第二版课后答案依赖预构建 vite是一个基于浏览器原生ES-Module的前端构建工具。 当你首次启动vite的时候#xff0c;vite会在本地加载你的站点之前预构建项目依赖。 原因#xff1a;
CommonJS和UMD兼容性#xff1a;在开发阶段中#xff0c;Vite的开发服务器将所有的代码视为原生ES模块。…依赖预构建 vite是一个基于浏览器原生ES-Module的前端构建工具。 当你首次启动vite的时候vite会在本地加载你的站点之前预构建项目依赖。 原因
CommonJS和UMD兼容性在开发阶段中Vite的开发服务器将所有的代码视为原生ES模块。因此Vite必须先将以CommonJS或UMD形式提供的依赖项转换为ES模块。性能为了提高后续页面的加载性能Vite将那些具有许多内部模块的ESM依赖项转换为单个模块。有些包将他们的ES模块构建成许多单独的文件例如lodash-es有超过600个内置模块当我们执行import引入的时候浏览器会同时发出600多个HTTP请求大量的请求会导致浏览器端的网络拥堵使页面加载变得明显缓慢。预构建会将lodash-es预构建为单个模块现在我们只需要一个HTTP请求。 依赖预构建仅仅适用于开发模式并使用esbuild将依赖项转换为ES模块。 预构建的内容是什么?一个项目里存在很多模块并不是所有的模块都会被预构建只有裸依赖bare import会执行依赖预构建。
什么是裸依赖呢//bare import
import xxx from vue
import xxx from vue/xxx
//下面不是
import xxx from ./foo.ts用名称去访问的模块是裸依赖用路径去访问的模块不是 Node.js定义了bare import的寻址机制——在当前目录下的node_modules下寻找 裸依赖一般是npm安装的模块是第三方模块不是我们自己写的代码一般情况下不会被修改因此对这部分的模块提前构建有利于提升性能。 相反如果对开发者写的代码执行预构建将项目打包成chunk文件当开发者修改代码时需要再重新执行构建在打包成chunk反而影响性能。
事实上vite会判断模块的实际路径是否在node_modules中
实际路径在node_modules的模块会被预构建这是第三方模块实际路径不在node_modules的模块证明该模块是通过文件链接连接到node_modules的是开发者自己写的代码不执行预构建
缓存
文件系统缓存vite将预构建的依赖项缓存到node_modules/.vite中。它会基于以下几个来源决定是否需要重新运行预构建步骤
包管理器的锁文件内容package.lock.jsonyarn.lock等补丁文件夹的修改时间patch-packagevite.config.js中的相关字段NODE_ENV的值
只有上述的其中一项发生改变的时候才需要重新运行预构建。 如果出于某种原因想要强制重新预构建可以在启动开发服务器的时候指定 --force选项或者手动删除node_modules/.vite缓存目录
浏览器缓存已经预构建的依赖请求使用HTTP进行强缓存以提高开发期间页面重新加载的性能。一旦被缓存这些请求将永远不会再次访问开发服务器。
静态资源处理
在vue中静态资源分为两种 1.存放在public中的静态资源这部分资源会被完全的复制不会经过构建工具处理可以通过根绝对路径来引用他们。
路径设置时不需要添加public/默认加载public文件夹下的图片不需要使用require当构建工具为webpack的时候因为webpack使用的是commrnJS规范 2.存放在assets目录下属于代码的一部分只支持相对路径会被构建工具打包并且和样式会被压缩打到一起可以避免额外的网络请求。需要使用require当构建工具为webpack的时候因为webpack使用的是commrnJS规范 vite怎样加载静态资源 我们主要讨论public目录下的静态资源。 主要从js、jpg、json、mp4、css五类文件讨论。 当我们在一个项目中引入这五类资源并且打印的时候我们可以看到
执行dev命令我们可以看到
所有静态资源都被引入了但是vite对他们的处理方式并不同css、js文件被直接输出内部定义的内容json被转为了对象形式而url和mp4被输出他们文件的url地址。 当然我们可以通过一些手段来控制css和js也输出他们的路径。 比如 1.assetsInclude选项配置
注意这个配置里不能写json文件哦写了要报错的。 2.使用url后缀显式的导入一个url
同样的我们也能控制img和mp4以原文件输出 3.使用raw后缀将文件作为源文件输出
这时候jpg和mp4会以流的形式输出。 这个时候要说到另一个文件格式svg格式他和图片一样也会被vite处理输出为url但是当用raw后缀的时候会被直接输出为HTML。