web2.0

关注公众号 jb51net

关闭
首页 > 网络编程 > web2.0 > no-bundle 构建原理

no-bundle 构建原理浅析

作者:Widdy

这篇文章主要为大家介绍了no-bundle 构建原理浅析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

为什么需要构建工具?

什么是无包构建

它的构建方式是:

这种通过浏览器原生的模块进行解析的方式又称为 Native-ESM(Native ES Module)。

//./src/index.html
...
<!-- 注意: type="module" -->
<script type="module" src="./modules/foo.js"></script>
...
//.src/modules/foo.js
import { bar } from './bar.js'
import { appendHTML } from './common.js'
...
import('https://cdn.jsdelivr.net/npm/lodash-es@4.17.15/slice.js').then((module) => {...})

基于浏览器的 JS 模块加载功能

HTML 中的 Script 引用注意点:

模块内依赖的引用

无包构建工具的介绍:

Vite

Vite 是 Vue 框架的作者尤雨溪最新推出的基于 Native-ESM 的 Web 构建工具。

在开发环境下基于 Native-ESM 处理构建过程,只编译不打包,在生产环境下则基于 Rollup 打包。

Vite对导入模块的解析

对 HTML 文件的预处理

启动 Vite 时,会通过 serverPluginHtml.ts 注入 /vite/client 运行时的依赖模块,该模块用于处理热更新,以及提供更新 CSS 的方法 updateStyle。

对外部依赖包的解析

对 Vue文件的解析

对 Vue 文件的解析是通过 serverPluginVue.ts 处理的,分离出 Vue 代码中的 script/template/style 代码片段,并分别转换为 JS 模块,然后将 template/style 模块的 import写到script 模块代码的头部。

对 CSS 文件的解析

对 CSS 文件的解析是通过 serverPluginCSS.ts 处理的,解析过程主要是将 CSS 文件的内容转换为下面的 JS 代码模块,其中的 updateStyle 由注入 HTML 中的 /vite/client 模块提供

import { updateStyle } from "/vite/client"
const css = "..."
updateStyle(""..."", css) // id, cssContent
export default css

Vite 中的其他辅助功能

Vite 的使用限制

Snowpack

与 Vite 相同的功能点

两者都支持各种代码转换加载器、热更新、环境变量(需要安装 dotenv 插件)、服务代理、HTTPS 与 HTTP/2 等。

与 Vite 的差异点

无包构建 VS 打包构建

无包构建的优点

无包构建的缺点

以上就是no-bundle 构建原理浅析的详细内容,更多关于no-bundle 构建原理的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文