写点什么

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:264926
用户头像

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

关注

评论 1 条评论

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

简洁灵活:Python中基于字段的不使用元类的ORM实现

申公豹

Python

基于STM32的物联网节点设计与实现-传感器数据采集与无线通信

申公豹

嵌入式

实时任务调度与通信协议在嵌入式开发中的应用

申公豹

嵌入式

深入学习Python与Vscode环境的安装与配置

申公豹

Python

Python从基础到进阶字符串验证

申公豹

Python

项目分享:AIGC技术在智能教学生成中的应用

YoLo

AI

cmake | AI工程化部署

AIWeker

c AI AI工程化部署

深入理解嵌入式系统中的GPIO控制与应用

申公豹

嵌入式

WorkPlus Meet实现企业局域网视频会议的领先解决方案

WorkPlus

WorkPlus企业即时通讯系统的领先者,提升沟通效率的利器

WorkPlus

基于Vue.js和Spring Boot的口罩自助售卖系统:设计、实现与技术深度解析

申公豹

开发

记一次本地环境启动不了Mysql的故障

DoHornBurg

Java MySQL hyper-v

Python图像处理:批量添加水印的优雅实现与进阶技巧

申公豹

Python

深入探索嵌入式系统开发:从LED控制到物联网集成

申公豹

嵌入式

在Python中实现条形图动态追赶动画效果

申公豹

Python

手把手教你Python圣诞主题绘图

申公豹

Python

多表格文件单元格平均值计算实例解析

申公豹

Python

构建高效、安全的在线考试系统:基于Spring Boot和Vue的前后端分离之道

申公豹

WorkPlus一站式协同解决方案,助力企业降本增效

WorkPlus

用纯 Python 打造的轻量级 Excel 到 Markdown 转换工具

申公豹

Python

Python文件操作指南:读写、异常处理与上下文管理器详解

申公豹

Python

掌握进阶:高级功能、图表定制与地理数据绘制

申公豹

Python

Seaborn 数据可视化全攻略:从基础到高级实战

申公豹

Python

WorkPlus十年铸剑,成就千万级用户信赖与认可

WorkPlus

利用开源框架BMF实现高效视频处理

Geek-yan

HarmonyOS的功能及场景应用

梦笔生花

鸿蒙 API 9工程转换为API 10工程

坚果

HarmonyOS OpenHarmony

个人技术成长方面的心得体会:边缘计算之旅

农夫三拳

嵌入式系统中的低功耗定时器应用与优化实战

申公豹

嵌入式

WorkPlus打造企业即时通讯平台,助力高效沟通与协作

WorkPlus

WorkPlus超级APP助力企业节省IT人力成本,实现快速移动化

WorkPlus

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