南漳网页设计,南宁网站seo服务,网页加速器怎么用,用文字工具在页面中间输入主标题和副Vite#xff0c;一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports#xff0c;在服务器端按需编译返回#xff0c;完全跳过了打包这个概念#xff0c;服务器随起随用。同时不仅有 Vue 文件支持#xff0c;还搞定了热更新#xff0c;而且热更新的速度…Vite一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports在服务器端按需编译返回完全跳过了打包这个概念服务器随起随用。同时不仅有 Vue 文件支持还搞定了热更新而且热更新的速度不会随着模块增多而变慢。针对生产环境则可以把同一份代码用 rollup 打包。虽然现在还比较粗糙但这个方向我觉得是有潜力的做得好可以彻底解决改一行代码等半天热更新的问题。
当声明一个 script标签类型为 module 时,如
当浏览器解析资源时会往当前域名发起一个GET请求main.js文件 // main.js import { createApp } from ‘vue’ import App from ‘./App.vue’ createApp(App).mount(‘#app’) 请求到了main.js文件会检测到内部含有import引入的包又会import 引用发起HTTP请求获取模块的内容文件如App.vue、vue文件 Vite其核心原理是利用浏览器现在已经支持ES6的import,碰见import就会发送一个HTTP请求去加载文件Vite启动一个 koa 服务器拦截这些请求并在后端进行相应的处理将项目中使用的文件通过简单的分解与整合然后再以ESM格式返回返回给浏览器。Vite整个过程中没有对文件进行打包编译做到了真正的按需加载所以其运行速度比原始的webpack开发编译速度快出许多
而Vite利用浏览器对ESM的支持当 import 模块时浏览器就会下载被导入的模块。先启动开发服务器当代码执行到模块加载时再请求对应模块的文件,本质上实现了动态加载。灰色部分是暂时没有用到的路由所有这部分不会参与构建过程。随着项目里的应用越来越多增加route也不会影响其构建速度。
将script标签设置type“module” 加载模块 import引入方式。
打包更快 增量更新webpack 全量更新 查找依赖编译原理不同 在浏览器端按需编译 我打包过程webpack 编译后进行打包插件生态更小场景不同 小项目更适合 webpack 大项目热更新速度不随项目变大变慢配置更少 容易上手
核心流程
Vite整个热更新过程可以分成四步
创建一个websocket服务端和client文件启动服务 通过chokidar监听文件变更 当代码变更后服务端进行判断并推送到客户端
相关
2Esbuild Vite底层使用Esbuild实现对.ts、jsx、.js代码文件的转化所以先看下什么是es-build。
Esbuild是一个JavaScript Bundler 打包和压缩工具它提供了与Webpack、Rollup等工具相似的资源打包能力。可以将JavaScript 和TypeScript代码打包分发在网页上运行。但其打包速度却是其他工具的10100倍。
目前他支持以下的功能
加载器 压缩 打包 Tree shaking Source map生成 esbuild总共提供了四个函数transform、build、buildSync、Service。有兴趣的可以移步官方文档了解。
Rollup 在生产环境下Vite使用Rollup来进行打包
Rollup是基于ESM的JavaScript打包工具。相比于其他打包工具如Webpack他总是能打出更小、更快的包。因为 Rollup 基于 ESM 模块比 Webpack 和 Browserify 使用的 CommonJS模块机制更高效。Rollup的亮点在于同一个地方一次性加载。能针对源码进行 Tree Shaking(去除那些已被定义但没被使用的代码)以及 Scope Hoisting 以减小输出文件大小提升运行性能。
Rollup分为build构建阶段和output generate输出生成阶段。主要过程如下
获取入口文件的内容包装成module生成抽象语法树