返回顶部
首页 > 资讯 > 精选 >Skypack布局前端基建实现过程是什么
  • 724
分享到

Skypack布局前端基建实现过程是什么

2023-07-02 17:07:48 724人浏览 独家记忆
摘要

这篇文章主要介绍“Skypack布局前端基建实现过程是什么”,在日常操作中,相信很多人在Skypack布局前端基建实现过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Skypack布局前端基建实现过程

这篇文章主要介绍“Skypack布局前端基建实现过程是什么”,在日常操作中,相信很多人在Skypack布局前端基建实现过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Skypack布局前端基建实现过程是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

引言

已经有越来越多前端开发者放弃webpack,改用vite作为项目打包工具

其中最主要的原因是 —— vite开发环境基于ESM规范实现的Nobundle模式,节省了代码打包的时间(当然,也有ESBuild的功劳)。

而在生产环境,当前仍有打包的需求。

随着浏览器的迭代,ESM规范兼容性越来越好,终有一天会进入生产环境大面积可用的状态。

Skypack布局前端基建实现过程是什么

届时生产环境打包将不再是刚需。

另一方面,从Http协议的角度看,在HTTP/1.1时代,多个模块被打包成一个文件能减少浏览器并发请求数,达到优化目的。

但在HTTP/2多路复用普及后,这么做的意义就不大了。

可以说,当这些基建成熟后,生产环境使用ESM模块是水到渠成的事情。

很多团队预感到这点,很早就开始布局相关产品。今天要介绍的Skypack就是这样一款产品。

不一样的CDN

Skypack首次发布于19年6月(曾用名Pika CDN),是一款基于ESM规范的CDN服务

在浏览器中,常见的CDN服务通常以script标签的形式引入UMD规范的代码,以ReactDOM举例:

<script crossorigin src="https://unpkg.com/react-dom@18.2.0/umd/react-dom.development.js"></script>

代码执行后会在全局暴露对象window.ReactDOM

一些情况下,一个包还会依赖其他包,比如ReactDOM还会依赖如下3个包:

React

scheduler

object-assign

为了应对这种情况,在生产环境开发者通常会将第三方依赖统一打包。

SkypackESM规范引入代码:

// 在业务代码中引入如下语句import ReactDOM from 'https://cdn.skypack.dev/react-dom';

浏览器会依次发起对包及其依赖的请求:

Skypack布局前端基建实现过程是什么

配合上浏览器的Module Preload特性,可以让这些资源统一预加载。

这就解决了第三方依赖需要打包的问题。

按需polyfill

