写点什么

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

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

关注

评论 1 条评论

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

优秀的代码的分层结构

xcbeyond

架构 28天写作 12月日更

【Spring Boot 快速入门】一、周末建立了Spring Boot专栏,欢迎学习交流

小阿杰

SpringBoot 2 spring Boot Starter 内容合集 签约计划第二季

【Spring Boot 快速入门】二、Spring Boot集成MyBatis可以连接数据库啦!

小阿杰

SpringBoot 2 mybatis配置 内容合集 签约计划第二季

国产分布式数据库StarDB核心技术大揭秘二:智能运维管控

京东科技开发者

最好用的七大顶级 API 接口测试工具

蒋川

API 测试工具

ClickHouse在工业互联网场景的OLAP平台建设实践

京东科技开发者

Go 语言快速入门指南:第一篇 介绍

宇宙之一粟

Go golang 编程入门 签约计划第二季 12月日更

Rainbond 5.5 发布,支持Istio和扩展第三方Service Mesh框架

北京好雨科技有限公司

istio PaaS rainbond

探探的IM长连接技术实践:技术选型、架构设计、性能优化

JackJiang

网络编程 websocket 即时通讯 IM

SD-WAN、SASE 和多云空间的未来趋势

devpoint

5G SD-WAN sase 12月日更

Istio在Rainbond Service Mesh体系下的落地实践

北京好雨科技有限公司

istio PaaS rainbond

Explore the Sky丨来 TiDB Hackathon 2021 探索无限可能

PingCAP

Go 数据库 hackathon TiDB database

行业分析| 泛娱乐应用出海探索

anyRTC开发者

音视频 语音通话 视频直播 视频通话 泛娱乐

一周信创舆情观察(12.6~12.12)

统小信uos

京东云PostgreSQL在GIS场景的应用分享

京东科技开发者

【Spring Boot 快速入门】四、Spring Boot集成Swagger UI

小阿杰

SpringBoot 2 swagger 内容合集 签约计划第二季

国产分布式数据库StarDB核心技术大揭秘一:内核分解之数据分片

京东科技开发者

Android C++系列:Linux Socket编程(三)CS模型示例

轻口味

28天写作 12月日更

滨海中小企业协会参加新区工商联(总商会)第四次代表大会

InfoQ 天津

百度王海峰:深耕自然语言处理近30年,推进AI融合创新

百度开发者中心

自然语言处理

京东云ClickHouse和ES双引擎设计在零售选品中的应用实践

京东科技开发者

【Spring Boot 快速入门】三、Spring Boot集成JUnit

小阿杰

SpringBoot 2 JUnit 内容合集 签约计划第二季

【Spring Boot 快速入门】五、Spring Boot集成Lombok

小阿杰

SpringBoot 2 lombok 内容合集 签约计划第二季

Apache Log4j 2 安全漏洞扫描及启示录

极狐GitLab

gitlab 安全 供应链 漏洞扫描 Apache Log4j 2

完善跨境金融区块链服务平台,支持区域开放创新和特殊区域建设

CECBC

一篇教你代码同步 Github 和 Gitee

冴羽

JavaScript GitHub 自己搭建博客网站 GitHub Pages vuepress

点击下载 | 世界经济论坛全新推出深度AI洞察报告

澳鹏Appen

人工智能 机器学习 深度学习

多点 DMALL x StarRocks:实现存储引擎的收敛,保障高查询并发及低延迟要求

StarRocks

数据库 数据分析 高并发 StarRocks

潮玩盲盒一番赏盲盒星球app专业源码搭建

风行无疆

分布式架构与性能优化

高性能架构探索

分布式 微服务 性能优化 内容合集 签约计划第二季

记录我开发工作中遇到HTTP跨域和OPTION请求的一个坑

汪子熙

JavaScript ajax 跨域 28天写作 12月日更

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