React Native新架构之iOS端初始化源码分析
2026年1月28日 21:41
React Native新架构之iOS端初始化源码分析 前言 注意,本文是基于React Native 0.83版本源码进行分析。有了前面几篇Android端分析文章打基础,再来理解iOS端就易如反掌
这是一个基于 Node.js 的图片格式转换工具,专门用于将各种图片格式(PNG、JPG、JPEG、WebP)批量转换为 WebP 格式,以优化图片加载性能和减少存储空间。
image-ConvertTo-webp/
├── dist-images/ # 输出目录(转换后的 WebP 图片)
│ └── logout.webp # 示例转换结果
├── static/ # 源图片目录
│ └── logout.png # 示例源图片
├── convert.js # 主要转换脚本
├── package-lock.json # 依赖版本锁定文件
└── package.json # 项目配置和依赖管理
1. 配置与初始化
// 配置
const sourceDir = './static'; // 源图片目录
const outputDir = './dist-images'; // 输出目录(可自定义)
// 确保输出目录存在
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
2. 递归转换函数
async function convertImages(currentDir) {
const files = fs.readdirSync(currentDir);
const relativeDir = path.relative(sourceDir, currentDir); // 当前相对路径
const outputSubDir = relativeDir ? path.join(outputDir, relativeDir) : outputDir;
// 确保当前层级的输出子目录存在
if (!fs.existsSync(outputSubDir)) {
fs.mkdirSync(outputSubDir, { recursive: true });
}
for (const file of files) {
const filePath = path.join(currentDir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
// 递归处理子目录
await convertImages(filePath);
} else if (file.match(/\.(png|jpe?g|webp)$/i)) {
// 构造输出文件路径(保持层级)
const outputFileName = path.basename(file, path.extname(file)) + '.webp';
const outputPath = path.join(outputSubDir, outputFileName);
// 执行转换
await sharp(filePath)
.webp({
quality: 100, // 有损压缩,质量 80
effort: 6, // 压缩强度
smartSubsample: true // 智能色度子采样(适合照片)
})
.toFile(outputPath);
console.log(`✅ ${path.relative(sourceDir, filePath)} → ${path.relative(outputDir, outputPath)}`);
}
}
}
3. 执行转换
// 开始转换
convertImages(sourceDir)
.then(() => console.log('🎉 所有图片转换完成,目录结构已保留!'))
.catch(err => {
console.error('❌ 转换失败:', err);
});
| 参数 | 值 | 说明 |
|---|---|---|
| quality | 100 | 转换质量,100为无损压缩 |
| effort | 6 | 压缩强度,值越高压缩效果越好但速度越慢 |
| smartSubsample | true | 启用智能色度子采样,适合照片类图片 |
安装依赖:
npm install
准备图片:将需要转换的图片放入 static 目录
执行转换:
node convert.js
查看结果:转换后的 WebP 图片会保存在 dist-images 目录中
这是一个轻量级但功能强大的图片格式转换工具,通过简单的配置和执行,即可批量将图片转换为 WebP 格式,为网站和应用提供更好的性能优化。项目结构清晰,代码简洁易懂,易于维护和扩展。
添加命令行参数支持:可以通过 commander 等库添加命令行参数,让用户可以通过命令行指定源目录、输出目录和转换参数,提高工具的灵活性。
增加并发处理:对于大量图片的情况,可以考虑使用并发处理来提高转换速度。
添加错误处理:对单个文件的转换失败进行更详细的错误处理,避免因为单个文件失败而影响整个转换过程。
添加进度显示:对于大量图片的情况,添加进度条显示,让用户更清楚转换的进度。
支持更多输出格式:除了 WebP 格式外,还可以支持其他现代图片格式,如 AVIF 等。
通过这些优化,可以进一步提高工具的实用性和用户体验。