如果你访问上述CDN链接(https://cdn.skypack.dev/react...),会发现返回的结果并不是ReactDOM的代码,而是下面两句export语句:

export * from '/-/react-dom@v17.0.1-oZ1BXZ5opQ1DbTh7nu9r/dist=es2019,mode=imports/optimized/react-dom.js';
export {default} from '/-/react-dom@v17.0.1-oZ1BXZ5opQ1DbTh7nu9r/dist=es2019,mode=imports/optimized/react-dom.js';

语句的背后才是ESM规范的ReactDOM代码。

之所以这么做是因为:Skypack会根据目标浏览器的UA为浏览器提供适合的包。

在高版本Chrome中的代码不需要polyfill,而在低版本IE中的代码需要polyfill,所以不同目标浏览器拿到的是不同的ReactDOM代码。

上述export语句中哈希(oZ1BXZ5opQ1DbTh7nu9r)的不同就对应同一个版本的ReactDOM经过不同程度polyfill后的不同结果

此外,在url后加min能得到压缩后的代码

import ReactDOM from 'https://cdn.skypack.dev/react-dom?min';

接下来让我们看看Skypack是如何处理请求的。

处理请求的流程

并不是所有包都有ESM规范的产物(React就没有),当以如下url格式访问任意包时:

// xxx替换为任意包名import React from 'https://cdn.skypack.dev/xxx';

如果之前从未有人访问过这个包,则会构建包及其依赖的ESM产物并返回。

比如ReactDOM本身只提供UMD规范的产物,第一个访问他的Skypack CDN链接的用户会经历如下步骤:

  • 收集ReactDOM及其依赖

  • ReactDOM及其依赖变为ESM规范

  • 构建不同polyfill程度的ESM产物

  • 根据目标浏览器UA返回对应的ReactDOM

ReactDOM的产物代码中可以看到,他依赖的三个包已经转为ESM规范:

Skypack布局前端基建实现过程是什么

到此,关于“Skypack布局前端基建实现过程是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Skypack布局前端基建实现过程是什么

本文链接: https://lsjlt.com/news/343522.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Skypack布局前端基建实现过程是什么
    这篇文章主要介绍“Skypack布局前端基建实现过程是什么”,在日常操作中,相信很多人在Skypack布局前端基建实现过程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Skypack布局前端基建实现过程...
    99+
    2023-07-02
  • Skypack布局前端基建实现过程详解
    目录引言不一样的CDN按需polyfill处理请求的流程总结引言 已经有越来越多前端开发者放弃webpack,改用vite作为项目打包工具。 其中最主要的原因是 —&md...
    99+
    2024-04-02
  • Vue前端项目自适应布局怎么实现
    这篇文章主要介绍“Vue前端项目自适应布局怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue前端项目自适应布局怎么实现”文章能帮助大家解决问题。一、单位尺寸px%vw、vh: 窗口em: ...
    99+
    2023-07-02
  • 基于Vue3实现前端埋点上报插件并打包发布到npm的详细过程
    目录项目环境搭建插件开发点击事件上报vue自定义指令手动上报方法页面访问次数上报(pv,uv)页面停留时间(TP)获取公共参数引入axios打包发布使用说明OptionOptions...
    99+
    2022-11-13
    Vue打包发布到npm Vue埋点上报插件打包发布到npm
  • React前端框架实现原理是什么
    这篇文章主要介绍“React前端框架实现原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React前端框架实现原理是什么”文章能帮助大家解决问题。vdomreact 和 vue 都是基于 v...
    99+
    2023-07-02
  • JS前端instanceof的实现原理是什么
    这篇文章主要介绍了JS前端instanceof的实现原理是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS前端instanceof的实现原理是什么文章都会有所收获,下面我们一起来看看吧。instanceo...
    99+
    2023-07-04
  • web前端字体特效的实现方法是什么
    本篇内容主要讲解“web前端字体特效的实现方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web前端字体特效的实现方法是什么”吧!特效一览划线动态:背景...
    99+
    2024-04-02
  • DIV居中布局的三大实现方法分别是什么
    这篇文章给大家介绍DIV居中布局的三大实现方法分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。你对DIV居中布局的方法是否了解,这里和大家分享一下,因为现在DIV+CSS布局越...
    99+
    2024-04-02
  • web前端模板的原理与实现方法是什么
    这篇文章主要讲解了“web前端模板的原理与实现方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端模板的原理与实现方法是什么”吧!时下流行什么...
    99+
    2024-04-02
  • DHCP服务器的实现过程是什么
    DHCP服务器的实现过程是:1、客户端发送discover广播报文,DHCP服务器进行响应;2、DHCP服务器对discover报文进行解析;3、客户端收到offer报文后,发送request请求报文给服务器端;4、服务器端对客户端的请求报...
    99+
    2024-04-02
  • web前端实现任意文字转粒子方法是什么
    本篇内容介绍了“web前端实现任意文字转粒子方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!w和h...
    99+
    2024-04-02
  • Spring AOP的概念与实现过程是什么
    今天小编给大家分享一下Spring AOP的概念与实现过程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Ao...
    99+
    2023-07-05
  • Redis监听过期的key实现流程是什么
    本篇内容介绍了“Redis监听过期的key实现流程是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、简介我们来个最简单的集群架构,如下...
    99+
    2023-07-05
  • 实现CSS网页布局中文排版的九则技巧分别是什么
    这篇文章给大家介绍实现CSS网页布局中文排版的九则技巧分别是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。你对CSS网页布局中文排版的方法是否了解,这里和大家分享一下CSS网页布局...
    99+
    2024-04-02
  • MySQL分页存储过程的实现原理是什么
    MySQL分页存储过程的实现原理是通过使用存储过程来动态生成分页查询语句,实现分页功能。存储过程是一组预先编译好的SQL语句组成的代...
    99+
    2024-04-09
    MySQL
  • python机器学习创建基于规则聊天机器人过程是什么
    这篇文章主要讲解了“python机器学习创建基于规则聊天机器人过程是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python机器学习创建基于规则聊天机器人过程是什么”吧!while&n...
    99+
    2023-06-25
  • Redisson RedLock红锁加锁实现过程及原理是什么
    本篇内容介绍了“Redisson RedLock红锁加锁实现过程及原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、主从...
    99+
    2023-07-05
  • MySQL存储过程创建使用及实现数据快速插入的方法是什么
    本文小编为大家详细介绍“MySQL存储过程创建使用及实现数据快速插入的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL存储过程创建使用及实现数据快速插入的方法是什么”文章能帮助大家解决疑...
    99+
    2023-03-10
    mysql
  • PostgreSQL中create_plan函数连接计划的实现过程是什么
    本篇内容介绍了“PostgreSQL中create_plan函数连接计划的实现过程是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望...
    99+
    2024-04-02
  • 前端开发基础扎实的标准是什么?搞懂这些学习速度瞬间开挂
      个人发表一下愚见,希望可以给各位看友们一定的帮助,可能对于刚入门前端开发或者打算入门前端开发的朋友们而言,会认为一定要具备很多电脑基础或者很多计算机原理的基础才可以做好前端开发,其实在本人看来,只要有对代码的兴趣热情,这些慢慢都可以入门...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作