hand
_1_11_175
4
返回栏目
0k
2k
1k
2k
1k
1k
1k
2k
2k
2k
1k
2k
1k
2k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
2k
1k
1k
2k
2k
2k
3k
3k
2k
3k
2k
3k
3k
3k
1k
2k
3k
2k
2k
3k
3k
2k
2k
6k
3k
2k
2k
5k
3k
4k
3k
3k
2k
4k
3k
3k
2k
3k
3k
1k
4k
4k
4k
2k
5k
3k
2k
3k
4k
3k
3k
4k
2k
3k
3k
4k
2k
2k
3k
4k
3k
3k
2k
5k
2k
3k
3k
3k
3k
2k
3k
3k
3k
2k
2k
2k
2k
3k
2k
2k
2k
3k
2k
2k
2k
2k
2k
2k
0.1k
0.2k
3k
2k
3k
2k
0.1k
2k
2k
4k
2k
2k
1k
2k
2k
3k
3k
3k
3k
2k
2k
3k
3k
3k
4k
3k
3k
4k
3k
2k
2k
3k
3k
3k
3k
3k
3k
2k
3k
3k
4k
4k
3k
3k
2k
2k
3k
2k
2k
1k
2k
3k
1k
2k
2k
2k
2k
2k
2k
2k
2k
2k
4k
2k
3k
2k
1k
2k
2k
2k
2k
2k
3k
2k
3k
1k
2k
2k
2k
0k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
1k
1k
3k
2k
3k
1k
2k
1k
2k
2k
2k
2k
3k
1k
3k
2k
2k
2k
2k
2k
2k
1k
2k
2k
4k
3k
3k
2k
2k
2k
2k
2k
2k
4k
3k
3k
3k
2k
2k
2k
2k
2k
2k
3k
4k
返回前端 - Javascript栏目
作者:
贺及楼
成为作者
更新日期:2025-02-21 20:18:49
在前端开发的世界里,模块化开发已经成为了主流的开发方式。它能够让代码更加易于维护、复用和管理。然而,当我们使用模块化开发时,会产生大量的模块文件,在生产环境中直接使用这些分散的模块会带来性能问题,因此需要使用模块打包工具将这些模块打包成一个或多个文件。Rollup 就是这样一款优秀的模块打包工具,下面我们就来深入了解一下 Rollup 的特点与应用。
Rollup 是基于 ES 模块(ES Modules)进行打包的。ES 模块是 JavaScript 官方的模块化标准,具有静态结构,Rollup 可以充分利用这一特性进行静态分析,从而实现 Tree Shaking。Tree Shaking 是一种去除代码中未使用部分的技术,它可以显著减小打包后的文件体积。
例如,有一个简单的模块 math.js
:
// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
在另一个文件中,我们只使用了 add
函数:
// main.js
import { add } from './math.js';
console.log(add(1, 2));
Rollup 在打包时会通过 Tree Shaking 去除 subtract
函数,只保留 add
函数的代码,从而减小打包体积。
Rollup 的 API 和配置相对简单,对于初学者来说很容易上手。只需要一个简单的 rollup.config.js
文件就可以完成基本的配置。
以下是一个简单的 rollup.config.js
示例:
// rollup.config.js
export default {
input: 'src/main.js',
output: {
file: 'dist/bundle.js',
format: 'es'
}
};
在这个配置中,input
指定了入口文件,output
指定了输出文件的路径和格式。
Rollup 拥有丰富的插件生态系统,可以通过插件扩展其功能。例如,可以使用 @rollup/plugin-commonjs
插件将 CommonJS 模块转换为 ES 模块,使用 @rollup/plugin-node-resolve
插件解析 node_modules
中的模块。
Rollup 支持多种输出格式,包括 ES 模块(es
)、CommonJS(cjs
)、AMD(amd
)、UMD(umd
)等,可以根据不同的需求选择合适的输出格式。
输出格式 | 描述 |
---|---|
es | ES 模块格式,适用于现代浏览器和 Node.js |
cjs | CommonJS 格式,适用于 Node.js |
amd | AMD 格式,适用于支持 AMD 规范的模块加载器 |
umd | 通用模块定义格式,兼容多种环境 |
由于 Rollup 对 ES 模块的良好支持和 Tree Shaking 功能,非常适合用于构建 JavaScript 库。下面是一个使用 Rollup 构建库的示例。
创建一个新的项目目录,并初始化 package.json
:
mkdir my-library
cd my-library
npm init -y
npm install rollup @rollup/plugin-node-resolve @rollup/plugin-commonjs --save-dev
创建 src
目录,并在其中创建 index.js
文件:
// src/index.js
export const greet = (name) => `Hello, ${name}!`;
创建 rollup.config.js
文件:
// rollup.config.js
import resolve from '@rollup/plugin-node-resolve';
import commonjs from '@rollup/plugin-commonjs';
export default {
input: 'src/index.js',
output: [
{
file: 'dist/my-library.esm.js',
format: 'es'
},
{
file: 'dist/my-library.cjs.js',
format: 'cjs'
}
],
plugins: [
resolve(),
commonjs()
]
};
在 package.json
中添加打包脚本:
{
"scripts": {
"build": "rollup -c"
}
}
然后运行 npm run build
即可完成打包。
虽然 Webpack 在前端项目打包中更为流行,但 Rollup 也可以用于前端项目的打包。特别是对于一些小型项目或者对代码体积要求较高的项目,Rollup 可以发挥其 Tree Shaking 的优势。
例如,对于一个简单的 HTML + JavaScript 项目,可以使用 Rollup 打包 JavaScript 文件,然后在 HTML 中引入打包后的文件。
Rollup 以其 ES 模块优先、简洁的配置、强大的插件系统和多样的输出格式等特点,在模块化开发和模块打包领域有着独特的优势。特别是在构建 JavaScript 库方面,Rollup 是一个非常不错的选择。当然,它也可以用于前端项目的打包,根据项目的具体需求和特点,合理选择打包工具,能够让我们的开发工作更加高效。
希望通过本文的介绍,你对 Rollup 有了更深入的了解,并能够在实际项目中应用 Rollup 进行模块化开发和模块打包。
前端 - Javascript
整章节共299节
快分享给你的小伙伴吧 ~