写点什么

Rollup 1.0 发布,支持对捆绑包进行代码拆分

  • 2019-04-12
  • 本文字数:1096 字

    阅读完需:约 4 分钟

Rollup 1.0发布,支持对捆绑包进行代码拆分

Rollup最近发布了它的第一个主要迭代版本。开发者可以使用 Rollup 1.0 对他们的库进行代码拆分,并暴露多个导入目标。


Rollup 1.0 发布公告给出了一个假想的库的例子,它有四个入口点,对应于每个导出的库函数:



Rollup 1.0 将 8 个模块减少到 5 个块,每个入口模块对应一个块,还有一个被其他几个块导入的块。每个块本身就是标准的 ES 模块,它们使用浏览器的内置模块加载器进行加载,没有任何额外的运行时开销,同时还可以利用 Rollup 的摇树优化功能。


对应的 Rollup 配置由一个 rollup.config.js 文件组成,文件内容如下:


export default     {        input: {            index: 'src/main.js',            upper: 'src/upper.js',            lower: 'src/lower.js',            upperFirst: 'src/upperFirst.js'        },        output: [            {                dir: 'esm',                format: 'esm'            },            {                dir: 'cjs',                format: 'cjs'            }        ]    }
复制代码


入口点通过 input 属性来指定,输出目录通过 output 属性来指定。然后在 package.json 文件中引用目录:


{  "name": "fancy-case",  "version": "1.0.0",  "main": "cjs/index.js",  "module": "esm/index.js",  "scripts": {    "prepare": "rollup --config"  },  "files": [    "cjs/*",    "esm/*"  ],  "devDependencies": {    "rollup": "^1.0.0"  }}
复制代码


代码拆分可以将代码基库拆分成更小的块,这些块可以按需加载。将这项技术应用于整个 Web 应用程序上时,用户可以更快地获得可交互的页面,而不必等待完整的包被执行。将这项技术应用于库上时,用户可以从单独的文件导入库的独立部分。例如,使用 import merge from ‘lodash-es/merge’来导入 merge 函数。用户还可以使用以下命令从 lodash 中导入任意数量的函数:


import { partition, memoize } from ‘lodash-es’;
复制代码


Rollup 的主要贡献者 Lukas Taegert 指出,“当然,你也可以使用 Rollup 来捆绑 Web 应用程序(通过动态导入进行代码拆分)”。Rollup的文档中提供了一个额外的示例。


Rollup 在 2016 年率先使用摇树来优化应用程序包。Rollup 的目标是为 JavaScript 库生成“看起来是由人类编写的最高效的包”。代码拆分是在 Rollup 0.55 中引入的。后来,经过了一些 bug 修复和改进,被包含在 Rollup 1.0 中。


Webpack 始于 2012 年,目标是构建复杂的单页应用程序(SPA)。为此,Webpack 引入了代码拆分和静态资产捆绑功能。Webpack 在它的第二个主要迭代版本中引入了基本的摇树优化功能。


查看英文原文https://www.infoq.com/news/2019/03/rollup-code-splitting


2019-04-12 09:265115
用户头像

发布了 731 篇内容, 共 480.8 次阅读, 收获喜欢 2008 次。

关注

评论 1 条评论

发布
用户头像
Rollup可以替代webpack在生产环境中吗?
2019-04-12 15:43
回复
没有更多了
发现更多内容

汽车行业解决方案 | 龙智总经理杨林晶作客ACT汽车电子与软件技术周,并接受专访

龙智—DevSecOps解决方案

马斯克警告威胁,奥特曼自请监管,小扎呼吁开源丨RTE开发者日报 Vol.49

声网

又一重磅利好来袭!Zebec Payroll 集成至 Nautilus Chain 主网

西柚子

面对一家营收上千亿的焦化厂,这家数科公司靠什么赋能业务?

用友BIP

数科公司 2023全球商业创新大会 升级数智化底座

【Y 新闻】YMatrix携手三一集团,荣获“2023爱分析·数据库最佳实践案例”

YMatrix 超融合数据库

超融合数据库 YMatrix 三一集团 数据库最佳实践案例 泵涌云

使用cpu模型运行时报异常错误

矩视智能

机器视觉

AI已经改变游戏规则,新环境下如何用好这一新利器,提升开发团队的生产力

龙智—DevSecOps解决方案

华为云盘古大模型加码生物医药,为行业插上“数字翅膀”

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 华为云盘古大模型 企业号9月PK榜

Kafka如何修改分区Leader

石臻臻的杂货铺

kafka

java中有哪些并发的List?只知道一种的就太逊了

程序那些事

Java 程序那些事 面试秘籍

【kafka源码】/log_dir_event_notification的LogDir脱机事件通知

石臻臻的杂货铺

kafka

对话在行人|远东数智采:数智底座创新,让招投标规范高效

用友BIP

2023全球商业创新大会 对话在行人

公开免费的代理ip有哪些不足的地方?

巨量HTTP

代理IP 免费代理ip

软件测试/测试开发丨web自动化——cypress测试框架

测试人

软件测试 Cypress

多链代币开发数字货币开发相关介绍

区块链软件开发推广运营

交易所开发 数字藏品开发 dapp开发 NFT开发 区块链开发链游开发

多主架构:VLDB技术论文《Taurus MM: bringing multi-master to the cloud》解读

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

【云资讯】行云管家-云计算服务商佼佼者

行云管家

云计算 云管理 云计算运维 云服务商

实力!云起无垠获评清华校友三创大赛“天使组”十强

云起无垠

《孤注一掷》揭露你我身边的网络安全威胁

云起无垠

软件测试/测试开发丨Web自动化—headless无头浏览器 学习笔记

测试人

软件测试

Footprint Analytics 宣布与 GameFi 平台 Game Verse 达成合作

Footprint Analytics

区块链

行云管家全面适配信创国产化平台

行云管家

云计算 信创 国产化 安全运维

GaussDB(DWS)性能调优:Sort+Groupagg聚集引起的性能瓶颈案例

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号9月PK榜

Enhancer-轻量化的字节码增强组件包

得物技术

aop 字节码增强 性能监控 轻量级 企业号9月PK榜

企业网盘 VS 大文件传输, 哪个才是企业传输的正确选择?

镭速

大文件传输 大文件传输工具

Rollup 1.0发布,支持对捆绑包进行代码拆分_编程语言_Bruno Couriol_InfoQ精选文章